为什么cpu加载不会超过百分之几?

use*_*448 3 bash cpu cpu-load

我正在运行这个命令

grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage "%"}'
Run Code Online (Sandbox Code Playgroud)

然而它只输出0.99xxxx%

如果我进行apt-get升级或任何过程,我认为它会超过1%.即使运行压力-c 1也不会改变它.

有没有办法准确记录CPU使用情况?服务器有1个vCPU.

需要每5秒钟记录一次这个日志.

while sleep 5; do "code" >> logfile; done
Run Code Online (Sandbox Code Playgroud)

jll*_*gre 5

为什么cpu加载不会超过百分之几?

因为/proc/stat自系统上次引导以来返回聚合的CPU负载统计信息,而不是实时的.如果在重新启动后立即运行脚本,只要CPU负载本身发生更改,报告的负载可能会发生显着变化.但是,脚本运行的时间越长,较小的负载变化将影响显示的值,一段时间后,该值将基本保持不变.

如果要计算负载/proc/stat而不使用已经可用的工具,则需要计算两个连续样本的差异,例如:

while sleep 5; do grep -w cpu /proc/stat ; done | \
    awk '{
        print (o2+o4-$2-$4)*100/(o2+o4+o5-$2-$4-$5) "%"
        o2=$2;o4=$4;o5=$5}'
Run Code Online (Sandbox Code Playgroud)

否则,更简单但不太准确的方法可能是:

vmstat -n 5 | \
    awk '{used=$13+$14;total=used+$15
          if(total>0) print used*100/total "%"}'
Run Code Online (Sandbox Code Playgroud)