如何计算 eBPF 探针的性能影响?

Dom*_*nus 6 performance monitoring bpf ebpf

eBPF 已成为轻松快速地监控流程的重要工具。然而,我无法找到如何计算探针本身对性能的影响。我确信如果我挂钩每个系统调用并在地图中推送一些信息,一定会产生一些影响,没有什么是免费的,但是我将如何正确计算这种增加的延迟?

我想到的唯一解决方案是在探测器处于活动状态和不活动状态的情况下多次运行相同的程序,并检查系统执行时间差异,但在我看来,这会受到各种因素的影响,这些因素可能会增加很多差异因此不会给出非常可靠的结果。

pch*_*gno 9

Bryce Kahle 在eBPF 峰会上就此主题发表了演讲。这是我所知道的这个问题最完整的答案。

总而言之,您有多种选择:

  • 依赖kernel.bpf_stats_enabled内核收集的统计信息。
  • 使用bpftool prog profile
  • 使用BPF_PROG_TEST_RUN钩子,例如 via bpftool prog run

演讲没有提到最后一个选项:您现在可以使用BPF Tampoline将 BPF 程序附加到其他 BPF 程序的入口和出口处。