我正在诊断一个高 CPU 使用率事件,我发现来自 的数字之间存在一个奇怪的差异ps/vmstat
,显示几乎为 0%,sar/top
而 显示几乎为 100%(用户 + 系统):
sar 1 5
Linux 2.6.9-67.ELsmp (uxdfl712) 07/25/2020
01:48:31 PM CPU %user %nice %system %iowait %idle
01:48:32 PM all 43.83 0.00 56.17 0.00 0.00
01:48:33 PM all 42.68 0.00 57.32 0.00 0.00
01:48:34 PM all 42.57 0.00 57.43 0.00 0.00
01:48:35 PM all 43.18 0.00 56.82 0.00 0.00
Average: all 43.14 0.00 56.86 0.00 0.00
vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
32 0 0 10493612 233320 4485160 0 0 0 14 0 1 0 0 100 0
ps -e hao %cpu | awk '{ sum += $1 } END { print sum }'
0.2
top -bn 1 |
sed '1,/PID USER PR NI %CPU/d' |
awk '{ sum += $5 } END { print sum }'
398
我在 StackExchange 和其他地方进行了很多搜索,但我只能找到有关虚拟化内容(这是一台物理机器)和 CPU 负载的参考资料,这不是我的问题。我也检查了/proc/<PID>/stat
,但没有发现任何提示。
为什么这些命令显示不同的数字?他们实际上是在查询不同的东西吗?或者可执行文件可能太旧和错误(请参阅下面的服务器数据 - 我确实对它的过时程度感到恐惧)。
谢谢!
uname -r
2.6.9-67.ELsmp
cat /etc/redhat-release
Red Hat Enterprise Linux ES release 4 (Nahant Update 6)
yum provides `which sar` | grep installed
sysstat.i386 5.0.5-16.rhel4 installed
yum provides `which vmstat` | grep installed
procps.i386 3.2.3-8.9 installed
yum provides `which ps`
<Too many providers>
ps -V
procps version 3.2.3
yum provides `which top` | grep installed
procps.i386 3.2.3-8.9 installed
grep -c processor /proc/cpuinfo
4