BPF之巅:总览与导航

📑 目录

"BPF 让内核变成了可编程的。" —— Brendan Gregg


BPF之巅:洞悉Linux系统和应用性能 — 总览

书籍信息

项目内容
书名BPF Performance Tools: Linux System and Application Observability
作者Brendan Gregg(Netflix 资深性能架构师)
译者孙宇聪、吕宏利、刘晓舟
出版社电子工业出版社(2021年)
ISBN978-7-121-39972-5
页数816页
配套资源github.com/brendangregg/bpf-perf-tools-book

作者背景

Brendan Gregg —— BPF(eBPF)主要贡献者,BCC 和 bpftrace 两大前端框架的核心开发者与维护者。他开创了将 BPF 用于系统可观测性的先河,亲手开发了数十个基于 BPF 的性能分析工具。其他著作包括《性能之巅:洞悉系统、企业与云计算》。


全书知识结构

graph TD
    subgraph BPF之巅知识体系
        A[BPF基础] --> B[性能分析方法]
        B --> C[前端框架]
        C --> D[系统资源分析]
        C --> E[应用与安全]
        C --> F[虚拟化场景]
        
        A --> A1[第1章 引言]
        A --> A2[第2章 扩展版BPF]
        B --> B1[第3章 性能分析]
        C --> C1[第4章 BCC]
        C --> C2[第5章 bpftrace]
        D --> D1[第6章 CPU]
        D --> D2[第7章 内存]
        D --> D3[第8章 文件系统]
        D --> D4[第9章 磁盘I/O]
        D --> D5[第10章 网络]
        E --> E1[第11章 安全]
        E --> E2[第12章 编程语言]
        E --> E3[第13章 应用程序]
        E --> E4[第14章 内核]
        F --> F1[第15章 容器]
        F --> F2[第16章 虚拟机管理器]
        F --> F3[第17章 其他BPF性能工具]
    end
    
    style A fill:#e3f2fd
    style B fill:#fff3e0
    style C fill:#e8f5e9
    style D fill:#fce4ec
    style E fill:#f3e5f5
    style F fill:#e0f2f1

学习路径建议

路径一:速通实战派(适合有Linux基础的SRE/运维)

graph LR
    A[第3章 性能分析] --> B[第5章 bpftrace]
    B --> C[第6章 CPU]
    B --> D[第7章 内存]
    B --> E[第9章 磁盘I/O]
    B --> F[第10章 网络]
    C --> G[第18章 技巧FAQ]
    D --> G
    E --> G
    F --> G

目标:一周内掌握生产环境排查问题的 BPF 工具箱。

路径二:系统深入派(适合后端开发/内核工程师)

graph LR
    A[第1章 引言] --> B[第2章 扩展版BPF]
    B --> C[第4章 BCC]
    C --> D[第5章 bpftrace]
    D --> E[第6-10章 资源分析]
    E --> F[第12章 编程语言]
    E --> G[第14章 内核]
    F --> H[第13章 应用程序]
    G --> H

目标:理解 BPF 原理,能编写自定义工具,三个月完成。

路径三:云原生专项派(适合K8s/容器开发者)

graph LR
    A[第3章 性能分析] --> B[第5章 bpftrace]
    B --> C[第15章 容器]
    B --> D[第16章 虚拟机管理器]
    C --> E[第10章 网络]
    D --> E
    E --> F[第17章 其他工具]

目标:解决容器化环境的性能问题,两周完成。


章节速查表

章节核心主题关键工具适用场景
第1章BPF简介与历史-了解BPF是什么
第2章BPF技术机制bpftool理解底层原理
第3章性能分析方法Linux 60秒清单排查思路
第4章BCC框架funccount, stackcount, argdist编写复杂BPF程序
第5章bpftrace框架单行程序、脚本快速 ad-hoc 分析
第6章CPU分析profile, runqlat, cpudistCPU瓶颈、调度延迟
第7章内存分析memleak, swapin, vmtop内存泄漏、Swap问题
第8章文件系统ext4slower, vfsstatI/O延迟、缓存分析
第9章磁盘I/Obiolatency, biosnoop块设备性能
第10章网络tcpconnect, tcplife, tcptop连接问题、延迟分析
第11章安全setuids, offcputime入侵检测、审计
第12章语言分析javacalls, nodegcJava/Node/Python
第13章应用分析mysqld_qslower, pgslower数据库、自定义应用
第14章内核分析kprobe, tracepoint内核开发、驱动调试
第15章容器分析cgroup相关Docker/K8s
第16章虚拟化宿主机+访客分析KVM/Xen
第17章生态工具PCP, Grafana, kubectl-trace可视化、监控
第18章技巧FAQ-性能开销、符号解析

两本书的关系

graph LR
    A[《性能之巅》] -->|方法论 + 传统工具| C[生产环境排查]
    B[BPF之巅] -->|BPF工具 + 可编程| C
    
    style A fill:#e3f2fd
    style B fill:#e8f5e9
    style C fill:#fff3e0

建议阅读顺序:先读《性能之巅》建立方法论体系,再读 BPF 之巅获得具体工具能力。两书章节结构对应,可交叉阅读:

  • 《性能之巅》第3章 CPU ↔ BPF 之巅第6章 CPU
  • 《性能之巅》第4章 内存 ↔ BPF 之巅第7章 内存
  • 《性能之巅》第5章 磁盘 ↔ BPF 之巅第8-9章 文件系统+磁盘

关键概念速查

术语含义
BPFBerkeley Packet Filter,伯克利包过滤器,现指 eBPF(extended BPF)
eBPF扩展BPF,Linux内核中的通用执行引擎
BCCBPF Compiler Collection,Python/Lua/C++ 前端
bpftrace高级BPF追踪语言,类awk语法
kprobe内核动态插桩,可在任意内核函数入口/出口插入探针
tracepoint内核静态跟踪点,稳定ABI
uprobe用户态动态插桩
USDTUser Statically-Defined Tracing,用户态静态探针
火焰图可视化调用栈采样结果,宽=时间占比
off-CPU分析分析线程被阻塞的时间

"不要猜测,要测量。—— 但首先,你需要知道用什么工具测量。"

本系列将逐章拆解 BPF 之巅,每章包含:故事场景 → 原理图解 → 工具实践 → 总结提炼。现在开始。