cpustat 通常指两类东西,最常见的是:
cpustat 工具(如 sysstat 包中的 mpstat / sar 类输出,或 Go 写的 cpustat)下面我以最常见的 CPU 使用率结果为例,教你如何读,并顺带说明常见字段含义。
07:30:01 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07:30:01 AM all 12.3 0.0 5.1 1.2 0.0 0.3 0.0 0.0 0.0 81.1
07:30:01 AM 0 20.0 0.0 8.0 2.0 0.0 0.5 0.0 0.0 0.0 69.5
07:30:01 AM 1 5.0 0.0 2.0 0.0 0.0 0.1 0.0 0.0 0.0 92.9
all:所有 CPU 平均0, 1…:单个 CPU 核心%usr(用户态 CPU)✅ 正常偏高也 OK
❌ 持续 90%+ → 应用繁忙
%sys(内核态 CPU)❌ %sys 长期 > %usr → 可能有:
%iowait(IO 等待)❌ 高 → 磁盘慢 / 数据库慢 / 文件读写多
%irq / %soft❌ 高 → 网卡、磁盘中断过多
%steal(云环境重要)❌ 高 → 云主机超卖、邻居抢资源
%guest / %gnice一般不用太关心
%idle(空闲)✅ 高 = 闲
❌ 低(<10%) = 饱和
看:
%usr + %sys ≈ 100%
%idle ≈ 0
→ CPU 满了
%iowait 高 → 不是 CPU 问题,是 IO%usr 高 → 真算得多%steal 高 + %idle 低
→ 不是你的问题,是云平台
❌ iowait 高 = CPU 差
✅ 实际是磁盘/存储慢
❌ idle 低就一定要扩容
✅ 要看是 usr 还是 iowait
如果是类似:
cpustat -T 1
输出通常是:
usersystemidleiowait读法是一样的,只是名字更短。
如果你愿意,可以把你实际的 cpustat 输出贴出来,我可以直接帮你“逐行读 + 判断问题”。