ebpf
项目功能:
ebpf-go 是一个纯 Go 实现的库,用于加载、编译和调试 eBPF 程序,适用于长期运行的进程。支持通过多种包实现 eBPF 程序的编写、附加、调试及与内核交互,包括汇编、C 代码编译、事件读取、特性探测等功能。
使用方法:
- 使用
bpf2go工具将 C 编写的 eBPF 程序编译并嵌入 Go 代码,自动生成加载和操作代码。 - 通过
asm包直接编写 eBPF 汇编指令。 - 使用
link包将 eBPF 程序附加到内核钩子,perf和ringbuf包读取性能事件或环形缓冲区数据。 - 支持通过
features包探测内核特性,rlimit包管理资源限制,pin包操作 bpffs 上的固定对象。
主要特性:
- 支持 Linux(amd64、arm64)及 Windows(amd64)系统,兼容较新内核版本。
- 提供多个功能模块,涵盖 eBPF 程序开发全流程。
- MIT 开源许可证,适合长期运行的高性能场景。