736 字
4 分钟
01-ebpf环境搭建
eBPF 工具对比
| 维度 | libbpf | bpftrace | BCC |
|---|---|---|---|
| 定位 | 底层 C 库,eBPF 程序开发框架 | 高级脚本语言,动态追踪工具 | Python/C++ 高级框架 |
| 开发语言 | C / C++ | bpftrace 专属脚本语法(类 awk) | Python + C(内嵌) |
| 上手难度 | 高,需要手写 BPF 程序 | 低,一行命令即可追踪 | 中,Python 封装但配置复杂 |
| 性能开销 | 最低,接近原生 | 较低 | 较高,Python 运行时有额外开销 |
| 编译方式 | 提前编译(AOT),支持 CO-RE | 运行时编译(JIT) | 运行时编译,依赖 LLVM/Clang |
| 内核版本要求 | 较低,CO-RE 支持老内核 | 较高(推荐 4.9+) | 较高,且强依赖内核头文件 |
| 环境部署 | 简单,静态链接友好 | 中等,需要安装 bpftrace 二进制 | 复杂,依赖链长(LLVM、内核头文件等) |
| 适用场景 | 生产环境、嵌入式、性能敏感场景 | 快速调试、临时追踪、一次性分析 | 开发调试、功能丰富的追踪工具开发 |
| 可移植性 | 最强,BTF + CO-RE 跨内核版本 | 一般 | 差,强依赖本机内核头文件 |
| 社区生态 | 活跃,Linux 内核官方推荐 | 活跃,Brendan Gregg 主导 | 早期主流,逐渐被 libbpf 取代 |
- 简单来说 libbpf 就是对于 bpf 的一个封装,我们可以用它来加载 bpf 程序,然后放到内核中去执行
- bcc,又是对 libbpf 的封装,它主要采用的是 python 这个语言,简化程序的一个开发
- bpftrace,他是相当于 bpftrace 这个语言,来实现对于一个 bpf 程序的加载
贴一下这三个工具的地址吧,或许后面还会分析源码的时候会用到
- libbpf:github.com/libbpf/libbpf
- BCC:github.com/iovisor/bcc
- bpftrace:github.com/bpftrace/bpftrace
基本环境配置要求
- 操作系统
安装 Ubuntu 版本即可
libbpf 环境配置&编译
git clone https://github.com/libbpf/libbpf.gitcd libbpf/src/makemake install同时第一次安装的 wsl 可能会缺少C 编译器,安装 gcc 以及 libbpf 的完整编译依赖即可。
apt-get updateapt install -y gcc build-essential libelf-dev zlib1g-dev pkg-config- gcc / build-essential — C 编译器及基础编译工具链
- libelf-dev — libbpf 解析 ELF 格式必须依赖
- zlib1g-dev — 压缩支持
- pkg-config — 编译时查找依赖库路径
bpftrace 环境配置&编译
先安装依赖,然后进行 clone
apt-get updateapt-get install -y \ asciidoctor \ binutils-dev \ bison \ build-essential \ clang \ cmake \ flex \ libbpf-dev \ libbpfcc-dev \ libcereal-dev \ libdw-dev \ libelf-dev \ libiberty-dev \ libpcap-dev \ llvm-dev \ libclang-dev \ libclang-cpp-dev \ linux-tools-common \ pahole \ xxd \ zip \ zlib1g-dev
git clone --depth=1 --recurse-submodules --shallow-submodules https://github.com/bpftrace/bpftrace.gitcd bpftrace/mkdir buildcd build/cmake .. -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=Releasemake -j8make install安装好了,就可以进行使用了
bcc 环境配置&编译
对于 Ubuntu24.04,可以直接输入下面的命令,GitHub 上面也是有的
还是需要先安装依赖
sudo apt install -y zip bison build-essential cmake flex git libedit-dev \ libllvm18 llvm-18-dev libclang-18-dev python3 zlib1g-dev libelf-dev libfl-dev python3-setuptools \ liblzma-dev libdebuginfod-dev arping netperf iperf libpolly-18-dev接着,clone 项目
git clone https://github.com/iovisor/bcc.gitmkdir bcc/build; cd bcc/buildcmake ..makesudo make installcmake -DPYTHON_CMD=python3 .. # build python3 bindingpushd src/python/makesudo make installpopd分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
换条路线
从其他文章中稳定抽取
最后更新于 ,距今已过 128 天
部分内容可能已过时
评论
还没有评论,来写第一条吧。