为什么 top 报告不正确的 CPU 使用率?

为什么 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 个)。

  • 是不是因为它是虚拟机所以不正确?
  • 我怎样才能计算出正确的值?

答案1

top摘要中报告了相对于 CPU 的使用情况以及所有内核的总和。另一方面,当您查看进程列表时,顶部报告引用一个核心(真实或 HT)的百分比。尝试运行一个具有 4 个线程的进程,该进程可以占用 4 个 CPU 核心,您会发现它使用 400% CPU。

我不知道为什么,但这就是top我见过的所有 Linux 系统的工作原理。

答案2

大多数情况top下,默认情况下在“Irix”模式下工作,正如您所描述的那样。如果您想获取总 CPU 能力的百分比(即,当可能的 CPU 使用率总和达到 100%,而不是 cpu_cores_number * 100% 时),只需按 切换“Irix”模式I

相关内容