bash – 从/ proc / stat计算CPU使用率

当读取/ 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利用率;用户,好,系统和空闲的价值?或者我需要所有的价值观?或者不是全部,但超过四个?我需要iowait,irq还是softirq?

cpu  20582190 643 1606363

与整条生产线相对应.

cpu  20582190 643 1606363 658948861 509691 24 112555 0 0 0

编辑:一些消息来源还声称iowait被添加到空闲状态.

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

最佳答案
man page声明它随体系结构而变化,并且还提供了一些描述它们如何不同的示例:

In Linux 2.6 this line includes three additional columns: …

Since Linux 2.6.11, there is an eighth column, …

Since Linux 2.6.24, there is a ninth column, …

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

关于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

点赞