采样原理:skid 与 PEBS
更新时间:2026-10-01。理解 record 是“周期性中断采样”,才能解释样本偏差并选对精确模式。
一、采样机制
给事件配一个 period,计数溢出时触发 PMI 中断,内核记录此刻 IP/调用栈等,即一个样本。-F 999 是目标频率(内核自动调 period),-c 是固定 period;样本按统计近似热点分布。
二、skid
从中断产生到实际捕获 IP 有延迟,CPU 已执行若干指令,记录的 IP 偏离真正导致溢出的指令,称为 skid,热点会“糊”。
三、PEBS / IBS
硬件辅助精确采样在计数器溢出点直接写微码/缓冲,捕获精确 IP 和丰富状态(访问地址、load 使用延迟、数据来源层级),大幅降低 skid;perf 用 :p 修饰或 mem 模式启用。

四、常见坑
- 频率拉太高,中断开销和 throttling、丢样本。
- 普通采样 IP 偏移却当成精确热点。
- 需要 load 延迟却没用 PEBS mem。
小结
采样是溢出中断的统计估计,skid 造成偏移,PEBS/IBS 提供精确位置与访存信息;频率要权衡开销。下一篇 perf stat 深入与指标解读。
总结
perf record 本质是统计采样:给事件配一个 period,计数溢出时触发 PMI 中断、内核记录此刻 IP/调用栈,-F 是目标频率(内核自动调 period)、-c 是固定 period,样本按统计近似热点分布;但从中断产生到捕获 IP 有延迟、CPU 已执行若干指令,记录点会偏离真正触发指令,即让热点发“糊”的 skid;PEBS(Intel)/IBS(AMD)在溢出点直接写硬件缓冲,捕获精确 IP 及访存地址、load 延迟、数据源等扩展字段、大幅消除 skid,而频率拉太高会导致 throttling 和丢样本。