直接运行 top 通过 load average 和 %cpu(s) 综合判断系统负载:load average 反映整体压力(含 i/o 等待进程),需对比 cpu 核数;%cpu(s) 中 id 高表空闲,wa 高且负载高提示 i/o 瓶颈,us+sy 接近 100% 才是 cpu 计算瓶颈。

直接运行 top 就能实时看到 CPU 负载情况,关键不是看“%CPU”那一列,而是顶部的 load average 和第三行的 %Cpu(s) 组合判断——前者反映系统整体压力,后者说明 CPU 实际忙闲程度。
看懂顶部三行核心指标
启动 top 后,第一行显示类似:top - 19:53:20 up 3 days, 4:12, 2 users, load average: 2.45, 1.89, 1.62
- load average 后三个数:分别代表过去 1 分钟、5 分钟、15 分钟的平均负载值。它统计的是“正在运行 + 等待运行”的进程总数(含等待 I/O 的不可中断进程)。
- 对比 CPU 总核数判断是否过载:用
grep -c ^processor /proc/cpuinfo或nproc查出核心数。比如 4 核机器,负载长期高于 4 就说明有排队;若负载是 8,意味着平均有 4 个进程在等资源。 - 第三行
%Cpu(s): 5.2 us, 2.1 sy, 0.0 ni, 91.5 id, 0.8 wa, ...中:
— id(idle) 高说明 CPU 空闲多;
— wa(iowait) 高(比如 >20%)且负载也高,大概率是磁盘或网络 I/O 卡住,进程在等设备响应;
— us + sy 接近 100% 且 id 很低,才是真正的 CPU 计算瓶颈。
快速定位高负载来源
按下 P 键(大写)按 CPU 使用率倒序排列,重点关注 %CPU 列数值高的进程。
- 观察 S 列状态:如果大量进程显示
D(不可中断睡眠),说明它们卡在 I/O 上,此时即使 %CPU 很低,负载也会飙升。 - 用
ps -eo pid,comm,wchan:20,state,pcpu | awk '$4=="D"' | head -10可快速列出所有 D 状态进程及其等待的内核函数。 - 按 1 键可展开查看每个 CPU 核心的使用率,确认是否单核打满而其他核空闲(可能由绑核或线程调度不均导致)。
结合其他命令交叉验证
top 是入口,但单靠它容易误判。建议搭配以下命令:
-
uptime:只看负载,比 top 更简洁,适合脚本或快速扫一眼。 -
vmstat 1:关注 r(就绪队列长度)和 b(阻塞进程数),r 值持续大于 CPU 核数,说明任务排队严重。 -
iostat -x 1:当 wa 高时,查 %util 和 await,确认是不是某块磁盘响应慢或饱和。 -
pidstat -u 1:按秒输出各进程 CPU 使用明细,比 top 更稳定,适合抓取瞬时峰值。
注意负载与利用率的本质区别
一个常见误区是把“负载高=CPU 忙”。其实:
- 负载高 + %CPU 低 → 多是 I/O 等待(如数据库慢查询、NFS 挂载卡顿、磁盘坏道);
- 负载正常 + %CPU 高 → 真实计算密集型任务(如编译、视频转码、未优化的循环);
- 负载和 %CPU 都低但响应慢 → 可能是内存不足触发频繁 swap,或网络延迟、锁竞争等问题,需进一步排查。











