2013-02-21 91 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