性能之巅(第2版)

性能之巅(第2版)

作者:[美] Brendan Gregg

出版社:电子工业出版社

出版年:2022-7

评分:9.3

ISBN:9787121435874

所属分类:行业好书

书刊介绍

内容简介

大型企业服务、云计算和虚拟计算系统都面临着严峻的性能挑战。如今,国际知名的性能专家 Brendan Gregg 将业界验证的方法、工具和指标融汇在一起,足以应对复杂环境的性能分析和调优工作。

《性能之巅(第2版):系统、企业与云可观测性》着力讲述 Linux 的性能,但所论述的性能问题适用于所有的操作系统。你将了解到系统是如何工作与执行的,还将学习到如何分析和改进系统及应用程序性能的方法。本书对第 1 版的内容做了大量的更新,这些更新包括但不限于 :近年来 Linux 内核各方面的变化对于资源性能的影响;云计算架构的主流演进方向;动态跟踪工具的新星(BPF 及其前后端技术);常见性能工具的使用方法的变化等。需要说明的是,在第 1 版中进行性能分析所用到的术语、概念和方法,在第 2 版中几乎没有变化,依然中肯适用,经得起时间的检验。

《性能之巅(第2版):系统、企业与云可观测性》的目标受众主要是系统管理员及企业与云计算环境的运维工程师。所有需要了解操作系统和应用程序性能的开发人员、数据库管理员和网站管理员都适合阅读本书。对于刚接触性能优化的学生等人员,本书还提供了包含Gregg 丰富教学经验的练习题。

作品目录

