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)常忽视该维度。