项目地址
FEATURE
- 获取可用当前内核版本中每种程序类型的辅助函数的列表
1 | bpftool feature |
MAP
查看加载到内核中的 map
1 | bpftool map list |
1 | 165: array name hello.bss flags 0x400 |
查看 map 的内容
1 | bpftool map dump name hello.bss |
1 | [{ |
PROG
将程序加载到内核中
1 | bpftool prog load hello.bpf.o /sys/fs/bpf/hello |
查看发生的重定位
1 | bpftool -d prog load hello.bpf.o /sys/fs/bpf/hello |
查看已加载的程序
1 | bpftool prog list |
查看加载到内核中的某个程序
1 | bpftool prog show id 174 --pretty |
查看翻译后的 eBPF 程序
1 | bpftool prog dump xlated name hello |
tracelog
- 与
cat /sys/kernel/debug/tracing/trace_pipe作用相同
1 | bpftool prog tracelog |
BTF
生成内核头文件
1 | bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h |
查看加载到内核中的所有 BTF 数据
1 | bpftool btf list |
查看某个 BTF 数据的内容
1 | bpftool btf dump id <id> |
查看特定 map 关联的 BTF 类型
1 | bpftool btf dump map name config |
查看特定程序关联的 BTF 类型
1 | Usage: bpftool btf { show | list } [id BTF_ID] |
1 | bpftool btf dump prog id 51 |
查看目标文件中的 BTF 数据
1 | bpftool btf dump file hello-buffer-config.bpf.o |
skeleton
从 ELF 文件格式的 eBPF 对象中自动生成框架代码
1 | bpftool gen skeleton hello-buffer-config.bpf.o > hello-buffer-config.skel.h |
NET
将 eBPF 程序附加到网络接口上的 XDP 事件
1 | bpftool net attach xdp tag d35b94b4c0c10efb dev eth0 |
列出挂载到网络栈的 BPF 程序
1 | bpftool net list |
将程序从网络接口 eth0 分离(detach)
1 | bpftool net detach xdp dev eth0 |
ip link
查看网卡已挂载的 BPF 程序
1 | ip link show |
1 | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 xdpgeneric qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 |
挂载 attach
1 | $ ip link set dev eth0 xdp obj hello.bpf.o sec xdp |
分离 detach
1 | $ ip link set dev eth0 xdp off |
PERF
查看附加到 perf 相关事件的程序
1 | bpftool perf show |
1 | bpftool perf list |