温馨提示×

centos cpustat为何没数据

小樊
41
2026-08-04 10:13:55
栏目: 智能运维

cpustat 在 CentOS 上没有数据,通常是工具未正确安装、使用方式不对,或系统环境不支持导致的。下面按最常见原因 → 排查方法 → 解决方案给你一个完整排查清单。


一、先确认你用的是哪个 cpustat

cpustat 不是 CentOS 自带的核心工具,最常用的是两种

1️⃣ sysstat 包里的 sar / mpstat(很多人误叫 cpustat)

CentOS 官方常用,但没有直接叫 cpustat 的命令

rpm -qa | grep sysstat

如果没有:

yum install -y sysstat

然后看 CPU 数据:

mpstat -P ALL 1
sar -u 1 3

✅ 有数据说明系统没问题,只是你误以为叫 cpustat


2️⃣ GitHub 上的 cpustat(by Thomas Jones)

这是第三方的:

cpustat

如果你装的是这个:

✅ 确认是否安装成功

which cpustat

如果没有:

cpustat

✅ 没有数据常见原因


二、最常见原因(90% 都在这里)

✅ 1. 没有 root 权限(最常见)

cpustat 需要读取 /proc/sys普通用户经常没数据

sudo cpustat

✅ 解决:加 sudo


✅ 2. 采集时间太短

cpustat 1 1

如果只跑 1 秒,有时看不到数据

✅ 建议:

cpustat 1 5

✅ 3. proc 文件系统异常(容器环境高发)

检查是否在容器里

systemd-detect-virt

如果是:

  • docker
  • k8s
  • lxc

⚠️ 容器里 /proc 可能是受限的

✅ 解决:

  • 在宿主机运行
  • 或确认容器有 --privileged

✅ 4. 系统太闲,CPU 100% idle

cpustat 默认可能只显示有负载的 CPU

top

如果 CPU idle 很高,cpustat 看起来像“没数据”

✅ 建议:

stress -c 2

再开一个窗口跑 cpustat


✅ 5. 内核版本太旧(老 CentOS 6/7)

老内核可能缺少某些 /proc/stat 字段

uname -r

✅ 建议:

  • CentOS 7 用 sysstat
  • CentOS 6 基本不建议用第三方 cpustat

三、快速自检清单(照着做)

# 1. 是否是 root
whoami

# 2. 是否能看到 CPU 数据
cat /proc/stat

# 3. sysstat 是否正常
mpstat -P ALL 1 2

# 4. cpustat 是否存在
which cpustat

# 5. 运行方式
sudo cpustat 1 5

四、推荐结论(重点)

场景 建议
只想看 CPU 使用率 top / mpstat / sar
想要 cpustat 那种输出 sudo cpustat
在 Docker / K8s ❌ 不建议用 cpustat
老 CentOS ✅ 用 sysstat

如果你愿意,可以把下面信息发我,我可以精确判断

  1. CentOS 版本(cat /etc/centos-release
  2. 内核版本(uname -r
  3. 你运行的完整命令
  4. 是在物理机还是容器

我可以直接告诉你为什么没数据

0