温馨提示×

centos cpustat为何为空

小樊
38
2026-10-12 01:14:20
栏目: 智能运维

在 CentOS 上执行 cpustat 时输出为空(没有任何数据),通常有以下几种原因。先说明一点:cpustat 不是 CentOS 自带命令,常见来源有两个:

  1. sysstat 包里的 mpstat / sar(不是叫 cpustat)
  2. GitHub 上的 cpustat(由 erikdubois / colin990 / brendangregg 等实现,通常是 Go 写的性能工具)

下面分别说明“为空”的常见原因和解决办法。


一、你用的是哪个 cpustat?

先确认一下:

which cpustat
cpustat --help

情况 A:你装的是 Go 版 cpustat(如 github.com/uber/cpustat)

这是最常见的“空输出”情况。

常见原因 1:没有 root 权限

cpustat 需要读取 /proc 和 perf 数据,普通用户经常看不到进程。

✅ 解决:

sudo cpustat

常见原因 2:系统太闲,没有进程满足条件

有些 cpustat 默认只显示:

  • CPU 使用率 > 某阈值的进程
  • 或只显示“活动进程”

如果系统几乎空闲,就可能一行都没有。

✅ 解决(示例):

sudo cpustat -s 0      # 显示所有进程
sudo cpustat -u 0.1    # 降低阈值

常见原因 3:内核不支持 perf

cpustat 依赖 perf_event

检查:

ls /proc/sys/kernel/perf_event_paranoid
cat /proc/sys/kernel/perf_event_paranoid

如果是 -1 或 1 问题不大;某些云厂商内核会禁用。

✅ 临时放开:

sudo sysctl kernel.perf_event_paranoid=1

常见原因 4:容器 / 虚拟机限制

  • Docker 容器
  • OpenVZ
  • 某些轻量云

➡ 根本读不到 CPU 事件


情况 B:你以为 cpustat 是系统命令,其实没有

CentOS 默认 没有 cpustat

✅ 正确命令是:

mpstat 1
sar -u 1
top
htop

例如:

yum install sysstat -y
mpstat 1 5

二、快速排查清单(推荐你按顺序做)

# 1. 是否真的有 cpustat
which cpustat

# 2. 用 root 试
sudo cpustat

# 3. 看帮助
cpustat -h

# 4. 系统是否空闲
top

# 5. 用标准工具验证
mpstat 1

三、如果你能贴出来这些,我能直接告诉你原因

  1. which cpustat 输出
  2. cpustat 的完整命令
  3. 是否在 Docker / 云服务器
  4. CentOS 版本(cat /etc/redhat-release)

我可以根据你的环境精确定位。

0 踩