2009-08-26 6 views
2

私はwork_pileパターンを使用しているので、スレッドは常に実行されており、セマフォを待って、新しい関数ポインタ+データを待ち行列に入れて待っています。アップルのマーケティング担当者は、グランドセントラルディスパッチと呼ばれ、新しいスライスパンのことを促進しています。ファイングレインマルチスレッド - ワーカータスクはどれくらいの作業を行うべきですか?

私はちょうど短いタスクを2つの短いタスクに分割することが有用であるかどうかを調べる方法を知りたいだけです。新しいオブジェクトをキューに入れる価値があるかどうか判断できるルールはありますか?

+0

GCDで見つかったリンクは次のとおりです。http://episteme.arstechnica.com/eve/forums?a=dl&f=174096756&x_id=mtid39095 –

答えて

1

二つの可能な答え:

  • それは依存します。
  • ベンチマークです。

私は第2のものを好む。

とにかく、2つのタスクが常に順番に実行されている場合(つまり、順番に実行されている場合)、分割することはできないと思います。

+0

ベンチマークは簡単ではなく、実装した後にのみ行うことができます。そして私は分割を調べ始めるときにチェックリストを持っていたいと思います。スレッドのアクティブ化が平均してどれくらいのコストを要しているかわからなくても、マイクロセカンドではナノ秒かかりますか?私は、アルゴリズムの複数のステップをキューにして、セマフォーカウンタの減分とミューテックスがない場合、100サイクル+キャッシュミスと言うでしょうか? – Lothar

+0

私は、不可欠な要素はCPU /コアの数であり、どのようにタスクが割り当てられているかということです。理論では、使用可能なコアの数から抽象化することができますが、私はベンチマークだけがあなたの質問に正確に答えることができると確信しています。 – mouviciel

+0

@mouvicel:ベンチマークの限界は、それがあなたに特定の質問に対する答えを与えるだけであり、必ずしもわずかに異なる状況下で最高のパフォーマンスを調整する方法について多くの洞察を提供するとは限りません。これが、自動チューニングに使用できる理論的な洞察を得ることを好む理由です。 –

1

マルチタスクの制限は、あなたが持っているコアの数とアルゴリズムのどれだけが同時かということです。ロックを含むさまざまなタイプのオーバーヘッドは、並行処理の量を減らすことができ、マルチタスクの利点を低下させたり、逆にすることさえできます。そのため、独立した長期的な作業がある場合に最適です。オーバーヘッドがパフォーマンスの向上を呑み込んでいない限り、短いタスクであってもコア間で分割することが妥当だと言いました。

+0

作業パイルパターンの背後にある考え方は、使用可能なコアの数から抽象化できるということです。 – Lothar

+0

右のCPUバインドアクティビティでは、n + 1スレッドを入力キューから読み込むよう設定することができます.nはコアの数です。 I/Oに束縛されたものについては、より多くのものを望むでしょう。 –

+0

私はそれについてより多くの研究を行い、OSがプール内のスレッドの数を担当しているように思えます。私はそれが便利だと思うが、私はそれがどのように物事を調整することを決定するか分からない。 I/Oブロックを使用すると、n + 1ヒューリスティックはうまく動作しません。 –

1

簡単な答えは、リソース+ワークロード+ベンチマークについて考える必要があるということです。

  1. あなたがアイドル状態のスレッドを持っていますか:ここで

    は物事が打破できいくつかの方法がありますか?ワークロードが不安定になり、スレッドが完了するまでに時間がかかりすぎて、別のスレッドが再割り当てを待っている(つまり、スレッドより多くのスレッド)。

  2. 十分な仕事がありますか?全体的なタスクは非常に速く完了しているので、追加のスレッドについて考える価値はありませんか?マルチスレッドを増やすと、(時には)ある程度小さいが測定可能な量によってオーバーヘッドが増加することに注意してください。
  3. 利用可能なリソースがありますか?あなたに与えるスレッドがもうありますか? CPUサイクルがアイドル状態になっていますか?

つまり、入力する前に考える必要があると思います。まったく動作するコードをすでにお持ちの場合、それは銀行のお金のようです。そのコードの生産性を高めるためにあなたの時間を投資する価値があるのでしょうか、または投資収益率が低すぎる(または負の値になる)のでしょうか?

関連する問題