top命令的第三行显示CPU使用率超过100%

3

top screenshot

如上图所示,如果将第三行的所有值相加,它超过了100%,得出了100.1%:

%Cpu(s): 18.3 us, 21.9 sy, 0.0 ni, 59.6, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st

18.3 + 21.9 + 59.6 + 0.3 = 100.1
有人能解释top输出的第三行的含义吗?

大多数系统统计数据都是作为整数值收集的,而不是浮点值,并且除此之外,许多人们喜欢看到的值根本没有被收集,而是按需派生的 - 例如,CPU使用率被收集为大约“在特定状态下花费的时钟滴答数”,然后除以实际间隔来推导“状态下的CPU使用率...”。四舍五入和其他不准确性也会产生影响。也许这些是18.26、21.86、59.56、0.26的舍入值...它们的总和小于100.0... - twalberg
那么 top 命令中第三行的总和始终等于 100%,对吧? - Arunagiriswaran Ezhilan
它应该始终是“close”。但由于四舍五入和其他因素,不要期望它总是精确的。 - twalberg
2个回答

4

编辑

上述问题是关于top命令中第三行显示的净CPU消耗量。 第三行中%CPU消耗总和一定等于100%。对于计算单个元素(us、id、wa、sys等),进行四舍五入。 在这种特殊情况下,由于四舍五入的原因,它达到了100.1%。

以下信息是有关各个进程% CPU消耗列的信息。

这取决于您系统上拥有的核心数。每个核心会给您一个100%的值。 因此,如果您有4个核心,则% CPU的总和可以达到400%。

“核心”实际上指的是什么?

grep processor /proc/cpuinfo | wc -l

这将显示您拥有的CPU数量。 从逻辑角度来看(例如Intel Core i5-3570,这也可以从cpuinfo信息中理解)

[root@localhost ~] egrep "processor|core id|physical id" /proc/cpuinfo
processor       : 0
physical id     : 0
core id         : 0
processor       : 1
physical id     : 0
core id         : 1
processor       : 2
physical id     : 0
core id         : 2
processor       : 3
physical id     : 0
core id         : 3

这里有:

物理处理器 = 1

每个物理处理器上的核心数 = 4

每个物理核心的虚拟核心数目 = 无

因此,总CPU数 = 4

如果有虚拟核心(如Xeon处理器上的虚拟核心),则您可以获得更多的处理器。


我系统中有4个内核,第3行包含所有4个内核的值,最高可达100%。我想这是这样的。 - Arunagiriswaran Ezhilan
让我解释一下,top命令的第三行将所有4个核心的值相加并四舍五入为100%,我说得对吗? - Arunagiriswaran Ezhilan
是的,你说得对。第三行将有一个累积总和为100%。我误解了问题,认为它涉及单个进程的%CPU消耗。(抱歉! :-( ) - Anugraha Sinha
关于本答案的后半部分,解释为什么单个进程可以超过100%的CPU使用率,请参见答案。 - Matthias Braun

1

第三行显示服务器的CPU利用率状态,您可以在此处找到有多少CPU空闲以及系统正在利用多少CPU:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接