出版社: 电子工业出版社
副标题: 洞悉Linux系统和应用性能
原作名: BPF Performance Tools:: Linux System and Application Observability
译者: 孙宇聪 / 吕宏利 / 刘晓舟
出版年: 2020-12-7
页数: 856
定价: 199.00
装帧: 平装
ISBN: 9787121399725
内容简介 · · · · · ·
《BPF之巅:洞悉Linux系统和应用性能》作为全面介绍 BPF 技术的图书,从 BPF 技术的起源到未来发展方向都有涵盖,不仅全面介绍了 BPF 的编程模型,还完整介绍了两个主要的 BPF 前端编程框架 — BCC 和 bpftrace,更给出了一系列实现范例,生动展示了 BPF技术的实际能力和未来发展前景。 本书的另一个关注方向是 Linux 系统性能和应用程序性能的调优。内容涉及系统性能调优的策略、工具与实践案例,不仅介绍了对应的 BPF 工具,还着重介绍了这些工具如何与 Linux 传统性能工具进行互补,这样读者可以有选择地进行使用。 本书介绍的工具小巧精致,并提供了简单易读的源代码,它们展示了 BPF 技术的魅力所在 :安全、高效、快捷的系统扩展力。未来 BPF 技术在 Linux 中的应用场景会越来越多,越来越重要。希望本书能在大家学...
《BPF之巅:洞悉Linux系统和应用性能》作为全面介绍 BPF 技术的图书,从 BPF 技术的起源到未来发展方向都有涵盖,不仅全面介绍了 BPF 的编程模型,还完整介绍了两个主要的 BPF 前端编程框架 — BCC 和 bpftrace,更给出了一系列实现范例,生动展示了 BPF技术的实际能力和未来发展前景。 本书的另一个关注方向是 Linux 系统性能和应用程序性能的调优。内容涉及系统性能调优的策略、工具与实践案例,不仅介绍了对应的 BPF 工具,还着重介绍了这些工具如何与 Linux 传统性能工具进行互补,这样读者可以有选择地进行使用。 本书介绍的工具小巧精致,并提供了简单易读的源代码,它们展示了 BPF 技术的魅力所在 :安全、高效、快捷的系统扩展力。未来 BPF 技术在 Linux 中的应用场景会越来越多,越来越重要。希望本书能在大家学习 BPF 技术并关注它的发展时提供帮助。
作者简介 · · · · · ·
Brendan Gregg(布兰登.格雷格):Netflix 高级性能工程师;Brendan Gregg 是 BPF(eBPF)的主要贡献者,他帮助开发和维护了两个主要的 BPF 前端框架,开创了 BPF 用于可观测性的先河,并创建了数十种基于 BPF 的性能分析工具。他编著的畅销书有《性能之巅:洞悉系统、企业与云计算》。
译者介绍
孙宇聪:现任 Facebook 运维工程师经理,曾在谷歌工作多年,任谷歌高级SRE(Senior Site Reliblity Engineer),Coding.net 前技术负责人,译有《SRE:Google运维解密》《架构整洁之道》等经典畅销技术图书。
吕宏利,资深SRE,现任职于谷歌基础架构部。之前曾负责谷歌搜索广告和内容广告系统运维工作,有多年分布式系统研发与运维经验。对运维工具平台建设、监控、应用性能跟踪及分析...
Brendan Gregg(布兰登.格雷格):Netflix 高级性能工程师;Brendan Gregg 是 BPF(eBPF)的主要贡献者,他帮助开发和维护了两个主要的 BPF 前端框架,开创了 BPF 用于可观测性的先河,并创建了数十种基于 BPF 的性能分析工具。他编著的畅销书有《性能之巅:洞悉系统、企业与云计算》。
译者介绍
孙宇聪:现任 Facebook 运维工程师经理,曾在谷歌工作多年,任谷歌高级SRE(Senior Site Reliblity Engineer),Coding.net 前技术负责人,译有《SRE:Google运维解密》《架构整洁之道》等经典畅销技术图书。
吕宏利,资深SRE,现任职于谷歌基础架构部。之前曾负责谷歌搜索广告和内容广告系统运维工作,有多年分布式系统研发与运维经验。对运维工具平台建设、监控、应用性能跟踪及分析、数据化运维等方面有深入的研究。
刘晓舟,毕业于北京大学计算机系,现供职于字节跳动公司系统部,任系统架构师。他在字节跳动主持构建了基于 eBPF 的大规模性能分析和网络监控诊断平台,闲暇时间也在相关开源社区提交代码。在加入字节跳动之前,他有 10 年国家部委电子政务和大数据研究经历。
目录 · · · · · ·
1.1 BPF和eBPF是什么 1
1.2 跟踪、嗅探、采样、剖析和可观测性分别是什么 2
1.3 BCC、bpftrace和IO Visor 3
1.4 初识BCC:快速上手 4
1.5 BPF跟踪的能见度 7
· · · · · · (更多)
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
· · · · · · (收起)
喜欢读"BPF之巅"的人也喜欢的电子书 · · · · · ·
喜欢读"BPF之巅"的人也喜欢 · · · · · ·
BPF之巅的话题 · · · · · · ( 全部 条 )



