您如何计算 eBPF 探针的性能影响?
How do you compute the performance impact of a eBPF probe?
eBPF 已成为轻松快速地监控流程的重要工具。但是,我无法找到如何计算探测器本身对性能的影响。我确定如果我挂钩每个系统调用并在映射中推送一些信息,肯定会有一些影响,没有什么是免费的,但我如何正确计算这个增加的延迟?
我想到的唯一解决办法是运行多次使用相同的程序,同时激活和不激活两个探测器,并检查系统执行时间差异,但在我看来这会受到以下因素的影响各种因素可能会增加很多差异,因此不会给出非常可靠的结果。
有 a talk on this topic by Bryce Kahle at the eBPF Summit。这是我所知道的对这个问题最完整的回答。
总而言之,您有几种选择:
- 依靠
kernel.bpf_stats_enabled
内核收集的统计信息。
- 使用
bpftool prog profile
.
- 使用
BPF_PROG_TEST_RUN
挂钩,例如,通过 bpftool prog run
.
演讲中没有提到最后一个选项:您现在可以使用 BPF trampoline 在其他 BPF 程序的入口和出口附加 BPF 程序。
eBPF 已成为轻松快速地监控流程的重要工具。但是,我无法找到如何计算探测器本身对性能的影响。我确定如果我挂钩每个系统调用并在映射中推送一些信息,肯定会有一些影响,没有什么是免费的,但我如何正确计算这个增加的延迟?
我想到的唯一解决办法是运行多次使用相同的程序,同时激活和不激活两个探测器,并检查系统执行时间差异,但在我看来这会受到以下因素的影响各种因素可能会增加很多差异,因此不会给出非常可靠的结果。
有 a talk on this topic by Bryce Kahle at the eBPF Summit。这是我所知道的对这个问题最完整的回答。
总而言之,您有几种选择:
- 依靠
kernel.bpf_stats_enabled
内核收集的统计信息。 - 使用
bpftool prog profile
. - 使用
BPF_PROG_TEST_RUN
挂钩,例如,通过bpftool prog run
.
演讲中没有提到最后一个选项:您现在可以使用 BPF trampoline 在其他 BPF 程序的入口和出口附加 BPF 程序。