2013-02-21 90 views
4

當讀取/proc/stat,我得到這些返回值:計算CPU使用率統計

cpu 20582190 643 1606363 658948861 509691 24 112555 0 0 0      
cpu0 3408982 106 264219 81480207 19354 0 35 0 0 0        
cpu1 3395441 116 265930 81509149 11129 0 30 0 0 0        
cpu2 3411003 197 214515 81133228 418090 0 1911 0 0 0        
cpu3 3478358 168 257604 81417703 30421 0 29 0 0 0        
cpu4 1840706 20 155376 83328751 1564 0 7 0 0 0         
cpu5 1416488 15 171101 83410586 1645 13 108729 0 0 0        
cpu6 1773002 7 133686 83346305 25666 10 1803 0 0 0        
cpu7 1858207 10 143928 83322929 1819 0 8 0 0 0 

一些資料僅讀取前四個值來計算CPU使用率,而有消息說要讀所有價值。

我是否只讀取前四個值來計算CPU利用率;值爲user,nice,systemidle?還是我需要所有的價值?或者不是全部,但超過四個?我需要iowait,irqsoftirq

cpu 20582190 643 1606363 

對比整條線。

cpu 20582190 643 1606363 658948861 509691 24 112555 0 0 0 

編輯:有些來源還指出iowait加入到idle

當計算特定進程的CPU使用率時,該方法是否有所不同?

+0

這取決於你理解「CPU使用率」的含義。你顯然知道所有的列是什麼,所以我猜你已經閱讀了手冊頁,並且知道他們的意思。你有什麼麻煩? – Cairnarvon 2013-02-24 02:13:38

+0

我最初困惑的是爲什麼有人說在計算CPU利用率時只使用前四列(線程使用率0-100%)。雖然根據我目前的理解,應該使用所有列,但是我不知道是否有這樣的情況,例如一列已經添加到另一列中。我聽說'iowait'顯然是預先添加到'閒置',但我不確定。 – hexacyanide 2013-02-24 02:30:36

回答

2

man page說,它與架構變化,並給出了幾個例子說明他們是如何不同:

Linux 2.6中此行包括其他三列:...

由於Linux的2.6.11,有一個第八列,...

由於Linux 2.6.24,還有一個第九列,...

當「有人說只使用...」時,他們可能沒有考慮到這些。

關於CPU之間的計算是否不同:可以在/ proc/stat中找到與「cpu」,「cpu0」,「cpu1」...有關的行。 「cpu」字段是單個CPU的相應字段的所有聚合(不是平均值)。你可以用一個簡單的awk來檢查你自己。

CPU 84282 747 20805 1615949 44349 0 308 0 0 0

CPU0 26754 343 9611 375347 27092 0 301 0 0 0

CPU1 12707 56 2581 422198 5036 0 1 0 0 0

CPU2 33356 173 6160 394561 7508 0 4 0 0 0

CPU3 11464 174 2452 423841 4712 0 1 0 0 0