由 Pernosco 贡献的 Linux 6.10 中的新功能

主要观点: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 新能力结合合适“溢出”区域可用于更容忍中断软件的数据收集工作。
阅读 8
0 条评论