web-dev-qa-db-ja.com

システムアイドルプロセスのCPU時間がウォールクロックよりも*速く*増加するのはなぜですか?

私のコンピューターは30分間稼働していますが、タスクマネージャーは1:30プラスでシステムアイドルプロセスCPU時間を示しています。毎秒、さらに3秒、場合によっては4秒進みます。

マシンも実行されていますが、現時点では非常に低速です(通常はそうではありませんが)。

これは、最新のWin 7x64です。

システムアイドルプロセスがリアルタイムよりも速いのはなぜですか?

3
Gaia

タスクスケジューラがすべてのコア間でタスクのバランスを均等に(または少なくとも分散して)行うと仮定すると、使用済みCPU時間を計算できます。

CPU Time = Application Time * Number of Cores * Average CPU Utilization

システムアイドルプロセスは、CPUによって実行される作業がない場合のタスクスケジューラの単なるラッパーであるため、システムで他に何も実行されていない場合、通常、これは非常に高い使用率になります。 4コアシステムがあり、アイドルプロセスがCPUの95%を占めると仮定すると、毎秒、アイドルタイマーのCPU時間が次のように増加すると予想されます。

CPU Time = (1 second) * (4 cores) * (0.95) = 3.8 seconds

より優れたプロセッサを入手し、オペレーティングシステムをより最適化すると、これは理論的には maxになることに注意してください。 100%で出力されます(たとえば、アイドル状態では、CPUはその機能と比較して文字通り動作しません)。この場合、アイドルプロセスのCPU時間は、コア数を掛けたリアルタイムで単純に増加すると予想されます。


シングルスレッドアプリケーションが4コアマシンで常に実行されている場合、最大プロセッサ使用率は25%にすぎないため、この式はシングルスレッドアプリケーションにも適用されることに注意してください。したがって、そのシングルスレッドアプリケーションのCPU時間は、ほぼリアルタイムと一致する必要があります。

CPU Time = (1 second) * (4 cores) * (0.25) = 1 second
4
Breakthrough

タスクマネージャは、リアルタイムではなく、CPU時間を表示します。

CPU時間は、anyの使用可能なCPUで特定のプロセスに割り当てられた時間です。したがって、クアッドコアシステムがあり、1つのコアでのみプロセスを実行する場合、アイドルプロセスは他の3つのコアで残りの時間を使用します。

したがって、30分の稼働時間中に1時間30分のCPU時間使用量が得られます。

6
Der Hochstapler