eBPF Talk: bpf prog stats
文章目录
根据以下两个 commit,可以看到,自 5.1 内核起,bpf prog 可以统计自己的运行情况了。
- bpf: enable program stats 5.1 kernel.
- bpf: Sharing bpf runtime stats with BPF_ENABLE_STATS 5.8 kernel.
- bpf: Improve program stats run-time calculation 6.x kernel.
stats 例子
以 bpf2bpf demo 为例,
|
|
其中,run_time_ns
表示 bpf prog 累计运行时间(单位:纳秒),run_cnt
表示 bpf prog 运行的次数;以此 run_time_ns/run_cnt
计算平均运行时间。
fdinfo
/proc/[pid]/fdinfo/[fd]
里的内容,是由 bpf_prog_show_fdinfo()
函数填充的,该函数定义在 kernel/bpf/syscall.c
文件中。
|
|
BPF_PROG_RUN
with stats
如果 sysctl -w kernel.bpf_stats_enabled=1
启用了 stats,kernel 在运行 bpf prog 时就会统计运行时间和运行次数。
|
|
在运行 bpf prog 时进行统计,在读取 fdinfo 时获取统计数据。
小结
- 自 5.1 内核起,bpf prog 可以统计自己的运行情况了。
- 自 5.8 内核起,可以通过
BPF_ENABLE_STATS
BPF 系统调用子命令来开启 stats。 - 推荐在进行 benchmark/stress-test 时,开启 stats,以便获取更多的信息。
文章作者 Leon Hwang
上次更新 2024-04-03