Hasty Briefsbeta

双语

From profiling to kernel patch: the journey to an eBPF performance fix

5 months ago
  • #Performance Optimization
  • #Linux Kernel
  • #eBPF
  • Superluminal是一款针对Linux的CPU分析工具,它利用eBPF技术捕获性能数据,其推动的内核改进实现了更快的eBPF映射嵌套更新。
  • eBPF(扩展版伯克利包过滤器)支持在Linux内核中运行自定义程序,Superluminal借此收集上下文切换等性能指标。
  • eBPF映射实现了内核与用户空间的数据交换:Superluminal使用环形缓冲区处理性能事件,采用映射数组存储展开数据。
  • 预缓存展开数据时出现性能瓶颈,源于bpf_map_update_elem调用因内核中的synchronize_rcu等待而延迟。
  • 根本原因是映射嵌套更新中存在不必要的全局同步点,导致性能串行化。
  • 解决方案采用synchronize_rcu_expedited替代方案,使预缓存时间从830毫秒降至26毫秒(提速31倍)。
  • 该改进已作为补丁提交并被Linux 6.19内核采纳,惠及所有使用eBPF映射嵌套功能的用户。
  • 这一发现凸显了非CPU时间分析的重要性,传统采样分析器(如perf)常忽视该维度。