2026-06-12 | kernel · ebpf | #ebpf #libbpf #skeleton #elf #auto-attach #ring-buffer #bpf-loader #bpftool #co-re
深入 libbpf 的加载生命周期:bpf_object__open() 的 ELF 解析、bpf_object__load() 的程序批量加载与 map 创建、map pinning 与跨进程复用、skeleton 自动生成器、SEC() 注解解析、auto-attach 的链路跟踪、ring_buffer__new() 的 mmap 消费者模式。
2026-06-12 | kernel · ebpf | #ebpf #btf #type-system #co-re #pahole #btf_dedup #func-info #line-info #linux-kernel
从 BTF 的二进制编码格式(btf_header + type entries + string table)出发,讲清 BTF 如何编码基本类型、结构体、联合体、函数原型与 typedef——BTF.ext 节的 func_info/line_info 记录,以及内核 pahole 的 BTF 生成与去重算法 btf_dedup。
2026-06-12 | kernel · ebpf | #ebpf #co-re #relocation #btf #libbpf #preserve_access_index #clang #bpf_core_read #linux-kernel
从 clang 内置函数 __builtin_preserve_access_index 出发,追踪 BPF_CORE_READ 等宏如何生成 BTF.ext CO-RE 重定位记录,再到 libbpf 加载时 bpf_core_apply_relo() 根据目标内核 BTF 计算正确字段偏移量并修补 BPF 指令——可移植 BPF 的核心引擎。
2026-06-12 | kernel · ebpf | #ebpf #libbpf #co-re #ring-buffer #map-pinning #verifier #agent #linux-kernel
把 01--17 的知识串成一条实践线——从 libbpf skeleton 写第一个 BPF 程序、加载到内核、用 ring buffer 回传事件、用 CO-RE 实现跨内核版本兼容、map pinning 实现热升级、配上半自动化的 verifier 错误排障流程——构建一个麻雀虽小五脏俱全的 eBPF 可观测 Agent。
2026-06-12 | kernel · ebpf | #ebpf #bpf-verifier #bpf-jit #btf #co-re #libbpf #xdp #bpf-maps #sched-ext #fentry #trampoline #linux-kernel
eBPF 内核虚拟机内部实现系统讲解:BPF 指令集与寄存器机器、验证器的抽象解释与状态裁剪、JIT 编译器后端、Map 各类型的并发与内存模型、helper 函数注册与类型检查、BTF 格式规范与 CO-RE 重定位引擎、libbpf 加载器工程、fentry/fexit 蹦床机制、sched_ext 调度器内核接口。面向想读懂 eBPF 内核源码、写生产级 BPF 程序的系统工程师。
2026-04-22 | architecture · observability | #ebpf #bcc #bpftrace #libbpf #co-re #btf #kprobe #uprobe #tracepoint #pixie #deepflow #observability #linux-kernel
eBPF 如何实现零侵入、内核级、低开销的可观测性:从 kprobe/uprobe/tracepoint/fentry 钩子机制,到 bcc 工具集、bpftrace 脚本语言、libbpf+CO-RE 可移植编程,再到 Pixie、DeepFlow、Grafana Beyla 等商业化工具,结合内核版本兼容性与生产部署实战。
2026-06-19 | os | #ebpf #bpf-verifier #jit #btf #co-re
BPF 为什么能成为 Linux 的第二用户态?verifier、JIT、map 家族、BTF、CO-RE、BPF_LSM、sched_ext——本文讲 eBPF 的内核侧机制。