我正在使用一款在Debian下运行的单核小型ARM处理器,并且无法理解top命令输出的CPU利用率,如下所示:
top - 15:31:54 up 30 days, 23:00, 2 users, load average: 0.90, 0.89, 0.87
Tasks: 44 total, 1 running, 43 sleeping, 0 stopped, 0 zombie
Cpu(s): 65.0%us, 20.3%sy, 0.0%ni, 14.5%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 61540k total, 40056k used, 21484k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 22260k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26028 root 20 0 2536 1124 912 R 1.9 1.8 0:00.30 top
31231 root 19 -1 45260 964 556 S 1.9 1.6 1206:15 owserver
3 root 15 -5 0 0 0 S 0.3 0.0 0:08.68 ksoftirqd/0
694 root 20 0 28640 840 412 S 0.3 1.4 468:26.74 rsyslogd
列%CPU在所有进程中非常低,在本例中,它们加起来只有4.4%(下面的所有其他进程都为0%)但是第3行中的总CPU显示为65%us和20%sy,说明用户和系统均具有非常高的值,而且顺便说一句,这就是系统感觉非常缓慢的原因:-(系统几乎总处于这种状态:所有进程的CPU都很低,但用户和系统CPU却很高。有人能解释为什么top工具输出中存在如此高的不一致性吗?我可以使用哪个工具更好地找出导致高用户和系统CPU利用率的原因-top似乎在这里毫无用处。
更新:与此同时,我已经发现了这个主题here,它讨论了一个类似的问题,但我无法验证那里所写的内容:
- 命令uptime显示每1/5/15分钟的平均CPU利用率。
- 这与top的第一行输出的%us+%sy之和非常接近。但是这个值变化很大,也许是每10秒的平均值?
- 即使在查看top输出的更长时间时,%us+%sy之和始终比所有%CPU的总和高几倍。
谢谢 Achim