BPF之巅的书评 · · · · · · ( 全部 0 条 )
读书笔记 · · · · · ·
我来写笔记-
觋祉 (六根清净方为道,退步原来是向前)
在看《BPF 之巅》时 P198-cpu-负载平均值 中Gregg 如此评价: “uptime... 的负载平均值 其实并不是简单的数学平均值(mean),而是按指数衰减的累计值,它们的实际含义要比1分钟,5分钟,15分钟更广,这条消息实际展示了系统中的负载需求: 系统中处于 可运行状态的,以及 不可中断等待状态的任务的数量 ... 由于平均负载值通常包含了 不可中断任务(处于I/O和锁等待状态) 所以不能简单的将其理解为CPU利用率。这些值一般只能...2022-03-01 20:43:05
在看《BPF 之巅》时 P198-cpu-负载平均值 中Gregg 如此评价: “uptime... 的负载平均值 其实并不是简单的数学平均值(mean),而是按指数衰减的累计值,它们的实际含义要比1分钟,5分钟,15分钟更广,这条消息实际展示了系统中的负载需求: 系统中处于 可运行状态的,以及 不可中断等待状态的任务的数量 ... 由于平均负载值通常包含了 不可中断任务(处于I/O和锁等待状态) 所以不能简单的将其理解为CPU利用率。这些值一般只能用来进行负载趋势分析。 可以用例如 BPF 的offcputime(8) 工具来分析系统负载到底是由于cpu资源饱和导致的,还是不可中断状态的等待所导致的
回应 2022-03-01 20:43:05 -
月芽村的意中人 (一个人的月芽村。)
1. 下钻分析 2. use方法论 使用率 饱和度 错误 3. linux 60s分析法 · uptime · dmesg | tail · vmstat 1 · mpstat -P ALL 1 · pidstat 1 · iostat -xz 1 · free -m · sar -n DEV 1 ` sar -n TCP,ETCP 1 ` top 4.BCC工具检查清单 --- 是否有些可以使用kprobes实现。2021-02-21 23:10:26
-
月芽村的意中人 (一个人的月芽村。)
-
觋祉 (六根清净方为道,退步原来是向前)
在看《BPF 之巅》时 P198-cpu-负载平均值 中Gregg 如此评价: “uptime... 的负载平均值 其实并不是简单的数学平均值(mean),而是按指数衰减的累计值,它们的实际含义要比1分钟,5分钟,15分钟更广,这条消息实际展示了系统中的负载需求: 系统中处于 可运行状态的,以及 不可中断等待状态的任务的数量 ... 由于平均负载值通常包含了 不可中断任务(处于I/O和锁等待状态) 所以不能简单的将其理解为CPU利用率。这些值一般只能...2022-03-01 20:43:05
在看《BPF 之巅》时 P198-cpu-负载平均值 中Gregg 如此评价: “uptime... 的负载平均值 其实并不是简单的数学平均值(mean),而是按指数衰减的累计值,它们的实际含义要比1分钟,5分钟,15分钟更广,这条消息实际展示了系统中的负载需求: 系统中处于 可运行状态的,以及 不可中断等待状态的任务的数量 ... 由于平均负载值通常包含了 不可中断任务(处于I/O和锁等待状态) 所以不能简单的将其理解为CPU利用率。这些值一般只能用来进行负载趋势分析。 可以用例如 BPF 的offcputime(8) 工具来分析系统负载到底是由于cpu资源饱和导致的,还是不可中断状态的等待所导致的
回应 2022-03-01 20:43:05 -
月芽村的意中人 (一个人的月芽村。)
1. 下钻分析 2. use方法论 使用率 饱和度 错误 3. linux 60s分析法 · uptime · dmesg | tail · vmstat 1 · mpstat -P ALL 1 · pidstat 1 · iostat -xz 1 · free -m · sar -n DEV 1 ` sar -n TCP,ETCP 1 ` top 4.BCC工具检查清单 --- 是否有些可以使用kprobes实现。2021-02-21 23:10:26
-
月芽村的意中人 (一个人的月芽村。)
-
觋祉 (六根清净方为道,退步原来是向前)
在看《BPF 之巅》时 P198-cpu-负载平均值 中Gregg 如此评价: “uptime... 的负载平均值 其实并不是简单的数学平均值(mean),而是按指数衰减的累计值,它们的实际含义要比1分钟,5分钟,15分钟更广,这条消息实际展示了系统中的负载需求: 系统中处于 可运行状态的,以及 不可中断等待状态的任务的数量 ... 由于平均负载值通常包含了 不可中断任务(处于I/O和锁等待状态) 所以不能简单的将其理解为CPU利用率。这些值一般只能...2022-03-01 20:43:05
在看《BPF 之巅》时 P198-cpu-负载平均值 中Gregg 如此评价: “uptime... 的负载平均值 其实并不是简单的数学平均值(mean),而是按指数衰减的累计值,它们的实际含义要比1分钟,5分钟,15分钟更广,这条消息实际展示了系统中的负载需求: 系统中处于 可运行状态的,以及 不可中断等待状态的任务的数量 ... 由于平均负载值通常包含了 不可中断任务(处于I/O和锁等待状态) 所以不能简单的将其理解为CPU利用率。这些值一般只能用来进行负载趋势分析。 可以用例如 BPF 的offcputime(8) 工具来分析系统负载到底是由于cpu资源饱和导致的,还是不可中断状态的等待所导致的
回应 2022-03-01 20:43:05 -
月芽村的意中人 (一个人的月芽村。)
1. 下钻分析 2. use方法论 使用率 饱和度 错误 3. linux 60s分析法 · uptime · dmesg | tail · vmstat 1 · mpstat -P ALL 1 · pidstat 1 · iostat -xz 1 · free -m · sar -n DEV 1 ` sar -n TCP,ETCP 1 ` top 4.BCC工具检查清单 --- 是否有些可以使用kprobes实现。2021-02-21 23:10:26
-
月芽村的意中人 (一个人的月芽村。)
当前版本有售 · · · · · ·
-
限时抢
这本书的其他版本 · · · · · · ( 全部3 )
-
Addison Wesley (2019)8.9分 23人读过
-
电子工业出版社 (2021)暂无评分 1人读过
以下书单推荐 · · · · · · ( 全部 )
- 我的编程之路 (Yun)
- hoho (123)
- 公司图书馆说要买技术书 (李斯特杨)
- T (dhcn)
- 计算机科学 (小王)
谁读这本书?
二手市场
订阅关于BPF之巅的评论:
feed: rss 2.0
0 有用 mike.yang 2022-03-09 00:42:23
大部头的工具书。适合先快速翻一遍,日常工作时再查找对应的工具。
0 有用 sanwishe 2022-01-20 01:36:27
Linux的未来,值得仔细学习
1 有用 cool 2021-05-06 20:23:47
市面上参考不多的BPF的书籍,可以用来当做性能调试工具,但没有相关的开发知识,开发的资料比较少,建议读BCC或者内核相关的BPF源码。正在学习中。
0 有用 C55x 2021-01-16 22:57:26
工具书
0 有用 fuzhli 2021-01-06 16:37:32
long live Solaris!
0 有用 主治医师 2022-05-05 16:59:41
机翻的感觉太严重了,阅读起来感觉很别扭。
0 有用 mike.yang 2022-03-09 00:42:23
大部头的工具书。适合先快速翻一遍,日常工作时再查找对应的工具。
0 有用 嘻哈嘻哈 2022-02-15 23:50:58
三个月,终于读完了……
0 有用 sanwishe 2022-01-20 01:36:27
Linux的未来,值得仔细学习
2 有用 zzyong 2021-08-22 23:55:54
有点流水账