温馨提示×

centos cpustat为什么卡

小樊
43
2026-09-12 02:54:21
栏目: 智能运维

在 CentOS 上执行 cpustat 卡住(无响应 / 长时间不输出),通常不是命令本身有问题,而是运行环境或系统状态异常。下面按常见原因给你梳理一下。


一、cpustat 是什么?

cpustat 一般来自 sysstat 包(或某些第三方工具),用于:

  • 读取 /proc/stat
  • 定期采样 CPU 使用情况

正常情况下是非阻塞、轻量级的。


二、最常见导致 cpustat 卡住的原因

1️⃣ /proc 文件系统异常(非常常见)

如果 /proc 挂载异常或被“卡住”:

cat /proc/stat

也会卡。

可能原因:

  • NFS / 容器 / 虚拟化层问题
  • 内核 bug
  • 系统负载极高,proc 读取被阻塞

✅ 验证:

ls /proc
cat /proc/loadavg

2️⃣ 系统负载极高(CPU / IO 打满)

当系统:

  • CPU 100%
  • IO wait 极高
  • 内存耗尽触发 swap

cpustat 可能因为调度延迟看起来像“卡住”。

✅ 检查:

top
vmstat 1
iostat -x 1

3️⃣ 在容器中运行(权限 / cgroup 限制)

在 Docker / Kubernetes 中:

  • 看不到宿主 CPU
  • cgroup 读取被限制
  • 某些 /proc 文件不可读

✅ 表现:

  • cpustat 启动后无输出
  • strace cpustat 卡在 open("/proc/stat")

4️⃣ 使用了 -p-c 参数但 CPU 核数异常

例如:

cpustat -p ALL

在:

  • 热插拔 CPU
  • 虚拟机动态 CPU
  • NUMA 异常

可能导致枚举 CPU 时卡死。


5️⃣ 磁盘或终端 I/O 阻塞

如果你是通过:

  • 远程终端(SSH)
  • 串口
  • 日志重定向

而底层 I/O 很慢,cpustat 看起来像卡住。


6️⃣ 内核或 sysstat 版本 Bug

某些旧版本:

  • CentOS 6/7 早期 sysstat
  • 特定内核(如 3.x)

存在 cpustat 死循环问题。

✅ 检查版本:

rpm -qa | grep sysstat
uname -a

三、快速排查步骤(建议按顺序)

# 1. 看是否系统整体卡
top

# 2. 看 proc 是否卡
cat /proc/stat

# 3. 看 cpustat 卡在哪
strace -f cpustat 1 1

# 4. 看是不是容器
cat /proc/1/cgroup

# 5. 看负载
uptime
vmstat 1

四、临时绕过方案

如果 cpustat 不可用,可以替代:

top
mpstat 1
sar -u 1
cat /proc/stat

五、如果你愿意,我可以更精确帮你定位

你可以补充:

  1. CentOS 版本(6 / 7 / 8 / Stream)
  2. 物理机 / 虚拟机 / 容器
  3. cpustat 具体命令和参数
  4. strace cpustat 卡在哪一行

我可以直接告诉你是哪一环卡住,以及怎么修

0