阅读时/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
Run Code Online (Sandbox Code Playgroud)
一些消息来源表示仅读取前四个值来计算 CPU 使用率,而另一些消息来源则表示读取所有值。
我是否只读取前四个值来计算 CPU 利用率?值user、nice、system和idle? 或者我需要所有的值吗?或者不是全部,但超过四个?我需要iowait, irq, 或softirq?
cpu 20582190 643 1606363
Run Code Online (Sandbox Code Playgroud)
与整条线相对。
cpu 20582190 643 1606363 658948861 509691 24 112555 0 0 0
Run Code Online (Sandbox Code Playgroud)
编辑:一些来源还指出iowait已添加到idle.
计算特定进程的CPU使用率时,方法有什么不同吗?
手册页指出它随体系结构的不同而变化,并且还给出了几个示例来描述它们的不同之处:
在 Linux 2.6 中,这一行包括三个附加列:...
从 Linux 2.6.11 开始,有第八个专栏,...
从 Linux 2.6.24 开始,有第九个专栏,...
当“有些人说只使用......”时,他们可能没有考虑到这些。
关于不同 CPU 的计算是否不同:您将在 /proc/stat 中找到与“cpu”、“cpu0”、“cpu1”、...相关的行。“cpu”字段是各个 CPU 的相应字段的所有聚合(而不是平均值)。您可以使用简单的 awk 单行语句亲自检查这一点。
中央处理器 84282 747 20805 1615949 44349 0 308 0 0 0
中央处理器0 26754 343 9611 375347 27092 0 301 0 0 0
中央处理器1 12707 56 2581 422198 5036 0 1 0 0 0
中央处理器2 33356 173 6160 394561 7508 0 4 0 0 0
中央处理器3 11464 174 2452 423841 4712 0 1 0 0 0