【发布时间】:2020-06-11 19:03:16
【问题描述】:
bcc使用python编译ebpf程序,有没有什么方便的方法可以把这些python脚本生成一个可执行文件,这样我就可以在没有安装clang和llvm环境的服务器上运行这些trace程序?
【问题讨论】:
bcc使用python编译ebpf程序,有没有什么方便的方法可以把这些python脚本生成一个可执行文件,这样我就可以在没有安装clang和llvm环境的服务器上运行这些trace程序?
【问题讨论】:
TL;DR. 不,不使用密件抄送。不过,您可能想查看BPF CO-RE。
解决密件抄送问题有两个方面。首先,您需要使用 BPF 程序和映射编译一个目标文件,该程序可以在您的目标系统上运行(与 Linux BPF 加载器相同的内核版本/头文件和相同的约定)。其次,您需要 BCC 的用户空间组件来识别和使用该程序和地图。
密件抄送目前均未启用这些功能。我的fork has a (somewhat stale) branch 实现了对将目标文件转储到磁盘的支持,其中约定允许您将其加载到 Linux 内核中。对于您的目的,这可能是不完整的,因为我只是试图将程序加载到内核中;我不在乎后来发生了什么。 run BCC's tools on remote systems 也有一些工作,但我不知道它的当前状态。
正在解决您的问题的一项工作是 BPF CO-RE。 BPF CO-RE 允许您开发可跨 Linux 版本移植的 BPF 跟踪程序。因此您无需使用目标系统的 Linux 头文件进行编译,也不再需要 LLVM/Clang .这项工作背后的团队最近在the principles and inner workings of BPF CO-RE 和how it would apply to BCC's tools 上发布了两篇文章。
【讨论】: