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)
?
感谢致敬!
您的 CPU % 和负载平均值不一致的原因是因为它们是两个完全不同的值。CPU % 就是一个进程正在使用的 CPU 的百分比。平均负载是运行队列中进程在 1、5 和 15 分钟内的加权平均值。
如果您关心正在使用多少 CPU(您是否充分利用了您的 CPU),那么 top 输出的计数会很好地工作。您可以偶尔运行它并记录该值(或使用sar
,它会为您执行此操作)。
具有高平均负载意味着您在运行队列中有很多进程 - 许多进程已准备就绪并等待运行。高负载并不自动意味着大量 CPU 使用。
维基百科有一篇很好的文章描述了平均负载,以及 CPU 负载和 CPU 使用率之间的差异:http : //en.wikipedia.org/wiki/Load_Average
归档时间: |
|
查看次数: |
10180 次 |
最近记录: |