2017-04-10 6 views

答えて

0

固定量の作業をしているプログラムを実行していて、その作業が1つのコアだけのプロセッサで実行されているCPU境界であると仮定しています。

アプリケーションがマルチスレッドで悪用される並列性を持っている場合、複数のスレッドをインテリジェントに使用すると、CPU使用率が増加し、実行時間が短縮されます。たとえば、タスクの並列領域がアイドルより10%高い稼働率でA秒で実行され、5つのスレッドをサポートできる場合、実行時間はA/5秒になり、CPU使用率は5倍50%。私はCPUに束縛されたタスクを想定しています。ブロッキングタスクの場合、CPU使用率に影響を与えずに実行時間が短縮されることがあります。

タスクが並列性を利用できない場合、不必要なスレッドオーバーヘッドのためにCPU使用率がわずかに上昇します。

アプリケーションが実行される前にCPUにかかる負荷など、CPU使用率に影響を与える可能性のあるその他の問題があります。それが既に高い場合、マルチスレッドは多くのスラッシングを引き起こす可能性があります。さらに、並列チャンクが短すぎると、スレッドの作成と破棄のオーバーヘッドによって方程式が変わります。

この場合も、並列化できる同じタスクAを指定すると、それをシリアル化すると、ランタイムの合計が増加し、CPU使用率が低下します。

上記の場合、実行された作業の合計は一定であることに注意してください。

関連する問題