2012-03-29 18 views
1

セロリドキュメントセクションPerformance and Strategiesメッセージ引渡し対粒状のタスクは、複数の「ステップ」を有するタスクは、より効率的な並列化のためのサブタスクに分割しなければならないことを示唆しています。それから、(もちろん)メッセージオーバーヘッドが増えることになるので、サブタスクに分割することはオーバーヘッドに値するものではないかもしれないと言います。私の場合はセロリ - オーバーヘッド

、私はその後、私のサイトのREST APIにHTTP経由でアップロードし、サードパーティのAPIから小さな画像(X 115px 150ピクセル)を取得するの全体的なタスクを持っています。これを単一のタスクとして実装するか、イメージを取得して2つの別々のタスクにアップロードするステップを分割することができます。私が別々の仕事をすると、メッセージの一部としてイメージを2番目のタスクに渡さなければならないと思います。

私の質問は、この場合には良いはずです、そしてどのように私は確実に知るためにパフォーマンスを測定することができたアプローチ、ありますか?

答えて

0

あなたの仕事はI/Oに制約されているので、タスクを分割して並列に実行できる操作の数を増大させることができます。可能なブローカは数msのレイテンシで多くのメッセージ/秒を処理できるはずなので、メッセージパッシングのオーバーヘッドはごくわずかです。

あなたの場合、画像をアップロードするには、ダウンロードするより時間がかかるでしょう。別のタスクでは、ダウンロードジョブはアップロードが完了するのを待つ必要はありません(利用可能なワーカーがいる限り)。分離のもう1つの利点は、各キューを異なるキューに配置し、バックアップされたキューが明らかになるにつれて、より多くのワーカーを割り当てることができる点です。

私はベンチマークにこれをしようとした場合、私は2つの戦略のそれぞれについて、労働者の同じ番号を使用して実行時間を比較します。たとえば、2つの作業者を組み合わせたタスクと2つの作業者を分割し​​たものにします。次に、それぞれ4人の作業員を行います。私の傾向は、分離されたタスクがより速くなることを示すことです。特に労働者数が増加した場合