perf 综合实战案例
更新时间:2026-10-01。把工具和方法论放进一个真实感问题里走一遍。
一、问题与路径
- 现象:接口 P99 升高、CPU 接近饱和。
perf stat:IPC 低、LLC MPKI 高、分支正常 → 指向内存侧。- top-down:Backend Bound 主导。
perf record/annotate:热点在一个遍历大数组的循环;perf c2c:无显著 HITM,排除伪共享。- 结论:顺序访问但工作集超 LLC、且结构布局载入了用不到字段。
- 修复:SoA/冷热拆分 + 循环分块。
- 验证:stat 显示 MPKI 下降、IPC 上升,perf diff/监控确认 P99 回落。

二、弯路提示
中途曾怀疑锁(实际 perf lock 无等待)、怀疑伪共享(c2c 无 HITM)——证据帮助快速排除,避免乱改。
小结
真实优化靠证据逐步收敛与排除,最终端到端指标(P99)确认收益。下一篇收尾 性能剖析知识地图。
总结
这个贯穿案例完整走了一遍方法论:线上接口 P99 升高、CPU 近饱和 → perf stat 见 IPC 低、LLC MPKI 高、分支正常指向内存侧 → top-down 归为 Backend Bound → record/annotate 定位到遍历大数组的热循环、c2c 无 HITM 排除伪共享 → 结论是工作集超 LLC 且结构布局载入了用不到的字段 → 用 SoA/冷热拆分 + 循环分块修复 → stat/diff 验证 MPKI 下降、IPC 上升、P99 回落;中途对锁和伪共享的怀疑都被证据快速排除,真实优化靠证据逐步收敛而非直觉乱改。