eBPF Talk: tracepoint vs raw_tp/tp_btf vs kprobe vs fentry/fexit 静态地对比运行时性能 2025-03-17 eBPF eBPF Talk 约 3709 字 预计阅读 8 分钟 凑个热闹,静态地对比一下 tracepoint、raw_tp/tp_btf、kprobe 和 fentry/fexit 四种 bpf 动态追踪技术的运行时性能。 eBPF代码性能调 阅读更多
eBPF Talk: btrace v0.2.0 发布 2025-03-09 eBPF eBPF Talk 约 1269 字 预计阅读 3 分钟 btrace 是什么?btrace 是一款 bpf 时代的现代化内核函数动态追踪工具。 btrace 重命名自 bpflbr,参考 eBPF Talk: 使用 Last Branch Record 动态追踪内核函数,在 bpflbr v0.1.0 的基础上, 阅读更多
eBPF Talk: 使用 Last Branch Record 动态追踪内核函数 2025-02-23 eBPF eBPF Talk 约 1147 字 预计阅读 3 分钟 Last Branch Record,简称 LBR,是 CPU 提供的一种硬件功能,可以记录程序执行过程中的分支跳转信息;目前,Intel CPU、AMD CPU 均已支持 LBR 功能; 阅读更多
eBPF Talk: 动态过滤函数参数 2025-02-09 eBPF eBPF Talk 约 2995 字 预计阅读 6 分钟 在使用 bpf 追踪内核函数的时候,通常需要对函数参数进行过滤。 如果使用 bpftrace,可以很方便地在脚本里指定过滤条件;但 bpftrace 依赖 LLVM,很多时 阅读更多
eBPF Talk: 设备层抓包的那些事 2025-01-19 eBPF eBPF Talk 约 1777 字 预计阅读 4 分钟 设备层抓包?不就是 tcpdump 嘛。缺点是,-i any 时无法抓到各个 netns 内的网络包。 netif_receive_skb 和 net_dev_queue 这 2 个 tracepoint 呢?好,能抓到所有 netns 内的网络包了。但, tracepoint bpf prog 不支持 bpf_skb_output help 阅读更多
eBPF Talk: 使用 tcpw 获取 curl 的五元组信息 2024-12-22 eBPF eBPF Talk 约 1043 字 预计阅读 3 分钟 在使用 curl、telnet 等工具排查问题的时候,如果想要知道当前的连接信息,在现有的工具集里,是没有办法直接获取的。 于是,我写了一个小工具 阅读更多
eBPF Talk: 在 arm64 fentry 里手动做 backtrace 2024-12-16 eBPF eBPF Talk 约 927 字 预计阅读 2 分钟 对于 fentry 程序而言,在 arm64 上做 backtrace 不像 x86 上那么简单;第一步找到可用的 frame pointer 就很费劲了。 毕竟,找到 frame pointer 之后,就可以通过 frame pointer 逐级回溯,找到调用者的 IP 和 FP 阅读更多
eBPF Talk: 在 bpf 里将 fd 和 sock 关联起来 2024-12-09 eBPF eBPF Talk 约 1509 字 预计阅读 4 分钟 对于 socket 编程,在用户态看到的只能是 fd;而在内核态,大部分时候看到的是 sock。 fd 和 sock 之间的关系,是在内核态的 syscall 里建立的;所以,在 connect 和 accept 等 syscall 里 阅读更多
eBPF Talk: tailcall 问题知多少 2024-12-01 eBPF eBPF Talk 约 1004 字 预计阅读 3 分钟 tailcall 是 v4.2 内核便已引入的一个特性,它允许一个 BPF 程序调用另一个程序,而无需返回原程序。 bpf: allow bpf programs to tail-call other bpf programs 然而,在 BPF 子系统不断地引入新特性的同时,t 阅读更多
eBPF Talk: 使用 fentry 调试 tailcall BUG 2024-11-24 eBPF eBPF Talk 约 3949 字 预计阅读 8 分钟 最近,在上线 XDP 网关新版本的时候,触发了 v5.15 内核的一个 tailcall BUG,导致了一个很奇怪的问题:在一个 XDP 程序的 subprog 里,调用了 bpf_tail_call() 阅读更多