2017-04-10 53 views

回答

0

我假設你正在執行一個正在執行固定工作量的程序,並且該工作是在僅有一個內核的處理器上執行的CPU綁定。

如果您的應用程序有一些可以被多線程利用的並行性,那麼智能地使用多個線程將會增加CPU利用率,從而減少執行時間。例如,如果任務的並行區域在一秒鐘內執行,利用率高於空閒10%,並且它可以支持5個線程,那麼執行時間將變爲A/5秒,並且CPU利用率增加5倍,或者50%。我假設一個CPU綁定任務。對於阻塞任務,您的執行時間可能會減少而不會影響CPU利用率。

如果您的任務無法利用並行性,那麼由於不必要的線程開銷,CPU利用率會有一些名義上的增加。

還有其他可能影響CPU利用率的問題,例如執行應用程序之前CPU上的負載是多少。如果它已經很高,那麼多線程可能會導致很多顛簸。另外,如果你的並行塊太短,那麼線程創建和銷燬開銷會改變方程。

同樣,考慮到可以並行化的相同任務A,將其序列化將增加總運行時間並降低CPU利用率。

請注意,在上述情況下,完成的總工作量是恆定的。