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
。