在 CentOS 上排查 CPU 问题,cpustat 不是系统默认工具,常见做法分两种:
1️⃣ 使用 cpustat(来自 sysstat 或第三方)
2️⃣ 用更常见的工具组合排查(推荐)
下面按排查思路 + 命令示例说明。
mpstat(最常见)CentOS 通常安装的是 sysstat:
yum install -y sysstat
查看 CPU 使用:
mpstat -P ALL 1
含义:
%user:用户态%system:内核态%iowait:等待磁盘%idle:空闲✅ 排查重点:
%iowait 高 → 磁盘瓶颈%system 高 → 内核/中断/系统调用问题%user 高 → 应用 CPU 消耗cpustat(少见)例如:
cpustat -i 1
一般输出:
usrsysidlectx/s(上下文切换)irq✅ 重点看:
ctx/s 非常高 → 线程争抢irq 高 → 中断问题(网卡、磁盘)如果不确定来源:
which cpustat
rpm -qf $(which cpustat)
top
关注:
us / syload average按:
P:按 CPU 排序1:显示每个 CPUps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head
vmstat 1
关注:
cs(context switch)si/so(swap,异常)us/sypidstat -w -u 1
-u:CPU-w:上下文切换watch -n1 'cat /proc/interrupts | sort -k2 -nr | head'
常见:
eth0 → 网卡中断nvme → 磁盘中断→ 单进程死循环
top → 找 PID → strace -p PID
→ 通常是:
iostat -x 1
mpstat -P ALL 1
→ 某核一直 100%
→ 可能是:
top
mpstat -P ALL 1
pidstat -u -w 1
vmstat 1
iostat -x 1
你可以直接贴:
top 前 20 行mpstat -P ALL 1 输出我可以帮你精确定位是 应用 / 内核 / IO / 中断 的问题。