cpustat(通常是 pcp 自带的 cpustat,或某些发行版中的类似工具)在 Debian 上“卡住”一般不是真的死机,而是等待数据 / 阻塞在某种 I/O 或权限上。下面按常见原因给你排查思路。
/proc 或 perfcpustat 往往依赖:
/proc/statperf_event(内核性能计数器)如果你不是 root,或内核限制了 perf:
perf_event_paranoid
可能直接卡住或一直不输出。
✅ 解决:
sudo cpustat
或放宽限制:
sudo sysctl kernel.perf_event_paranoid=1
(生产环境不建议设为 -1)
在以下环境中 cpustat 很容易卡:
表现:
✅ 检查:
cat /proc/sys/kernel/perf_event_paranoid
ls /proc/sys/kernel/perf_event_max_sample_rate
有些 cpustat 实现:
q 或 Ctrl+C 才退出如果你以为它“卡住”,其实它只是在持续采样。
✅ 解决:
cpustat 1 5
(1 秒一次,共 5 次)
Debian 上的 cpustat 通常来自:
apt install pcp
它可能依赖:
pmcd 服务systemctl status pmcd
如果没启动:
sudo systemctl start pmcd
否则 cpustat 会一直阻塞连接 pmcd。
某些情况:
✅ 排查:
strace cpustat
如果你看到卡在:
open("/proc/...")connect()perf_event_open()就能定位。
# 1. 是否 root
sudo -i
# 2. 是否容器
cat /proc/1/cgroup
# 3. perf 是否可用
perf stat true
# 4. 服务是否起来
systemctl status pmcd
# 5. 非交互运行
cpustat 1 3
如果 cpustat 一直不稳定,可以用:
mpstat 1
pidstat -u 1
top
htop
如果你愿意,可以告诉我:
strace cpustat 的输出我可以直接帮你判断是哪一种卡住。