Bash 从/proc/stat计算CPU使用率

Bash 从/proc/stat计算CPU使用率,bash,Bash,当读取/proc/stat时,我得到以下返回值: 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

当读取
/proc/stat
时,我得到以下返回值:

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
system
idle
?还是我需要所有的值?或者不是全部,而是超过四个?我需要
iowait
irq
还是
softirq

cpu  20582190 643 1606363
而不是整条线

cpu  20582190 643 1606363 658948861 509691 24 112555 0 0 0
编辑:一些源还声明
iowait
已添加到
idle

在计算特定进程的CPU使用率时,方法是否有所不同?

说明了它随体系结构的不同而不同,并给出了两个示例,说明了它们的不同之处:

在Linux 2.6中,这一行包括三个附加列:

自Linux2.6.11以来,有第八列

自Linux2.6.24以来,有第九列

当“有些人说只使用…”时,他们可能没有考虑这些

关于不同cpu之间的计算是否不同:您将发现与“cpu”、“cpu0”、“cpu1”相关的行。。。在/proc/stat中,“cpu”字段是各个cpu对应字段的所有聚合(而不是平均值)。你可以用一个简单的awk单衬板自己检查一下

cpu 84282 747 20805 1615949 44349 0 308 0 0

cpu0 26754 343 9611 375347 27092 0 301 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


这取决于您对“CPU使用率”的理解。你显然知道所有的专栏是什么,所以我猜你已经阅读了手册页,也知道它们的意思。你有什么问题?我最初很困惑为什么有些人说在计算CPU利用率时只使用前四列(线程使用率的百分比为0-100%)。虽然根据我目前的理解,所有的栏目都应该使用,但我不知道是否有这样的情况,一个栏目已经添加到另一个栏目中。我听说
iowait
显然预先添加到了
idle
,但我不确定。