温馨提示×

debian cpustat如何排查

小樊
43
2026-09-16 20:00:17
栏目: 智能运维

在 Debian 系统上,cpustat 通常指 sysstat 包里的 mpstat / sar,也可能是指 perf-tools 里的 cpustat,或者用户自己装的 cpustat 工具。下面按最常见排查场景给你一个实用指南。


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

which cpustat
cpustat --help

常见情况:

  • /usr/bin/cpustatsysstat / perf 类工具
  • 没有 cpustat,但有 mpstat → 用 mpstat
  • 没装 → 可以装

二、如果没有 cpustat,推荐安装 sysstat

sudo apt update
sudo apt install sysstat

启用数据收集:

sudo systemctl enable sysstat
sudo systemctl start sysstat

三、用 cpustat / mpstat 实时排查 CPU 问题

1️⃣ 实时查看 CPU 使用率(每 1 秒)

mpstat 1

或:

cpustat 1

关注字段:

  • %usr:用户态
  • %sys:内核态
  • %iowait:IO 等待(高说明磁盘慢)
  • %irq / %soft:中断
  • %steal:虚拟机被宿主机抢占
  • %idle:空闲

排查结论示例

  • %usr 高 → 应用 CPU 密集型
  • %sys 高 → 系统调用 / 驱动问题
  • %iowait 高 → 磁盘瓶颈
  • %steal 高 → 云主机资源被抢

2️⃣ 查看每个 CPU 核心

mpstat -P ALL 1

用于发现:

  • 单核打满(进程绑核问题)
  • 多核不均衡

四、结合进程级排查(最关键)

1️⃣ 看是哪个进程吃 CPU

top
# 或
htop

P 按 CPU 排序


2️⃣ 定位线程级 CPU 使用

top -H -p <PID>

或:

ps -eo pid,tid,ppid,comm,%cpu --sort=-%cpu | head

五、历史数据分析(sar)

查看过去 CPU 使用

sar -u
sar -u 1 3

查看历史(按天)

ls /var/log/sysstat/
sar -u -f /var/log/sysstat/saXX

六、CPU 高但不知道原因?进一步排查

1️⃣ 中断问题

cat /proc/interrupts

2️⃣ 软中断

cat /proc/softirqs

网络高负载时常见


3️⃣ 系统调用多

pidstat -w 1

七、常见故障总结表

现象 可能原因
%usr 高 应用计算密集
%sys 高 内核 / 驱动 / 锁
%iowait 高 磁盘慢
%soft 高 网络中断
%steal 高 云主机超卖
单核 100% 线程未并行

八、如果你愿意,我可以更针对性帮你

你可以补充:

  1. Debian 版本(cat /etc/os-release
  2. 是否虚拟机 / 云厂商
  3. cpustat 输出截图或文本
  4. 突然高还是持续高

我可以直接帮你分析是哪一类的 CPU 问题。

0