各オペレータ(プロデューサおよびコンシューマ)のインスタンスを1つ使用して、使用可能なAMP数かジョブに割り当てるセッション数に等しいMaxSessionsから始めます。
- ジョブを実行し、ジョブの完了にかかった時間を記録します。
- Consumerオペレータのインスタンス数を増やします。 複数の変数を変更すると比較が難しくなるので、セッション数は変更しません。
- ジョブを再び実行し、ジョブ出力を調べます。
- ジョブの実行は速くなったか?
- 2つ目のコンシューマ インスタンスが使用されたか?
- 1つ目と2つ目のインスタンスで処理された行数の比率は?(例えば、同じ比率だったのか、または、1つは80%でもう1つは20%の作業しかしなかったのか?)作業が均等に分散されていた場合、インスタンスをもう1つ増やすことによって、パフォーマンスが向上する可能性があります。 2つ目のインスタンスの作業量が少ない場合、3つ目のインスタンスを追加してもパフォーマンスの向上はあまり期待できず、資源が無駄になる可能性の方が高くなります。
作業が均等に分散されていない場合は、インスタンスを増やすことでパフォーマンスの向上を期待できます。 2つ目のインスタンスの作業量が少なければ、3つ目のインスタンスが使用されることはないでしょう。
- 必要な数に達するまで、Consumerオペレータのインスタンス数を増やすプロセスを繰り返します。
次は、プロデューサです。 各プロデューサ インスタンスの数を別々に増やして、データ ストリームにデータが高速に送り出されているかどうかを確認します。
- 各Producerオペレータのインスタンス数を別々に増やします。 ここでも、セッション数は変更しません。
- ジョブを再び実行し、ジョブ出力を比較します。
- ジョブの実行は速くなったか? 高速化が最終的なゴールです!
- 使用されたConsumerオペレータ インスタンスの数に変化はあったか?プロデューサ インスタンス間では作業が常に均等に分散されるため、変更がジョブに影響したかどうかを確認するには、コンシューマ インスタンスへの影響に目を向けます。
- Consumerオペレータ インスタンスの分散に変化はあったか?必要な数のインスタンスを使用して、ロードされる行数をインスタンス間で分散します。インスタンスのバランス化によってジョブ全体のパフォーマンスを犠牲にしないよう注意してください。 行がすべてのインスタンス間で均等に読み取られたからといって、負荷の分散がジョブ全体の実行速度を向上させるとは限りません。
- 結果に応じて、プロデューサまたはConsumerオペレータのインスタンス数を増やします。
適切なインスタンス数がわかったら、MaxSessionsの値を変更して効果があるかどうかを確認できます。
- MaxSessionsの値を下げます。 MaxSessionsは、オペレータのインスタンス数の倍数にして、インスタンス間で均等に分散されるようにするのが有効です。
- ジョブを再び実行し、出力を比較します。
- ジョブの実行は速くなったか?
- 使用されたConsumerオペレータ インスタンスの数に変化はあったか?
- Consumerオペレータ インスタンスのデータの分散に変化はあったか?
- 結果に応じて、元のMaxSessionsを使用するか、実験を続けるかを決めます。 使用しているインスタンス数を再び変えてみることもできます。