温馨提示×

centos cpustat怎么分析

小樊
48
2026-07-09 04:17:39
栏目: 智能运维

cpustatsysstat 工具集里的一个 CPU 性能分析工具,常用于查看 CPU 使用率、中断、上下文切换、调度统计 等。下面从 安装 → 基本用法 → 输出字段 → 实战分析思路 给你一个完整说明(以 CentOS 7/8 为例)。


一、安装 cpustat

yum install -y sysstat

确认版本:

cpustat -V

二、基本用法

1️⃣ 最简单用法

cpustat

默认输出 系统整体 CPU 统计信息


2️⃣ 指定采样间隔和次数

cpustat 1 5

含义:

  • 1 秒采集一次
  • 共采集 5 次

3️⃣ 查看每个 CPU 核心

cpustat -c

或指定 CPU:

cpustat -c 0 1

4️⃣ 显示进程级 CPU 使用(类似 top)

cpustat -p

三、cpustat 输出字段说明(重点)

以常见输出为例:

  CPU  usr  sys  idle  iowait  irq  soft  steal  guest  guest_nice
  all  12   8    75     2      0    0      0       0       0

各字段含义

字段 含义
usr 用户态 CPU 使用率(应用程序)
sys 内核态 CPU 使用率
idle CPU 空闲
iowait CPU 等待 IO(磁盘/网络)
irq 硬件中断
soft 软中断
steal 被虚拟化 Hypervisor 偷走的时间
guest 虚拟机 CPU
guest_nice nice 的虚拟机 CPU

四、如何分析 CPU 问题(实战思路)

✅ 1. CPU 是否真的忙?

idle

idle < 20%  → CPU 很忙
idle > 80%  → CPU 很闲

✅ 2. 是用户态还是内核态?

情况 分析
usr 高 应用本身消耗 CPU(Java / C++ / Python)
sys 高 系统调用多、IO、锁、网络、中断
usr + sys ≈ 100% CPU 打到瓶颈

✅ 3. iowait 高 → 磁盘瓶颈

iowait > 20%  → 磁盘慢或 IO 队列堆积

确认:

iostat -x 1

✅ 4. softirq / irq 高 → 网络/中断问题

常见于:

  • 高网络流量
  • 网卡中断未绑定
  • Docker / K8s 环境
mpstat -P ALL 1
cat /proc/interrupts

✅ 5. steal 高 → 虚拟化问题

steal > 10%  → 云主机超卖 / 争抢 CPU

常见于:

  • 公有云低配实例
  • 虚拟机密集部署

五、结合其他工具一起分析(非常重要)

CPU 问题定位组合拳 ✅

cpustat 1
top
mpstat -P ALL 1
pidstat -u 1
perf top

常见场景速查

现象 下一步
usr 高 看是哪个进程:top / pidstat
sys 高 看系统调用:strace / perf
iowait 高 看磁盘:iostat
某核特别忙 看中断:/proc/interrupts

六、常见误区

iowait 高 ≠ CPU 忙
✅ 实际是 CPU 在等 IO

idle 高 ≠ 系统没问题
✅ 可能是 单线程瓶颈


七、示例分析

示例 1:CPU 被打满

usr 85%, sys 10%, idle 5%

✅ 应用 CPU 是瓶颈
✅ 看进程:

top

示例 2:IO 问题

iowait 40%, idle 30%

✅ 磁盘慢
✅ 查:

iostat -x 1

如果你愿意,可以把 cpustat 实际输出贴出来,我可以直接帮你分析具体是哪类问题(CPU / IO / 中断 / 虚拟化)。

0