Topが間違ったCPU使用率を報告するのはなぜですか?

Topが間違ったCPU使用率を報告するのはなぜですか?

Intel(R) Xeon(R) CPU E552016の目に見える論理コア(HTの場合は8つ)のマシンがあります。 CPU 時間を消費するジョブ (シングルスレッド) を実行すると、top はプロセスの CPU 使用量を 100% 正確に報告しますが、総使用量は約 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つ)でなければなりません。

  • 仮想マシンと間違っていますか?
  • 正しい値をどのように計算できますか?

答え1

topCPUに基づいて、すべてのコアにわたって合計された使用量が要約に報告されます。一方、プロセスのリストを見ると、親レポートは参照されている1つのコア(実際またはHT)の割合を報告します。 4つのCPUコアを占める4つのスレッドでプロセスを実行すると、CPUを400%使用することがわかります。

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

答え2

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

関連情報