eBPF Talk: guard spinlock

守护 spinlock。 eBPF Talk: spinlock 详解 当使用 spinlock 进行统计时 eBPF Talk: 正确地进行统计,必须要使用 bpf_spin_lock() 和 bpf_spin_unlock() 来保护 spinlock 变量: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 struct xdp_stat_item {

eBPF Talk: 改进 XDP 解析 TCP options

在 eBPF Talk: XDP 解析所有 TCP options 里,已经做到了使用 XDP 解析所有 TCP options 的功能。 不过,其中使用了 percpu map 在 XDP 和 freplace 之间传递 offset;那么,是否有办法将该 percpu map 优化掉

eBPF Talk: ringbuf 经验分享

最近在使用 ringbuf 的 bpf_ringbuf_reserve() 时踩了一个坑,记录一下。 ringbuf 简介 ringbuf 是 BPF 中能够取代 PERF_EVENT_ARRAY 的特殊 map 类型,提供了类似的 helpers: bpf_ringbuf_output(): 将数据写入 ringbuf。 bpf_ringbuf_reserve(): 为数据预留空间。 bpf_ringbuf_submit():

eBPF Talk: 给 x86 BPF JIT 做下优化

优化的地方如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c index 5159c7a229229..7c130001fbfe7 100644 --- a/arch/x86/net/bpf_jit_comp.c +++ b/arch/x86/net/bpf_jit_comp.c @@ -1234,13 +1234,11 @@ bool ex_handler_bpf(const struct exception_table_entry *x, struct pt_regs