| 作者 |
| 孙宇聪 (美)Brendan Gregg(布兰登.格雷格) |
| 丛书名 |
| 出版社 |
| 电子工业出版社 |
| ISBN |
| 9787121399725 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 《BPF之巅:洞悉Linux系统和应用性能》作为全面介绍 BPF 技术的图书,从 BPF 技术的起源到未来发展方向都有涵盖,不仅全面介绍了 BPF 的编程模型,还完整介绍了两个主要的 BPF 前端编程框架 — BCC 和 bpftrace,更给出了一系列实现范例,生动展示了 BPF技术的实际能力和未来发展前景。 本书的另一个关注方向是 Linux 系统性能和应用程序性能的调优。内容涉及系统性能调优的策略、工具与实践案例,不仅介绍了对应的 BPF 工具,还着重介绍了这些工具如何与 Linux 传统性能工具进行互补,这样读者可以有选择地进行使用。 本书介绍的工具小巧精致,并提供了简单易读的源代码,它们展示了 BPF 技术的魅力所在 :安全、高效、快捷的系统扩展力。未来 BPF 技术在 Linux 中的应用场景会越来越多,越来越重要。希望本书能在大家学习 BPF 技术并关注它的发展时提供帮助。 |
| 目录 |
| 第1章 引 言1 1.1 BPF和eBPF是什么 1 1.2 跟踪、嗅探、采样、剖析和可观测性分别是什么 2 1.3 BCC、bpftrace和IO Visor 3 1.4 初识BCC:快速上手 4 1.5 BPF跟踪的能见度 7 1.6 动态插桩:kprobes和uprobes 8 1.7 静态插桩:tracepoint和USDT 9 1.8 初识bpftrace:跟踪open() 10 1.9 再回到BCC:跟踪open() 13 1.10 小结 15 第2章 技术背景16 2.1 图释BPF 16 2.2 BPF 17 2.3 扩展版BPF 18 2.4 调用栈回溯 41 2.5 火焰图 44 2.6 事件源 48 2.7 kprobes 49 2.8 uprobes 53 2.9 跟踪点 57 2.10 USDT 62 2.11 动态USDT 66 2.12 性能监控计数器 68 2.13 perf_events 69 2.14 小结 70 第3章 性能分析71 3.1 概览 71 3.2 性能分析方法论 73 3.3 Linux 60秒分析 77 3.4 BCC工具检查清单 84 3.5 小结 90 第4章 BCC91 4.1 BCC的组件 92 4.2 BCC的特性 92 4.3 安装BCC 94 4.4 BCC的工具 96 4.5 funccount 100 4.6 stackcount 105 4.7 trace 110 4.8 argdist 117 4.9 工具文档 121 4.10 开发BCC工具 126 4.11 BCC的内部实现 127 4.12 BCC的调试 128 4.13 小结 136 第5章 bpftrace137 5.1 bpftrace的组件 138 5.2 bpftrace的特性 139 5.3 bpftrace的安装 141 5.4 bpftrace工具 143 5.5 bpftrace单行程序 145 5.6 bpftrace的文档 146 5.7 bpftrace编程 146 5.8 bpftrace的帮助信息 155 5.9 bpftrace的探针类型 157 5.10 bpftrace的控制流 163 5.11 bpftrace的运算符 164 5.12 bpftrace的变量 165 5.13 bpftrace的函数 170 5.14 bpftrace映射表的操作函数 177 5.15 bpftrace的下一步工作 183 5.16 bpftrace的内部运作 185 5.17 bpftrace的调试 186 5.18 小结 190 第6章 CPU.191 6.1 背景知识 192 6.2 传统工具 197 6.3 BPF工具 210 6.4 BPF单行程序 251 6.5 可选练习 253 6.6 小结 254 第7章 内存.255 7.1 背景知识 256 7.2 传统工具 263 7.3 BPF工具 269 7.4 BPF单行程序 288 7.5 可选练习 289 7.6 小结 290 第8章 文件系统291 8.1 背景知识 292 8.2 传统工具 296 8.3 BPF工具 302 8.4 BPF单行程序 353 8.5 可选练习 359 8.6 小结 360 第9章 磁盘I/O361 9.1 背景知识 362 9.2 传统工具 367 9.3 BPF工具 372 9.4 BPF单行程序 406 9.5 可选练习 409 9.6 小结 410 第10章 网络411 10.1 背景知识 412 10.2 传统工具 422 10.3 BPF工具 433 10.4 BPF单行程序 507 10.5 可选练习 513 10.6 小结 515 第11章 安全516 11.1 背景知识 516 11.2 BPF工具 523 11.3 BPF单行程序 542 11.4 小结 544 第12章 编程语言.545 12.1 背景知识 545 12.2 C 551 12.3 Java 560 12.4 bash shell 601 12.5 其他语言 614 12.6 小结 619 第13章 应用程序.620 13.1 背景知识 621 13.2 BPF工具 625 13.3 BPF单行程序 662 13.4 BPF单行程序示范 664 13.5 小结 664 第14章 内核665 14.1 背景知识 666 14.2 分析策略 669 14.3 传统工具 670 14.4 BPF工具 675 14.5 BPF单行程序 697 14.6 BPF单行程序示范 699 14.7 挑战 700 14.8 小结 700 第15章 容器701 15.1 背景知识 701 15.1.1 BPF 的分析能力 703 15.1.2 挑战 703 15.1.3 分析策略 706 15.2 传统工具 706 15.2.1 从主机上分析 706 15.2.2 在容器内分析 707 15.2.3 systemd-cgtop 707 15.2.4 kubectl top 708 15.2.5 docker stats 708 15.2.6 /sys/fs/cgroups 709 15.2.7 perf 709 15.3 BPF工具 710 15.4 BPF单行程序 717 15.5 可选练习 717 15.6 小结 718 第16章 虚拟机管理器719 16.1 背景知识 719 16.2 传统工具 722 16.3 访客系统的BPF工具 723 16.4 宿主机BPF工具 732 16.5 小结 737 第17章 其他BPF性能工具738 17.1 Vector和Performance Co-Pilot(PCP) 738 17.2 Grafana和Performance Co-Pilot 747 17.3 Cloudflare eBPF Prometheus Exporter(配合Grafana) 750 17.4 kubectl-trace 752 17.5 其他工具 755 17.6 小结 755 第18章 建议、技巧和常见问题. 756 18.1 典型事件的频率和额外开销 756 18.2 以49Hz或99Hz为采样频率 760 18.3 黄猪和灰鼠 760 18.4 开发目标软件 762 18.5 学习系统调用 763 18.6 保持简单 764 18.7 事件缺失 764 18.8 调用栈缺失 766 18.9 打印时符号缺失(函数名称) 767 18.10 跟踪时函数缺失 768 18.11 反馈回路 769 18.12 被丢掉的事件 769 附录A bpftrace单行程序770 附录B bpftrace备忘单775 附录C BCC工具的开发778 附录D C.BPF. 793 附录E BPF指令812 |