第1章 绪论....................................................................................................................1
1.1 系统性能 .............................................................................................................. 1
1.2 人员 ...................................................................................................................... 2
1.3 活动 ...................................................................................................................... 3
1.4 视角 ...................................................................................................................... 4
1.5 性能工程是充满挑战的 ...................................................................................... 5
1.5.1 主观性 ...................................................................................................... 5
1.5.2 复杂性 ...................................................................................................... 5
1.5.3 多个原因 .................................................................................................. 6
1.5.4 多个性能问题 .......................................................................................... 6
1.6 延时 ...................................................................................................................... 6
1.7 可观测性 .............................................................................................................. 7
1.7.1 计数器、统计数据和指标 ...................................................................... 8
1.7.2 剖析 ........................................................................................................ 10
1.7.3 跟踪 ........................................................................................................ 11
1.8 实验 .................................................................................................................... 13
1.9 云计算 ................................................................................................................ 14
1.10 方法 .................................................................................................................. 14
1.10.1 Linux 性能分析 60 秒 .......................................................................... 15
1.11 案例研究........................................................................................................... 15
1.11.1 缓慢的磁盘 .......................................................................................... 16
1.11.2 软件变更 .............................................................................................. 18
1.11.3 更多阅读 .............................................................................................. 19
1.12 参考资料 .......................................................................................................... 19
第2章 方法..................................................................................................................21
2.1 术语 .................................................................................................................... 22
2.2 模型 .................................................................................................................... 23
2.2.1 受测系统 ................................................................................................ 23
2.2.2 排队系统 ................................................................................................ 23
2.3 概念 .................................................................................................................... 24
2.3.1 延时 ........................................................................................................ 24
2.3.2 时间量级 ................................................................................................ 25
2.3.3 权衡 ........................................................................................................ 26
2.3.4 调优的影响 ............................................................................................ 27
2.3.5 合适的层级 ............................................................................................ 28
2.3.6 何时停止分析 ........................................................................................ 28
2.3.7 性能推荐的时间点 ................................................................................ 29
2.3.8 负载与架构 ............................................................................................ 30
2.3.9 扩展性 .................................................................................................... 30
2.3.10 指标 ...................................................................................................... 32
2.3.11 使用率 .................................................................................................. 33
2.3.12 饱和度 .................................................................................................. 34
2.3.13 剖析 ...................................................................................................... 35
2.3.14 缓存 ...................................................................................................... 35
2.3.15 已知的未知 .......................................................................................... 37
2.4 视角 .................................................................................................................... 37
2.4.1 资源分析 ................................................................................................ 38
2.4.2 工作负载分析 ........................................................................................ 39
2.5 方法 .................................................................................................................... 40
2.5.1 街灯讹方法 ............................................................................................ 42
2.5.2 随机变动讹方法 .................................................................................... 42
2.5.3 责怪他人讹方法 .................................................................................... 43
2.5.4 Ad Hoc 核对清单法 ............................................................................... 43
2.5.5 问题陈述法 ............................................................................................ 44
2.5.6 科学法 .................................................................................................... 44
2.5.7 诊断循环 ................................................................................................ 46
2.5.8 工具法 .................................................................................................... 46
2.5.9 USE 方法 ................................................................................................ 46
2.5.10 RED 方法 ............................................................................................. 52
2.5.11 工作负载特征归纳 .............................................................................. 53
2.5.12 向下钻取分析 ...................................................................................... 54
2.5.13 延时分析 .............................................................................................. 55
2.5.14 R 方法 ................................................................................................... 56
2.5.15 事件跟踪 .............................................................................................. 56
2.5.16 基础线统计 .......................................................................................... 58
2.5.17 静态性能调优 ...................................................................................... 59
2.5.18 缓存调优 .............................................................................................. 59
2.5.19 微基准测试 .......................................................................................... 60
2.5.20 性能箴言 .............................................................................................. 60
2.6 建模 .................................................................................................................... 61
2.6.1 企业与云 ................................................................................................ 61
2.6.2 可视化识别 ............................................................................................ 62
2.6.3 Amdahl 扩展定律 .................................................................................. 63
2.6.4 通用扩展定律 ........................................................................................ 64
2.6.5 排队理论 ................................................................................................ 65
2.7 容量规划 ............................................................................................................ 68
2.7.1 资源极限 ................................................................................................ 69
2.7.2 因素分析 ................................................................................................ 70
2.7.3 扩展方案 ................................................................................................ 71
2.8 统计 .................................................................................................................... 72
2.8.1 量化性能收益 ........................................................................................ 72
2.8.2 平均值 .................................................................................................... 73
2.8.3 标准方差、百分位数、中位数 ............................................................ 74
2.8.4 变异系数 ................................................................................................ 75
2.8.5 多重模态分布 ........................................................................................ 75
2.8.6 异常值 .................................................................................................... 76
2.9 监测 .................................................................................................................... 76
2.9.1 基于时间的规律 .................................................................................... 76
2.9.2 监测产品 ................................................................................................ 78
2.9.3 自启动以来的信息统计 ........................................................................ 78
2.10 可视化 .............................................................................................................. 78
2.10.1 线图 ...................................................................................................... 79
2.10.2 散点图 .................................................................................................. 80
2.10.3 热图 ...................................................................................................... 81
2.10.4 时间线图 .............................................................................................. 82
2.10.5 表面图 .................................................................................................. 83
2.10.6 可视化工具 .......................................................................................... 83
2.11 练习................................................................................................................... 84
2.12 参考资料 .......................................................................................................... 84
第3章 操作系统...........................................................................................................86
3.1 术语 .................................................................................................................... 87
3.2 背景 .................................................................................................................... 88
3.2.1 内核 ........................................................................................................ 88
3.2.2 内核态与用户态 .................................................................................... 90
3.2.3 系统调用 ................................................................................................ 91
3.2.4 中断 ........................................................................................................ 92
3.2.5 时钟和空闲 ............................................................................................ 96
3.2.6 进程 ........................................................................................................ 96
3.2.7 栈 ............................................................................................................ 99
3.2.8 虚拟内存 .............................................................................................. 100
3.2.9 调度器 .................................................................................................. 102
3.2.10 文件系统 ............................................................................................ 103
3.2.11 缓存 .................................................................................................... 105
3.2.12 网络 .................................................................................................... 106
3.2.13 设备驱动 ............................................................................................ 106
3.2.14 多处理器 ............................................................................................ 107
3.2.15 抢占 .................................................................................................... 107
3.2.16 资源管理 ............................................................................................ 107
3.2.17 可观测性 ............................................................................................ 108
3.3 内核 .................................................................................................................. 108
3.3.1 UNIX .................................................................................................... 109
3.3.2 BSD....................................................................................................... 110
3.3.3 Solaris ....................................................................................................111
3.4 Linux ..................................................................................................................111
3.4.1 Linux 内核开发 .................................................................................... 112
3.4.2 systemd ................................................................................................. 117
3.4.3 KPTI(meltdown) ............................................................................... 118
3.4.4 eBPF ..................................................................................................... 118
3.5 其他主题 .......................................................................................................... 119
3.5.1 PGO 内核 ............................................................................................. 119
3.5.2 unikernel ............................................................................................... 120
3.5.3 微内核和混合内核 .............................................................................. 120
3.5.4 分布式操作系统 .................................................................................. 121
3.6 内核比较 .......................................................................................................... 121
3.7 练习 .................................................................................................................. 122
3.8 参考资料 .......................................................................................................... 122
3.8.1 延伸阅读 .............................................................................................. 125
第4章 观测工具.........................................................................................................126
4.1 工具范围 .......................................................................................................... 127
4.1.1 静态性能工具 ...................................................................................... 127
4.1.2 危机处理工具 ...................................................................................... 128
4.2 工具类型 .......................................................................................................... 129
4.2.1 固定计数器 .......................................................................................... 130
4.2.2 剖析 ...................................................................................................... 131
4.2.3 跟踪 ...................................................................................................... 132
4.2.4 监测 ...................................................................................................... 133
4.3 监测来源 .......................................................................................................... 135
4.3.1 /proc ...................................................................................................... 137
4.3.2 /sys ........................................................................................................ 140
4.3.3 延时核算 .............................................................................................. 142
4.3.4 netlink ................................................................................................... 143
4.3.5 tracepoint .............................................................................................. 143
4.3.6 kprobes .................................................................................................. 148
4.3.7 uprobes .................................................................................................. 151
4.3.8 USDT .................................................................................................... 152
4.3.9 硬件计数器 .......................................................................................... 153
4.3.10 其他观测源 ........................................................................................ 156
4.4 sar ...................................................................................................................... 158
4.4.1 sar(1) 的覆盖范围 ................................................................................ 158
4.4.2 sar(1) 监测 ............................................................................................ 159
4.4.3 sar(1) 实时报告 .................................................................................... 162
4.4.4 sar(1) 文档 ............................................................................................ 163
4.5 跟踪工具 .......................................................................................................... 163
4.6 观测工具的观测 .............................................................................................. 164
4.7 练习 .................................................................................................................. 165
4.8 参考资料 .......................................................................................................... 166
第5章 应用程序.........................................................................................................168
5.1 应用程序基础 .................................................................................................. 168
5.1.1 目标 ...................................................................................................... 170
5.1.2 常见情况的优化 .................................................................................. 171
5.1.3 可观测性 .............................................................................................. 171
5.1.4 大 O 标记法 ......................................................................................... 172
5.2 应用程序性能技术 .......................................................................................... 173
5.2.1 选择 I/O 尺寸 ....................................................................................... 173
5.2.2 缓存 ...................................................................................................... 173
5.2.3 缓冲区 .................................................................................................. 174
5.2.4 轮询 ...................................................................................................... 174
5.2.5 并发和并行 .......................................................................................... 174
5.2.6 非阻塞 I/O ............................................................................................ 178
5.2.7 处理器绑定 .......................................................................................... 179
5.2.8 性能箴言 .............................................................................................. 179
5.3 编程语言 .......................................................................................................... 179
5.3.1 编译型语言 .......................................................................................... 180
5.3.2 解释型语言 .......................................................................................... 182
5.3.3 虚拟机 .................................................................................................. 182
5.3.4 垃圾回收 .............................................................................................. 182
5.4 方法 .................................................................................................................. 183
5.4.1 CPU 剖析.............................................................................................. 184
5.4.2 off-CPU 分析 ........................................................................................ 186
5.4.3 系统调用分析 ...................................................................................... 189
5.4.4 USE 方法 .............................................................................................. 190
5.4.5 线程状态分析 ...................................................................................... 191
5.4.6 锁分析 .................................................................................................. 195
5.4.7 静态性能调优 ...................................................................................... 196
5.4.8 分布式跟踪 .......................................................................................... 196
5.5 观测工具 .......................................................................................................... 197
5.5.1 perf ........................................................................................................ 198
5.5.2 profile .................................................................................................... 201
5.5.3 offcputime ............................................................................................. 202
5.5.4 strace ..................................................................................................... 203
5.5.5 execsnoop ............................................................................................. 205
5.5.6 syscount ................................................................................................ 206
5.5.7 bpftrace ................................................................................................. 207
5.6 明白了 .............................................................................................................. 212
5.6.1 缺少符号 .............................................................................................. 212
5.6.2 缺少栈 .................................................................................................. 213
5.7 练习 .................................................................................................................. 214
5.8 参考资料 .......................................................................................................... 216
第6章 CPU................................................................................................................218
6.1 术语 .................................................................................................................. 219
6.2 模型 .................................................................................................................. 220
6.2.1 CPU 架构.............................................................................................. 220
6.2.2 CPU 内存缓存...................................................................................... 220
6.2.3 CPU 运行队列...................................................................................... 221
6.3 概念 .................................................................................................................. 222
6.3.1 时钟频率 .............................................................................................. 222
6.3.2 指令 ...................................................................................................... 222
6.3.3 指令流水线 .......................................................................................... 223
6.3.4 指令宽度 .............................................................................................. 223
6.3.5 指令尺寸 .............................................................................................. 223
6.3.6 SMT ...................................................................................................... 224
6.3.7 IPC 和 CPI ............................................................................................ 224
6.3.8 使用率 .................................................................................................. 225
6.3.9 用户时间 / 内核时间 ........................................................................... 225
6.3.10 饱和度 ................................................................................................ 225
6.3.11 抢占 .................................................................................................... 226
6.3.12 优先级反转 ........................................................................................ 226
6.3.13 多进程和多线程 ................................................................................ 226
6.3.14 字长 .................................................................................................... 228
6.3.15 编译器优化 ........................................................................................ 228
6.4 架构 .................................................................................................................. 228
6.4.1 硬件 ...................................................................................................... 228
6.4.2 软件 ...................................................................................................... 238
6.5 方法 .................................................................................................................. 242
6.5.1 工具法 .................................................................................................. 242
6.5.2 USE 方法 .............................................................................................. 243
6.5.3 负载特征归纳 ...................................................................................... 243
6.5.4 剖析 ...................................................................................................... 245
6.5.5 周期分析 .............................................................................................. 248
6.5.6 性能监测 .............................................................................................. 248
6.5.7 静态性能调优 ...................................................................................... 249
6.5.8 优先级调优 .......................................................................................... 249
6.5.9 资源控制 .............................................................................................. 250
6.5.10 CPU 绑定............................................................................................ 250
6.5.11 微基准测试 ........................................................................................ 250
6.6 观测工具 .......................................................................................................... 251
6.6.1 uptime ................................................................................................... 252
6.6.2 vmstat .................................................................................................... 255
6.6.3 mpstat .................................................................................................... 255
6.6.4 sar .......................................................................................................... 256
6.6.5 ps ........................................................................................................... 257
6.6.6 top ......................................................................................................... 258
6.6.7 pidstat .................................................................................................... 259
6.6.8 time 和 ptime ........................................................................................ 260
6.6.9 turbostat ................................................................................................ 261
6.6.10 showboost ........................................................................................... 262
6.6.11 pmcarch ............................................................................................... 263
6.6.12 tlbstat................................................................................................... 263
6.6.13 perf ...................................................................................................... 264
6.6.14 profile .................................................................................................. 274
6.6.15 cpudist ................................................................................................. 276
6.6.16 runqlat ................................................................................................. 277
6.6.17 runqlen ................................................................................................ 278
6.6.18 softirqs ................................................................................................ 279
6.6.19 hardirqs ............................................................................................... 280
6.6.20 bpftrace ............................................................................................... 280
6.6.21 其他工具 ............................................................................................ 283
6.7 可视化 .............................................................................................................. 285
6.7.1 使用率热图 .......................................................................................... 286
6.7.2 亚秒级偏移量热图 ....................................

作者简介

Brendan Gregg是计算性能和云计算方面的行业专家。他是Netflix的高级性能架构师,从事性能设计、评估、分析和调优工作。他是多本技术图书的作者,包括《BPF之巅:洞悉Linux系统和应用性能》。他曾获得USENIX LISA系统管理的杰出成就奖,还曾担任内核工程师和性能负责人,并且是USENIX LISA 2018会议的项目联合主席。他开发了收录在多个操作系统中的性能工具,还开发了包括火焰图在内的用于性能分析的可视化工具和方法。

译者简介

徐章宁,目前就职于小红书,担任 SRE 专家工程师,负责混沌工程等云原生可观测性项目的研发。曾就职于百度上海研发中心和 EMC 中国研发中心,担任 SRE 运维工程师。对于云原生计算领域发生的一切变革抱有热忱的态度,对大型系统运维和性能调优有浓厚兴趣。

吴寒思,目前就职于 eBay 中国研发中心,担任软...

(展开全部)

精彩摘录

Thelatencyisthetimespentwaitingbeforeanoperationisperformed

——引自章节:2.3.1Latency


U=B/T

——引自章节:2.3.11Utilization

相关推荐

微信二维码