主要观点:Linux 6.10 内核发布中,Pernosco 在 perf 事件子系统贡献了两个新功能,对 rr 有益且有更广泛应用。
关键信息:
- rr 在记录和回放阶段大量使用 perf 事件,除首次外其他需用 perf 事件中断被跟踪程序,通过结合 Linux 多个特性实现。
- 通过 BPF 可抑制 perf 事件的 I/O 信号,新功能能加速异步事件回放,减少 rr 回放开销。
- perf 事件的 wakeup_watermark 能触发唤醒并生成 I/O 信号,可让 rr 无需高权限观察被跟踪程序切换,6.10 起可与 perf_event_paranoid == 2 配合工作。
重要细节: - 利用 PERF_EVENT_IOC_PERIOD ioctl 编程 perf 事件溢出,用 FASYNC 机制将溢出准备转换为信号,再用 F_SETOWN_EX 指向被跟踪程序,最后通过 ptrace 实现中断。
- 新添加的 BPF 抑制 I/O 信号能力,可避免不必要的上下文切换到 rr 或使用 ptrace,在特定追踪中减少开销 94%。
- 新添加的 wakeup_watermark 能力,可在数据缓冲区溢出前中断软件,用于更准确的数据收集,如 Intel Processor Trace。
更广泛应用:BPF 加速条件的硬件断点可用于任何调试器的更快条件断点;wakeup_watermark 新能力结合合适“溢出”区域可用于更容忍中断软件的数据收集工作。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。