Linux 内核与 eBPF
观察内核,亲手加载 eBPF 程序
고급 · 课时 29 · 实验 9
课程大纲
用户空间与内核的边界
- 程序靠请求内核活着 reading
- 统计程序向内核请求了什么 lab
- 测验:用户空间与内核的边界 quiz
分享 CPU 的规则
- 使用率图上看不到的时间 reading
- 亲手改变 CPU 分享规则 lab
- 测验:分享 CPU 的规则 quiz
页缓存与 OOM
- MemFree 小并不是警报 reading
- 为什么缓存不会触发 OOM lab
- 测验:页缓存与 OOM quiz
用命名空间和 cgroup 搭的盒子
- 内核里没有叫“容器”的对象 reading
- 不用 Docker 搭一个容器 lab
- 测验:命名空间与 cgroup quiz
内核本来就有的测量工具
- 承诺的位置与任意位置 reading
- 打开内核里现成的测量工具 lab
- 测验:内核本来就有的测量工具 quiz
bpftrace 单行程序
- 在事件发生的地方计数 reading
- 用一行 eBPF 回答运维问题 lab
- 测验:bpftrace 单行程序 quiz
加载、挂载、校验器
- 校验器会走遍每一个分支 reading
- 逐行读懂校验器拒绝的理由 lab
- 测验:加载、挂载、校验器 quiz
libbpf 与 CO-RE
- 记录字段的名字,而不是偏移 reading
- 编译一次,在任何内核上运行 lab
- 测验:libbpf 与 CO-RE quiz
XDP 与 tc
- 在数据包变成套接字缓冲区之前 reading
- 在驱动前面计数并丢弃数据包 lab
- 测验:XDP 与 tc quiz
用于拦截的 BPF:seccomp 与 BPF LSM
- 观察的 BPF 与拦截的 BPF reading
- 测验:seccomp 与 BPF LSM quiz
参考文档
- 官方文档 · docs.kernel.org · index.html
- 官方文档 · docs.kernel.org · verifier.html
- 官方文档 · docs.kernel.org · cgroup v2.html
- 官方文档 · docs.kernel.org · ftrace.html
- 官方文档 · docs.kernel.org · kprobetrace.html
- 官方文档 · bpftrace.org · docs
- 官方文档 · libbpf.readthedocs.io · latest
- Cilium: BPF and XDP Reference Guide
- 官方文档 · docs.kernel.org · submitting patches.html