在 CentOS 上 cpustat 卡住(无输出、长时间不动、命令不返回),通常不是系统真的“死机”,而是数据源或运行方式的问题。下面按最常见原因逐条说明。
CentOS 里常见的 “cpustat” 有两类:
mpstat / sar 类工具cpustat(github.com/uber-common/cpustat)如果是
uber/cpustat,它依赖 perf,问题大多出在这里。
cpustat(uber 版)底层用:
perf_event_open()
如果:
就会卡住或一直等
✅ 解决:
sudo cpustat
或临时放开:
echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid
常见于:
表现:
cpustat 启动后无任何输出✅ 检查:
dmesg | grep perf
✅ 解决:
--privileged老内核 / 定制内核可能:
CONFIG_PERF_EVENTS✅ 检查:
perf stat ls
如果 perf 也卡,说明不是 cpustat 的问题。
例如:
cpustat -i 0
或极小间隔 + 高 CPU 负载
会导致:
✅ 建议:
cpustat -i 1
如果在:
而消费端不读数据
cpustat 会阻塞在 write()
✅ 测试:
cpustat > /tmp/c.log &
tail -f /tmp/c.log
极端情况:
✅ 检查:
top
mpstat -P ALL 1
# 1. 是否 root
whoami
# 2. perf 是否正常
perf stat sleep 1
# 3. cpustat 是否卡在 perf
strace -f cpustat 2>&1 | head
如果 strace 卡在:
perf_event_open(...)
✅ 就是 perf 问题(90%)
如果只是为了看 CPU:
mpstat -P ALL 1
sar -u 1
top
htop
请告诉我:
cat /etc/redhat-release)uname -r)我可以直接帮你定位到“卡在哪一行”。