返回
Featured image of post 动态追踪 —— BPFTool

动态追踪 —— BPFTool

BPFTool

安装

git clone git@github.com:torvalds/linux.git
git checkout v5.4
cd tools/bpf/bpftool
make && make install

使用

特征查看

查看当前系统所支持的所有特征。

bpftool feature

启用 jit

cat /proc/sys/net/core/bpf_jit_enable
echo 1 > /proc/sys/net/core/bpf_jit_enable

获取系统中已运行的 BPF 程序

bpftool prog show
bpftool prog show id <ID>
bpftool prog show id <ID> --json
bpftool prog dump xlated id <ID>
bpftool prog dump xlated id <ID> visual &> output.out
# sudo apt install graphviz
dot -Tpng output.out -o visual-graph.png

启用 BPF 统计信息

sysctl -w kernel.bpf_stats_enabled=1

载入并持久化 BPF 程序到 BPF 文件系统

bpftool proc load bpf_proc.o /sys/fs/bpf/bpf_proc

检查 BPF 映射

bpftool map show

创建 BPF 映射

bpftool map create /sys/fs/bpf/counter type array key 4 value 4 entries 5 name counter

更新 BPF 映射

bpftool map update id 1 key 1 0 0 0 value 1 0 0 0

查看 BPF 映射

bpftool map dump id 1

将映射附加到程序上

# 使用名称
bpftool prog load bpf_prog.o /sys/fs/bpf/bpf_prog \
    map name counter /sys/fs/bpf/counter

# 使用索引
bpftool prog load bpf_prog.o /sys/fs/bpf/bpf_prog \
    map idx 1 /sys/fs/bpf/counter

查看附加到特定接口的程序

bpftool perf show
bpftool net show
bpftool cgroup tree
相信美好的事情即将发生。
Built with Hugo
Theme Stack designed by Jimmy