web-dev-qa-db-ja.com

topが誤ったCPU使用率を報告するのはなぜですか?

私はIntel(R) Xeon(R) CPU E5520を備えたマシンを16の論理コア(8はHT)として認識しています。 CPU時間を消費するために何かを実行する場合(シングルスレッド)、topはプロセスの100%のCPU使用率を正しく報告しますが、合計使用率は約3〜4%です。

Cpu(s):  3.6%us,  0.0%sy,  0.0%ni, 96.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.1%st

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1567 www       20   0 65632   84    4 R  100  0.0   0:05.96 burnMMX

確かに、報告された使用率は〜6.25%(16コアの1)になるはずです。

  • それは仮想マシンなので間違っていますか?
  • 正しい値を計算するにはどうすればよいですか?
10
Yotaware

サマリーのtopは、すべてのコアを合計したCPUに対する使用状況をレポートします。一方、プロセスのリストを見ると、上位のレポートは1つのコア(リアルまたはHT)を基準とした割合を報告しています。 4つのCPUコアを消費する可能性がある4つのスレッドでプロセスを実行してみてください。CPUが400%使用されていることがわかります。

理由はわかりませんが、これが私が見たすべてのLinuxシステムでtopが機能する方法です。

12
Patkos Csaba

ほとんどの場合、topは、説明したとおり、デフォルトで「Irix」モードで動作します。合計CPU機能のパーセンテージを取得する場合(つまり、可能なCPU使用率の合計が100%になり、cpu_cores_number * 100%ではない場合)、Iを押して「Irix」モードを切り替えます。 。

5
moon.musick