在 CentOS(或其他 Linux 系统)中,cpustat 通常是 sysstat 包里的一个工具(有些发行版也叫 mpstat / pidstat 更常用)。如果你说的是 sysstat 的 cpustat / mpstat,可以通过 CPU 利用率构成来定位系统瓶颈。
下面按常见瓶颈类型 + 如何看 cpustat 指标来说明。
典型 mpstat -P ALL 1(或 cpustat)输出字段:
CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
关键字段说明:
现象:
%usr 很高(>70%)%idle 很低%iowait 低结论:
应用本身在大量计算(如算法、压缩、加解密)
定位方法:
pidstat -u 1
top -c
看哪个进程 %CPU 高
现象:
%sys 很高(>30%)%usr 不高可能原因:
辅助命令:
vmstat 1
pidstat -w 1 # 上下文切换
现象:
%iowait 高(>20%)%idle 可能不低结论:
CPU 在等磁盘
确认:
iostat -x 1
看:
await 高%util 接近 100%现象:
%soft 高常见于:
查看:
cat /proc/interrupts
mpstat -P ALL 1
现象:
%steal 高(>10%)结论:
宿主机抢资源,非本机问题
解决:
现象:
%idle 高可能是:
看:
pidstat -t 1
perf top
# 1. 看 CPU 总体分布
mpstat -P ALL 1
# 2. 看是谁在用 CPU
pidstat -u 1
# 3. 看是否 IO 问题
iostat -x 1
# 4. 看中断
cat /proc/interrupts
| 指标 | 瓶颈类型 |
|---|---|
| %usr 高 | 应用计算 |
| %sys 高 | 内核/系统调用 |
| %iowait 高 | 磁盘 IO |
| %soft 高 | 网络中断 |
| %steal 高 | 云资源争抢 |
| idle 高但慢 | 锁 / 单线程 |
如果你愿意,可以把 你的 cpustat / mpstat 输出贴出来,我可以直接帮你判断是哪一种瓶颈。