负载排查和分析三

明白了,你希望 Step1: 基础统计 能够做到真正的 闭环诊断,即不仅有指标解释,还要告诉用户:

  1. 可能现象(系统表现或问题)

  2. 分析工具/命令(如何收集更多数据或验证)

  3. 分析方法(指标和现象的对应关系、如何判断瓶颈)

  4. 可能原因

我帮你把 Step1 改写成完整表格,覆盖 CPU、缓存、内存、I/O、系统调用、调度等,并给出 现象→工具→分析→原因 的对应关系。


7.1 Step1: 基础统计(完整闭环版)

命令:

perf stat -a -d sleep 5
指标可能现象分析工具/命令分析方法说明可能原因/优化方向
cycles CPU 使用率高或低 perf stat 与 instructions 对比计算 CPI,判断 CPU 是否被有效利用 CPU 负载高 → CPU-intensive 任务;CPU 低 → I/O 等待或 sleep
instructions CPU 指令执行效率低 perf stat CPI = cycles/instructions CPI 高 → CPU stall、cache miss、分支预测失败
cache-references 缓存访问频繁,但可能命中率低 perf stat 与 cache-misses 对比计算缓存命中率 数据局部性差、NUMA 远程访问
cache-misses CPU stall、pipeline flush perf stat / perf top 高 cache-misses → CPU 等待内存 数据分布不均、访问模式不优化
branch-instructions 分支预测失败影响 CPI perf stat 对比 branch-misses if/else 分支复杂、循环条件多
branch-misses pipeline flush,CPI 上升 perf stat / perf top 高 → 性能下降 分支预测失败 → 重构算法、减少条件分支
context-switches 系统频繁切换任务,应用延迟 perf sched record/latency 对比 syscalls 高低,分析 ksoftirqd/kworker 等调度延迟 锁争用、调度器压力、频繁切换
cpu-migrations 进程频繁在不同 CPU 核心迁移 perf stat / numastat 高迁移次数 → NUMA 节点负载不均 NUMA 跨节点访问、负载均衡策略
page-faults 应用延迟、卡顿 perf stat / vmstat / sar 高 page-faults → 内存访问不在本地节点 内存不足、NUMA 远程访问、未预分配内存
minor-faults 非阻塞页错误频繁 → CPU 等待 perf stat / vmstat 分析应用访问模式、内存分配策略 内存分配不足或频繁创建新页
major-faults 阻塞 I/O → 应用延迟 perf stat / iostat / pidstat 观察 I/O 延迟、高磁盘等待 磁盘瓶颈、I/O 调度器配置不当
syscalls I/O 或网络瓶颈 perf trace 高频系统调用 → 网络、文件、磁盘 I/O 大量阻塞系统调用、同步 I/O
cpu-clock CPU 活动时间异常 perf stat 与 cycles 比较,判断 CPU 是否被阻塞 CPU 等待 I/O、锁争用、硬件瓶颈
stalled-cycles-frontend pipeline 等待指令 perf stat / perf top 高 → 分支预测失败、cache miss 优化算法、减少分支
stalled-cycles-backend 等待执行资源,影响 CPI perf stat / perf top 高 → 数据不可用、内存延迟、I/O 阻塞 内存访问慢、I/O 阻塞
bus-cycles 总线压力高 → 访问内存或 PCIe 等待 perf stat / perf top 高 → CPU 等待内存总线或 PCIe NUMA 远程访问、I/O 总线拥塞

使用方法与分析思路

  1. 观察 CPI

    • CPI 高 → 使用 perf top 看前端/后端 stall 原因

    • stalled-cycles-frontend → 分支预测、pipeline flush

    • stalled-cycles-backend → cache miss、NUMA 远程访问、I/O 等待

  2. 调度与锁

    • context-switches 高 → perf sched record + perf sched latency 分析

    • cpu-migrations 高 → 使用 numastat -c 检查 NUMA 负载

  3. 内存分析

    • page-faults 高 → vmstat 1perf top 定位热点页

    • minor-faults / major-faults → 判断是否 I/O 阻塞或内存分配不足

  4. 系统调用与 I/O

    • syscalls 高 → perf trace 分析调用频率

    • major-faults 高 → iostat -x 查看磁盘瓶颈

  5. 网络瓶颈

    • softirq 高 → /proc/softirqs + perf top 查看 ksoftirqd CPU 消耗

    • 硬中断高 → /proc/interrupts 检查 IRQ 绑核和 RPS/RFS 分布


这样每个指标都 对应现象、工具、分析方法、可能原因/优化措施,形成了 闭环诊断表格

 

posted on 2025-09-22 13:07  吃草的青蛙  阅读(22)  评论(0)    收藏  举报

导航