电子工业出版社有限公司店铺主页二维码
电子工业出版社有限公司
电子工业出版社有限公司有赞官方供货商,为客户提供一流的知识产品及服务。
微信扫描二维码,访问我们的微信店铺

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

143.30
运费: 免运费
BPF之巅:洞悉Linux系统和应用性能 商品图0
BPF之巅:洞悉Linux系统和应用性能 商品缩略图0

商品详情

书名:BPF之巅:洞悉Linux系统和应用性能
定价:199.0
ISBN:9787121399725
作者:(美)Brendan Gregg(布兰登.格雷格)
版次:第1版
出版时间:2020-11

内容提要:
基于BPF的性能优化工具提供了****的系统级和应用程序级的观察能力,使用这些工具可以优化性能、调试代码、增强安全性、降低成本。本书是使用这些观察工具的全面指南。本书作为全面介绍 BPF 技术的图书,从 BPF 技术的起源到未来发展方向都有涵盖,不仅全面介绍了 BPF 的编程模型,还完整介绍了两个主要的 BPF 前端编程框架 — BCC 和 bpftrace,更给出了一系列实现范例,全面展示了 BPF技术的实际能力和未来发展前景,以及使用BPF工具优化性能、修复问题、探索线上系统的内部情况。本书的另一个关注方向是 Linux 系统性能和应用程序性能的调优。本书全面介绍了系统性能调优的策略、工具与实践案例,不仅介绍了对应的 BPF 工具,还着重介绍了这些工具如何与 Linux 传统性能工具进行互补,这样读者可以有选择地进行使用。本书介绍的工具小巧精致,且包含了简单易读的源代码,这就是 BPF 技术的魅力所在 :安全、高效、快捷的系统扩展力。未来 BPF 技术在 Linux 中的应用场景会越来越多,越来越重要。希望本书能在大家学习这项技术并关注它的发展时提供一定的便利。本书是系统管理员、应用程序开发者、运维人员,以及其他IT从业者在企业内部或云上使用各种Linux发行版时都可参考的资料。



作者简介:
Netflix 高级性能工程师 Brendan Gregg 是 BPF(eBPF)的主要贡献者,他帮助开发和维护了两个主要的 BPF 前端框架,开创了 BPF 用于可观测性的先河,并创建了数十种基于 BPF 的性能分析工具。他编著的畅销书有《性能之巅:洞悉系统、企业与云计算》。
译者介绍孙宇聪:现任 Facebook 运维工程师经理,曾在谷歌工作多年,任谷歌高级SRE(Senior Site Reliblity Engineer),Coding.net 前技术负责人,译有《SRE:Google运维解密》《架构整洁之道》等经典畅销技术图书。吕宏利,资深SRE,现任职于谷歌基础架构部。之前曾负责谷歌搜索广告和内容广告系统运维工作,有多年分布式系统研发与运维经验。对运维工具平台建设、监控、应用性能跟踪及分析、数据化运维等方面有深入的研究。刘晓舟,毕业于北京大学计算机系,现供职于字节跳动公司系统部,任系统架构师。他在字节跳动主持构建了基于 eBPF 的大规模性能分析和网络监控诊断平台,闲暇时间也在相关开源社区提交代码。在加入字节跳动之前,他有 10 年国家部委电子政务和大数据研究经历。

