我正在使用在 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 在这里似乎没用。
更新:同时我在这里找到了这个线程,它讨论了一个类似的问题,但我无法验证那里写的是什么:
- 命令uptime显示每 1/5/15 分钟的平均 CPU 利用率
- 这与 %us+%sy 之和的顶部输出的第一行接近。但这变化更大,也许是每 10 秒的平均值?
- 即使在top output上看更长的时间,%us+%sy的总和总是比所有%CPU的总和高几倍
谢谢阿奇姆