2012-08-15 134 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無關,但與內核會計。這種不準確性特別是在無滴答的系統和/或節制狀態上。