生产级 SOP:vmstat + mpstat + pidstat + perf 四层联动排障决策树 1
下面给你一套生产级 SOP:vmstat + mpstat + pidstat + perf 四层联动排障决策树。目标是做到:
看到 load 高,不猜,按流程 3~5 分钟定位方向(CPU / IO / 调度 / 锁 / 中断)
✔ 总体架构(四层模型)
Layer 1: vmstat → 系统“有没有问题”(队列层)
Layer 2: mpstat → CPU“忙在什么类型”(CPU类型层)
Layer 3: pidstat → “是谁在制造问题”(进程层)
Layer 4: perf → “代码/内核哪里出问题”(根因层)
✔ 第一层:vmstat(先判断“问题类型”)
✔ 命令
vmstat 1
✔ 核心判断矩阵(最重要)
| 指标 | 阈值 | 结论 |
|---|---|---|
| r | > CPU核数 | CPU排队(CPU压力) |
| b | > 2 | IO阻塞(D状态) |
| cs | > 50k/s | 调度风暴 |
| si/so | > 0 | 内存压力(swap) |
✔ 决策分流(第一步必须做)
vmstat|-------------------------| | |r高 b高 cs高| | |CPU问题 IO问题 调度问题
✔ 第二层:mpstat(确认“CPU到底在忙什么”)
✔ 命令
mpstat -P ALL 1
✔ 核心指标判断
| 指标 | 含义 | 阈值 |
|---|---|---|
| %usr | 用户态CPU | >80%热点 |
| %sys | 内核态CPU | >30%异常 |
| %iowait | IO等待 | >20%瓶颈 |
| %irq | 硬中断 | >5%异常 |
| %soft | 软中断 | >10%网络压力 |
✔ CPU问题分类
✔ CPU型 load
%usr 高 + r高
👉 结论:
-
业务计算瓶颈
-
用 perf 找函数热点
✔ IO型 load(CPU假忙)
%wa 高 + idle不低
👉 结论:
-
IO卡住
-
D状态堆积
✔ 调度型 load
%sys 高 + idle不低
👉 结论:
-
锁 / cs / 线程风暴
✔ 中断风暴
%irq 或 %soft 高
👉 结论:
-
网络/磁盘中断问题
✔ 第三层:pidstat(定位“是谁制造问题”)
✔ CPU/调度分析
pidstat -u -w 1
✔ 核心指标
| 指标 | 含义 | 阈值 |
|---|---|---|
| %CPU | CPU占用 | >80%热点进程 |
| cswch/s | 主动切换 | >10k |
| nvcswch/s | 被动切换 | >20k |
✔ 定位规则
✔ CPU热点进程
%CPU 高
👉 谁在烧 CPU
✔ 锁竞争进程
nvcswch/s 高
👉 futex / mutex 竞争
✔ IO阻塞进程
状态 D
👉 IO卡住
✔ 调度风暴进程
cswch/s + nvcswch/s 都高
👉 线程抖动 / 线程过多
✔ 第四层:perf(最终根因定位)
👉 进入 perf 的前提:
已经知道是 CPU / IO / 调度问题
✔ 4.1 CPU问题(perf top / record)
perf top
或:
perf record -F 99 -ag -- sleep 30
perf report
✔ 判断重点
| 现象 | 结论 |
|---|---|
| 单函数占比高 | CPU热点 |
| syscall高 | 内核开销 |
| lock高 | 锁竞争 |
✔ 4.2 IO问题(block trace)
perf record -e block:block_rq_issue -a
perf record -e block:block_rq_complete -a
✔ 判断
| 现象 | 结论 |
|---|---|
| ext4/xfs | 文件系统 |
| submit_bio | block层 |
| nvme/driver | 硬件问题 |
✔ 4.3 调度问题(核心)
perf sched record
perf sched latency
✔ 判断
| 现象 | 结论 |
|---|---|
| latency高 | 调度延迟 |
| wakeup多 | 线程抖动 |
| futex高 | 锁竞争 |
✔ 四层联动决策树(生产级核心)
vmstat|--------------------------------| | |r高 b高 cs高| | |mpstat mpstat mpstat| | |CPU/锁/调度 IO确认 调度确认| | |pidstat pidstat pidstat| | |找进程 找D状态进程 找抖动进程| | |perf perf perf| | |函数热点 IO路径 调度/锁根因
✔ 一键 SOP(生产排障标准流程)
✔ Step 1(必做)
vmstat 1
✔ Step 2(分类)
| 条件 | 下一步 |
|---|---|
| r高 | mpstat + perf CPU |
| b高 | iostat + perf block |
| cs高 | pidstat + perf sched |
✔ Step 3(定位进程)
pidstat -u -w 1
✔ Step 4(根因)
| 问题 | perf工具 |
|---|---|
| CPU | perf top / record |
| IO | block trace |
| 调度 | perf sched |
| 锁 | perf lock |
✔ 最终总结(一句话版 SOP)
vmstat 定问题类型 → mpstat 定CPU性质 → pidstat 定进程 → perf 定根因
如果你下一步想再升级,我可以帮你做一版更狠的:
👉 “线上 load 高 3 分钟自动归因流程(含判断阈值 + 故障分级 + runbook)”
