2012-08-15 754 views
2

每当我尝试从topmpstat这些命令(特别是collectd服务)中加总CPU利用率百分比时,我无法达到确切的100%CPU利用率。Linux CPU百分比总计不等于100%

例如top结果从亚马逊EC2测试服务器:

Cpu(s): 13.6%us, 31.6%sy, 0.0%ni, 53.2%id, 0.0%wa, 0.0%hi, 0.0%si, 1.7%st 

不管我怎么加起来的百分比,我从来没有完全得到100%的CPU,当然不会以任何合理的方式。大多数情况下,这似乎是四舍五入错误; 100.1%或99.9%,但有时我最终会超过110%。这通常在steal相对较高时发生,例如, collectd的一种情况报告了〜21.44%的偷窃和~88%的闲置,只是这两个已经超过了100%。我知道ni(不错)也计算在us(用户),所以我不应该添加它,但仍然无法解决。

有谁知道如何将这些添加到100%或如何解释collectd有时会报告的特殊情况?

+0

'top'不能准确地报告CPU利用率,因为CPU利用率有多高,这表明运行所有进程需要多少CPU。你可以有超过100%。在此处查看主题:http://superuser.com/questions/174660/why-is-the-cpu-usage-reported-by-top-in-linux-over-100和http://serverfault.com/questions/ 127059/using-top-4-processes-have-100-cpu-how – birryree 2012-08-15 21:18:02

+0

@birryree你是对的。如果你有两个内核,'top'中的总CPU%可能会达到200%。我忘了提及这个测试的VPS,它只有一个核心。然而,在'collectd'中,统计数据会被分割出来。 – Martijn 2012-08-15 21:41:28

回答

4

collectd(和tophtopvmstat或任何其它这样的实用程序)在间隔的平均报告,和由内核的性质(从其中这些工具查询它们的统计量)一般不使用浮点数学和不一定试图要详尽地说明一切,不能100%准确。有时它会加起来小于100%,有时甚至更多。它并不打算用于审计,只是一般指示时间的花费。

1

我确认这与collectd无关,但与内核会计。这种不准确性特别是在无滴答的系统和/或节制状态上。