目录:
第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.3.1 为什么性能工具需要 BPF 技术 ......................................................... 21
2.3.2 BPF 与内核模块的对比 ......................................................................23
2.3.3 编写 BPF 程序 .....................................................................................23
2.3.4 使用 BPF 查看指令集 :bpftool ..........................................................24
2.3.5 使用 bpftrace 查看 BPF 指令集 .......................................................... 32
2.3.6 BPF API ................................................................................................ 33
2.3.7 BPF 并发控制 ......................................................................................37
2.3.8 BPF sysfs 接口 ..................................................................................... 38
2.3.9 BPF 类型格式 ......................................................................................38
2.3.10 BPF CO-RE ........................................................................................ 39
2.3.11 BPF 的局限性 ..................................................................................... 40
2.3.12 BPF 扩展阅读资料 ............................................................................40
2.4 调用栈回溯 ........................................................................................................ 41
2.4.1 基于帧指针的调用栈回溯 ................................................................... 41
2.4.2 调试信息 ............................................................................................... 42
2.4.3 *后分支记录 ....................................................................................... 43
2.4.4 ORC ...................................................................................................... 43
2.4.5 符号 ....................................................................................................... 43
2.4.6 扩展阅读 ............................................................................................... 43
2.5 火焰图 ................................................................................................................ 44
2.5.1 调用栈信息 ........................................................................................... 44
2.5.2 对调用栈信息的剖析 ........................................................................... 44
2.5.3 火焰图 ................................................................................................... 45
2.5.4 火焰图的特性 ....................................................................................... 47
2.5.5 火焰图的变体 ....................................................................................... 48
2.6 事件源 ................................................................................................................ 48
2.7 kprobes ............................................................................................................... 49
2.7.1 kprobes 是如何工作的 ......................................................................... 49
2.7.2 kprobes 接口 ......................................................................................... 51
2.7.3 BPF 和 kprobes .....................................................................................51
2.7.4 关于 kprobes 的更多内容 .................................................................... 53
2.8 uprobes ............................................................................................................... 53
2.8.1 uprobes 是如何工作的 ......................................................................... 53
2.8.2 uprobes 接口 ......................................................................................... 55
2.8.3 BPF 与 uprobes .....................................................................................55
2.8.4 uprobes 的开销和未来的工作 ............................................................. 56
2.8.5 扩展阅读 ............................................................................................... 57
2.9 跟踪点 ................................................................................................................ 57
2.9.1 如何添加跟踪点 ................................................................................... 58
2.9.2 跟踪点的工作原理 ............................................................................... 59
2.9.3 跟踪点的接口 ....................................................................................... 60
2.9.4 跟踪点和 BPF ...................................................................................... 61
2.9.5 BPF 原始跟踪点 ..................................................................................62
2.9.6 扩展阅读 ............................................................................................... 62
2.10 USDT ............................................................................................................... 62
2.10.1 添加 USDT 探针 ................................................................................ 63
2.10.2 USDT 是如何工作的 ......................................................................... 65
2.10.3 BPF 与 USDT ..................................................................................... 66
2.10.4 USDT 的更多信息 ............................................................................. 66
2.11 动态USDT ........................................................................................................ 66
2.12 性能监控计数器 .............................................................................................. 68
2.12.1 PMC 的模式 .......................................................................................68
2.12.2 PEBS ................................................................................................... 69
2.12.3 云计算 ................................................................................................. 69
2.13 perf_events ....................................................................................................... 69
2.14 小结 .................................................................................................................. 70
第3章 性能分析...........................................................................................................71
3.1 概览 .................................................................................................................... 71
3.1.1 目标 ....................................................................................................... 71
3.1.2 分析工作 ............................................................................................... 72
3.1.3 多重性能问题 ....................................................................................... 73
3.2 性能分析方法论 ................................................................................................ 73
3.2.1 业务负载画像 ....................................................................................... 74
3.2.2 下钻分析 ............................................................................................... 75
3.2.3 USE 方法论 .......................................................................................... 76
3.2.4 检查清单法 ........................................................................................... 77
3.3 Linux 60秒分析 ................................................................................................. 77
3.3.1 uptime ................................................................................................... 77
3.3.2 dmesg | tail ............................................................................................ 78
3.3.3 vmstat 1 ................................................................................................. 78
3.3.4 mpstat -P ALL 1 ....................................................................................79
3.3.5 pidstat 1 ................................................................................................. 80
3.3.6 iostat -xz 1 ............................................................................................. 80
3.3.7 free -m ................................................................................................... 82
3.3.8 sar -n DEV 1 .........................................................................................82
3.3.9 sar -n TCP,ETCP 1 ................................................................................ 83
3.3.10 top ....................................................................................................... 83
3.4 BCC工具检查清单 ............................................................................................ 84
3.4.1 execsnoop .............................................................................................. 84
3.4.2 opensnoop ............................................................................................. 85
3.4.3 ext4slower ............................................................................................. 85
3.4.4 biolatency .............................................................................................. 86
3.4.5 biosnoop ................................................................................................ 86
3.4.6 cachestat ................................................................................................ 87
3.4.7 tcpconnect .............................................................................................87
3.4.8 tcpaccept ............................................................................................... 87
3.4.9 tcpretrans ............................................................................................... 88
3.4.10 runqlat ................................................................................................. 88
3.4.11 profile .................................................................................................. 89
3.5 小结 .................................................................................................................... 90
第4章 BCC..................................................................................................................91
4.1 BCC的组件 ........................................................................................................ 92
4.2 BCC的特性 ........................................................................................................ 92
4.2.1 BCC 的内核态特性 .............................................................................. 92
4.2.2 BCC 的用户态特性 .............................................................................. 93
4.3 安装BCC ............................................................................................................ 94
4.3.1 内核要求 ............................................................................................... 94
4.3.2 Ubuntu ................................................................................................... 94
4.3.3 RHEL .................................................................................................... 95
4.3.4 其他发行版 ........................................................................................... 95
4.4 BCC的工具 ........................................................................................................ 96
4.4.1 重点工具 ............................................................................................... 96
4.4.2 工具的特点 ........................................................................................... 97
4.4.3 单一用途工具 ....................................................................................... 98
4.4.4 多用途工具 ........................................................................................... 99
4.5 funccount .......................................................................................................... 100
4.5.1 funccount 的示例 ................................................................................ 101
4.5.2 funccount 的语法 ................................................................................ 103
4.5.3 funccount 的单行程序 ........................................................................ 103
4.5.4 funccount 的帮助信息 ........................................................................ 104
4.6 stackcount ......................................................................................................... 105
4.6.1 stackcount 的示例 .............................................................................. 105
4.6.2 stackcount 的火焰图 .......................................................................... 107
4.6.3 stackcount 残缺的调用栈 .................................................................. 108
4.6.4 stackcount 的语法 .............................................................................. 108
4.6.5 stackcount 的单行程序 ...................................................................... 109
4.6.6 stackcount 的帮助信息 ...................................................................... 109
4.7 trace .................................................................................................................. 110
4.7.1 trace 的示例 .........................................................................................111
4.7.2 trace 的语法 .........................................................................................111
4.7.3 trace 的单行程序 ................................................................................ 113
4.7.4 trace 的结构体 .................................................................................... 113
4.7.5 trace 调试文件描述符泄露问题 ........................................................ 114
4.7.6 trace 的帮助信息 ................................................................................ 115
4.8 argdist ............................................................................................................... 117
4.8.1 argdist 的语法 ..................................................................................... 118
4.8.2 argdist 的单行程序 ............................................................................. 119
4.8.3 argdist 的帮助信息 ............................................................................. 119
4.9 工具文档 .......................................................................................................... 121
4.9.1 man 帮助文档 :opensnoop ............................................................... 121
4.9.2 示例文件 :opensnoop ....................................................................... 125
4.10 开发BCC工具 ................................................................................................ 126
4.11 BCC的内部实现 ............................................................................................ 127
4.12 BCC的调试 .................................................................................................... 128
4.12.1 printf() 调试 ...................................................................................... 129
4.12.2 BCC 调试输出 ..................................................................................131
4.12.3 BCC 的调试标志位 .......................................................................... 132
4.12.4 bpflist ................................................................................................. 133
4.12.5 bpftool ............................................................................................... 134
4.12.6 dmesg ................................................................................................ 134
4.12.7 重置事件 ........................................................................................... 134
4.13 小结 ................................................................................................................ 136
第5章 bpftrace...........................................................................................................137
5.1 bpftrace的组件 ................................................................................................. 138
5.2 bpftrace的特性 ................................................................................................. 139
5.2.1 bpftrace 的事件源 .............................................................................. 139
5.2.2 bpftrace 的动作 .................................................................................. 139
5.2.3 bpftrace 的一般特性 .......................................................................... 140
5.2.4 bpftrace 与其他观测工具的比较 ...................................................... 140
5.3 bpftrace的安装 ................................................................................................. 141
5.3.1 内核版本要求 ..................................................................................... 141
5.3.2 Ubuntu ................................................................................................. 142
5.3.3 Fedora ................................................................................................. 142
5.3.4 构建后的安装步骤 ............................................................................. 143
5.3.5 其他发行版 ......................................................................................... 143
5.4 bpftrace工具 ..................................................................................................... 143
5.4.1 重点工具 ............................................................................................. 144
5.4.2 工具特征 ............................................................................................. 144
5.4.3 工具的运行 ......................................................................................... 145
5.5 bpftrace单行程序 ............................................................................................. 145
5.6 bpftrace的文档 ................................................................................................. 146
5.7 bpftrace编程 ..................................................................................................... 146
5.7.1 用法 ..................................................................................................... 147
5.7.2 程序结构 ............................................................................................. 148
5.7.3 注释 ..................................................................................................... 148
5.7.4 探针格式 ............................................................................................. 149
5.7.5 探针通配符 ......................................................................................... 149
5.7.6 过滤器 ................................................................................................. 150
5.7.7 动作 ..................................................................................................... 150
5.7.8 Hello, World! .......................................................................................151
5.7.9 函数 ..................................................................................................... 151
5.7.10 变量 ................................................................................................... 152
5.7.11 映射表函数 ....................................................................................... 153
5.7.12 对 vfs_read() 计时 ............................................................................ 154
5.8 bpftrace的帮助信息 ......................................................................................... 155
5.9 bpftrace的探针类型 ......................................................................................... 157
5.9.1 tracepoint ............................................................................................. 157
5.9.2 usdt ...................................................................................................... 159
5.9.3 kprobe 和 kretprobe ............................................................................160
5.9.4 uprobe 和 uretprobe ............................................................................ 160
5.9.5 software 和 hardware ..........................................................................161
5.9.6 profile 和 interval ................................................................................ 162
5.10 bpftrace的控制流 ........................................................................................... 163
5.10.1 过滤器 ............................................................................................... 163
5.10.2 三元操作符 ....................................................................................... 163
5.10.3 if 语句 ............................................................................................... 163
5.10.4 循环展开 ........................................................................................... 164
5.11 bpftrace的运算符 ...................................................................................
电子工业出版社有限公司店铺主页二维码
电子工业出版社有限公司
电子工业出版社有限公司有赞官方供货商,为客户提供一流的知识产品及服务。
扫描二维码,访问我们的微信店铺

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

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