eBPF 与非 eBPF 跟踪点/kprobes

问题描述 投票:0回答:2

根据本文档(除其他外):https://blogs.oracle.com/linux/post/taming-tracepoints-in-the-linux-kernel

可以使用 eBPF 和其他内核提供的机制来注册跟踪点或 kprobes 的回调。

现在似乎每个人都想使用 eBPF 来完成这项任务。使用 eBPF 而不是仅注册跟踪点(如所解释的)的优点是什么,例如这里https://www.kernel.org/doc/Documentation/trace/tracepoints.txt

kernel-module ebpf bpf kprobe tracepoint
2个回答
3
投票

不使用 eBPF 注册跟踪点需要使用 Linux 内核模块。与 eBPF 程序相反,内核模块在加载时不会进行验证;他们可能会使您的系统崩溃。

请参阅 https://stackoverflow.com/a/70404149/6884590 了解更长的解释。


0
投票

虽然传统的跟踪点和 kprobes 对于检测很有用,但 eBPF 提供了更通用的跟踪和可观察性框架。

使用eBPF,您可以在运行时动态加载和附加程序,而无需修改内核源代码或重新启动系统。

此外,eBPF 程序在内核内的安全虚拟机中运行,这确保了安全性并防止崩溃或安全漏洞。

eBPF 拥有强大的指令集和优秀的工具,使开发人员能够表达复杂的跟踪逻辑。它支持各种功能,如映射、辅助函数和尾部调用,这使得编写复杂的跟踪程序变得更加容易。

eBPF 程序对系统性能的影响最小,并且在内核中高效执行。它们经常并行运行,从而导致跟踪操作的开销较低。

基于 eBPF 的丰富工具生态系统,例如 bpftrace 和 eBPF 支持的可观测框架,进一步增强了分析和故障排除能力。 eBPF 程序通常可以跨不同内核版本移植,从而减少频繁更新或修改的需要。这种可移植性允许您跨各种内核版本和发行版重用跟踪逻辑,从而确保跟踪基础设施的一致性。

© www.soinside.com 2019 - 2024. All rights reserved.