perf annotate 深入:指令级热点
更新时间:2026-10-01。已有 perf annotate,本文讲怎么用它把“热函数”进一步缩到“热指令”。
一、指令级占比
perf annotate -i perf.data(或 report 里进入函数回车选 annotate)按指令显示样本百分比与源码行,定位函数内部真正昂贵的位置。
二、识别慢指令
- 某条 load 样本集中 → 该访问多 miss(可配合 mem 数据源)。
- 除法/某些向量指令延迟高。
- 分支行占比异常 → 误判。
- 一段指令样本平均分散但 IPC 低 → 等待/停顿。
无调试信息时只有汇编,仍可看指令模式;有符号+调试信息最有用。

三、常见坑
- 样本落在相邻指令(skid/流水线)导致归属偏移。
- strip 后无法对应源码。
- 把指令占比当执行次数。
小结
annotate 把热点落到指令级,配合内存/分支事件识别慢指令,归属时注意 skid。下一篇 分支剖析与误预测。
总结
perf annotate 把样本映射到函数内的每条指令、显示各行占比与源码,能把“热函数”进一步缩到“热指令”:load 行样本集中指向多 cache-miss(可配合 mem 数据源)、除法/某些向量指令延迟高、分支行占比异常指向误判、一段指令样本分散但 IPC 低则是停顿等待;它显示的是样本占比而非执行次数,且因 skid/流水线样本会落到相邻指令造成归属偏移,strip 后无法对应源码——有符号加调试信息时最有用。