在 freeBSD 机器上,当我启动进程 x 后执行 TOP 时:
CPU 状态:34.4%用户,0.0%良好,64.8%系统,0.8%中断,0.0%空闲
这里,空闲率为0%。
但是 CPU 使用率最高的进程是 x,它只使用了 3% 左右。而且没有其他进程占用太多。我也用 PS 验证了这一点。
我如何理解这种行为?这是怎么回事?
0% 空闲意味着所有资源都被占用了?我无能为力了?而且,top 下显示的所有进程的 CPU 使用率总和应该是 100% 吗?
答案1
看看这个文章摘自《Linux Journal》三月刊。
它解释了找出导致系统变慢的确切原因的多种不同方法。它向您展示了如何检查 CPU 使用率、RAM/交换问题和 I/O。
答案2
很明显,用户 + 系统 + +中断 = 100%,所以这是正确的。不仅仅是正在运行的“用户空间”进程利用率。
系统可能正在执行的任务是磁盘交换、I/O 等待等。检查其他日志(可能是磁盘出现故障)、调查内存利用率(可能是交换)等。
您能分享完整的输出吗,包括负载、内存利用率等?这是在哪个平台上(这样我们可以建议一些其他常用工具来了解正在发生的事情)?
答案3
假设它不是 I/O 等待(为什么 I/O 等待不在 top 列表中?),请检查一些后续 ps 或 atop 快照,看看是否有进程正在分叉并死亡或循环重生。每个进程不会占用太多 CPU,但所有这些分叉都会使系统 CPU 占用率升高。
答案4
我曾见过这种行为,硬盘必须不断地寻道,因此总体吞吐量受到很大影响。
显示什么systat -vmstat
?磁盘是否繁忙?