背景
一个函数看起来复杂,不代表它是热点。优化之前需要固定请求模型,让采样结果可以解释和复现。
核心判断
- 记录二进制版本、构建参数、负载与 CPU 拓扑。
- 先看调用树和时间占比,再按假设做一次最小改动。
- 同步观察吞吐、尾延迟与分配,避免局部收益换来整体退化。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
perf record -F 99 -g -- ./service --scenario=steady; perf report --stdio | head -80
边界与误区
无符号或不可靠的栈展开会让火焰图失真。perf 权限、架构和事件支持不同,容器采样前要确认访问范围。
验证方式
同样场景至少重复多次,比较稳定区间;保留原始 perf.data 与符号,让他人能复查,而不是只留下截图。
小结
固定负载、编译选项和采样窗口,先用系统指标定位再用 profiler 解释热点。