顶部的平均负载和总 CPU 百分比

Tim*_*Tim 2 linux cpu uptime top

我认为正常运行时间的平均负载和顶部(#9 列)中所有正在运行的进程的 %CPU 总和应该一致。但这似乎不是真的。这是我的小实验:

在一台服务器上:

$ top -b -n 1| awk '{ totuse = totuse + $9 } END { print totuse/100 }'; uptime

6.29

22:00:59 up 28 days,  7:03,  9 users,  load average: 7.03, 5.81, 4.51`
Run Code Online (Sandbox Code Playgroud)

在另一台服务器上:

$ top -b -n 1| awk '{ totuse = totuse + $9 } END { print totuse/100 }'; uptime

4.93

22:01:37 up 29 days,  8:27, 17 users,  load average: 18.83, 16.01, 13.86`
Run Code Online (Sandbox Code Playgroud)

那么为什么两者之间会有如此大的差异呢?哪一个更真实地反映了 CPU 的使用情况?

如果我尝试评估我正在运行的进程使用了​​多少 CPU 使用率,这是一个好方法:

top -b -n 1 | grep "tim"| awk '{ totuse = totuse + $9 } END { print totuse/100 }'
Run Code Online (Sandbox Code Playgroud)

?

感谢致敬!

bau*_*art 9

您的 CPU % 和负载平均值不一致的原因是因为它们是两个完全不同的值。CPU % 就是一个进程正在使用的 CPU 的百分比。平均负载是运行队列中进程在 1、5 和 15 分钟内的加权平均值。

如果您关心正在使用多少 CPU(您是否充分利用了您的 CPU),那么 top 输出的计数会很好地工作。您可以偶尔运行它并记录该值(或使用sar,它会为您执行此操作)。

具有高平均负载意味着您​​在运行队列中有很多进程 - 许多进程已准备就绪并等待运行。高负载并不自动意味着大量 CPU 使用。

维基百科有一篇很好的文章描述了平均负载,以及 CPU 负载和 CPU 使用率之间的差异:http : //en.wikipedia.org/wiki/Load_Average