各オペレータ(プロデューサおよびコンシューマ)のインスタンスを4つ使用して、使用可能なAMP数かジョブに割り当てるセッション数に等しいMaxSessionsから始めます。
- ジョブを実行し、出力を調べます。
- ジョブの完了にかかった時間は?
- Consumerオペレータのインスタンスはいくつ使用されたか?
- 各 Consumerオペレータ インスタンスで処理された行数は?リソースの無駄なく、バランス化をはかることが目的です。
- 結果に応じて調整を行ないます。
- ジョブが Consumerオペレータのインスタンスをすべて使用していない場合:
インスタンスの数を減らして、未使用のインスタンスをなくします。
プロデューサ インスタンスの数を1つ減らします。 極端な変更は避けてください。極端な変更を行なうと、最適数の判断が難しくなります。
- ジョブが Consumerオペレータのインスタンスをすべて使用しており、作業負荷が分散している場合は、 Consumerオペレータのインスタンス数を増やしてみます。
- ジョブが Consumerオペレータのインスタンスをすべて使用しているにもかかわらず、作業負荷が分散していない場合は、Producerオペレータのインスタンス数を増やしてみます。
- ジョブが Consumerオペレータのインスタンスをすべて使用していない場合:
- ジョブを再び実行し、出力を比較します。
- ジョブの実行は速くなったか? 高速化が最終的なゴールです!
- 使用された Consumerオペレータ インスタンスの数に変化はあったか?
- Consumerオペレータ インスタンスのデータの分散に変化はあったか?
- プロデューサおよびコンシューマのインスタンス数を最適化するために処理を繰り返します。
最適なインスタンス数がわかったら、MaxSessionsの値を変更して効果があるかどうかを確認できます。
- MaxSessionsの値を下げます。 MaxSessionsは、オペレータのインスタンス数の倍数にして、インスタンス間で均等に分散されるようにするのが有効です。
- ジョブを再び実行し、出力を比較します。
- ジョブの実行は速くなったか?
- 使用された Consumerオペレータ インスタンスの数に変化はあったか?
- Consumerオペレータ インスタンスのデータの分散に変化はあったか?
- 結果に応じて、元のMaxSessionsを使用するか、実験を続けるかを決めます。 使用しているインスタンス数を再び変えてみることもできます。