内容简介 · · · · · ·
大型企业服务、云计算和虚拟计算系统都面临着严峻的性能挑战。如今,国际知名的性能专家布兰登·格雷格将业界验证的方法、工具和指标融汇在一起,足以应对复杂环境的性能分析和调优工作。
《性能之巅:洞悉系统、企业与云计算(第2版)(英文版)》着力讲述 Linux 的性能,但所论述的性能问题适用于所有的操作系统。你将了解到系统是如何工作与执行的,还将学习到分析和改进系统及应用程序性能的方法。
《性能之巅:洞悉系统、企业与云计算(第2版)(英文版)》对第 1 版的内容做了大量的更新,这些更新包括但不限于:近年来 Linux 内核各方面的变化对于资源性能的影响;云计算架构的主流演进方向;动态跟踪工具的新星(BPF 及其前后端技术);常见性能工具使用方法的变化等。
需要说明的是,在第 1 版中进行性能分析所用到的术语、概念和方法,在第 2 版中几乎没有变化,依然中肯适...
大型企业服务、云计算和虚拟计算系统都面临着严峻的性能挑战。如今,国际知名的性能专家布兰登·格雷格将业界验证的方法、工具和指标融汇在一起,足以应对复杂环境的性能分析和调优工作。
《性能之巅:洞悉系统、企业与云计算(第2版)(英文版)》着力讲述 Linux 的性能,但所论述的性能问题适用于所有的操作系统。你将了解到系统是如何工作与执行的,还将学习到分析和改进系统及应用程序性能的方法。
《性能之巅:洞悉系统、企业与云计算(第2版)(英文版)》对第 1 版的内容做了大量的更新,这些更新包括但不限于:近年来 Linux 内核各方面的变化对于资源性能的影响;云计算架构的主流演进方向;动态跟踪工具的新星(BPF 及其前后端技术);常见性能工具使用方法的变化等。
需要说明的是,在第 1 版中进行性能分析所用到的术语、概念和方法,在第 2 版中几乎没有变化,依然中肯适用,经得起时间的检验。
目标读者:
《性能之巅:洞悉系统、企业与云计算(第2版)(英文版)》的目标受众主要是系统管理员及企业与云计算环境的运维工程师。所有需要了解操作系统和应用程序性能的开发人员、数据库管理员和网站管理员都适合阅读本书。对于刚接触性能优化的学生等人员,本书还提供了包含格雷格丰富教学经验的练习题。
作者简介 · · · · · ·
布兰登·格雷格是计算性能和云计算方面的行业专家。他是 Netflix 的高级性能架构 师,从事性能设计、评估、分析和调整工作。他是多本技术图书的作者,包括《BPF 之 巅》,他获得了 USENIX LISA 系统管理杰出成就奖。他还担任过内核工程师、性能负责 人和专业技术培训师,并曾担任 USENIX LISA 2018 会议的项目联合主席。他开发了可 用于多个操作系统的性能工具,以及包括火焰图在内的性能分析的可视化工具与方法。
目录 · · · · · ·
1.1 系统性能 ............................................................................................................ 35
1.2 人员 .................................................................................................................... 36
1.3 活动 .................................................................................................................... 37
1.4 视角 .................................................................................................................... 38
1.5 性能工程是充满挑战的 .................................................................................... 39
· · · · · · (更多)
1.1 系统性能 ............................................................................................................ 35
1.2 人员 .................................................................................................................... 36
1.3 活动 .................................................................................................................... 37
1.4 视角 .................................................................................................................... 38
1.5 性能工程是充满挑战的 .................................................................................... 39
1.5.1 主观性 .................................................................................................... 39
1.5.2 复杂性 .................................................................................................... 39
1.5.3 多个原因 ................................................................................................ 40
1.5.4 多个性能问题 ........................................................................................ 40
1.6 延时 .................................................................................................................... 40
1.7 可观测性 ............................................................................................................ 41
1.7.1 计数器、统计数据和指标 .................................................................... 42
1.7.2 剖析 ........................................................................................................ 44
1.7.3 跟踪 ........................................................................................................ 45
1.8 实验 .................................................................................................................... 47
1.9 云计算 ................................................................................................................ 48
1.10 方法 .................................................................................................................. 49
1.10.1 Linux 性能分析 60 秒 .......................................................................... 49
1.11 案例研究........................................................................................................... 50
1.11.1 缓慢的磁盘 .......................................................................................... 50
1.11.2 软件变更 .............................................................................................. 52
1.11.3 更多阅读 .............................................................................................. 53
1.12 参考资料 .......................................................................................................... 53
第2章 方法..................................................................................................................55
2.1 术语 .................................................................................................................... 56
2.2 模型 .................................................................................................................... 57
2.2.1 受测系统 ................................................................................................ 57
2.2.2 排队系统 ................................................................................................ 57
2.3 概念 .................................................................................................................... 58
2.3.1 延时 ........................................................................................................ 58
2.3.2 时间量级 ................................................................................................ 59
2.3.3 权衡 ........................................................................................................ 60
2.3.4 调优的影响 ............................................................................................ 61
2.3.5 合适的层级 ............................................................................................ 62
2.3.6 何时停止分析 ........................................................................................ 63
2.3.7 性能推荐的时间点 ................................................................................ 63
2.3.8 负载与架构 ............................................................................................ 64
2.3.9 扩展性 .................................................................................................... 65
2.3.10 指标 ...................................................................................................... 66
2.3.11 使用率 .................................................................................................. 67
2.3.12 饱和度 .................................................................................................. 68
2.3.13 剖析 ...................................................................................................... 69
2.3.14 缓存 ...................................................................................................... 69
2.3.15 已知的未知 .......................................................................................... 71
2.4 视角 .................................................................................................................... 71
2.4.1 资源分析 ................................................................................................ 72
2.4.2 工作负载分析 ........................................................................................ 73
2.5 方法 .................................................................................................................... 74
2.5.1 街灯讹方法 ............................................................................................ 76
2.5.2 随机变动讹方法 .................................................................................... 76
2.5.3 责怪他人讹方法 .................................................................................... 77
2.5.4 Ad Hoc 核对清单法 ............................................................................... 77
2.5.5 问题陈述法 ............................................................................................ 78
2.5.6 科学法 .................................................................................................... 78
2.5.7 诊断循环 ................................................................................................ 80
2.5.8 工具法 .................................................................................................... 80
2.5.9 USE 方法 ................................................................................................ 81
2.5.10 RED 方法 ............................................................................................. 87
2.5.11 工作负载特征归纳 .............................................................................. 88
2.5.12 向下钻取分析 ...................................................................................... 89
2.5.13 延时分析 .............................................................................................. 90
2.5.14 R 方法 ................................................................................................... 91
2.5.15 事件跟踪 .............................................................................................. 91
2.5.16 基础线统计 .......................................................................................... 93
2.5.17 静态性能调优 ...................................................................................... 93
2.5.18 缓存调优 .............................................................................................. 94
2.5.19 微基准测试 .......................................................................................... 94
2.5.20 性能箴言 .............................................................................................. 95
2.6 建模 .................................................................................................................... 96
2.6.1 企业与云 ................................................................................................ 96
2.6.2 可视化识别 ............................................................................................ 96
2.6.3 Amdahl 扩展定律 .................................................................................. 98
2.6.4 通用扩展定律 ........................................................................................ 99
2.6.5 排队理论 .............................................................................................. 100
2.7 容量规划 .......................................................................................................... 103
2.7.1 资源极限 .............................................................................................. 104
2.7.2 因素分析 .............................................................................................. 105
2.7.3 扩展方案 .............................................................................................. 106
2.8 统计 .................................................................................................................. 107
2.8.1 量化性能收益 ...................................................................................... 107
2.8.2 平均值 .................................................................................................. 108
2.8.3 标准方差、百分位数、中位数 .......................................................... 109
2.8.4 变异系数 .............................................................................................. 110
2.8.5 多重模态分布 ...................................................................................... 110
2.8.6 异常值 ...................................................................................................111
2.9 监测 ...................................................................................................................111
2.9.1 基于时间的规律 ...................................................................................111
2.9.2 监测产品 .............................................................................................. 113
2.9.3 自启动以来的信息统计 ...................................................................... 113
2.10 可视化 ............................................................................................................ 113
2.10.1 线图 .................................................................................................... 114
2.10.2 散点图 ................................................................................................ 115
2.10.3 热图 .................................................................................................... 116
2.10.4 时间线图 ............................................................................................ 117
2.10.5 表面图 ................................................................................................ 118
2.10.6 可视化工具 ........................................................................................ 119
2.11 练习................................................................................................................. 119
2.12 参考资料 ........................................................................................................ 120
第3章 操作系统.........................................................................................................123
3.1 术语 .................................................................................................................. 124
3.2 背景 .................................................................................................................. 125
3.2.1 内核 ...................................................................................................... 125
3.2.2 内核态与用户态 .................................................................................. 127
3.2.3 系统调用 .............................................................................................. 128
3.2.4 中断 ...................................................................................................... 130
3.2.5 时钟和空闲 .......................................................................................... 133
3.2.6 进程 ...................................................................................................... 133
3.2.7 栈 .......................................................................................................... 136
3.2.8 虚拟内存 .............................................................................................. 138
3.2.9 调度器 .................................................................................................. 139
3.2.10 文件系统 ............................................................................................ 140
3.2.11 缓存 .................................................................................................... 142
3.2.12 网络 .................................................................................................... 143
3.2.13 设备驱动 ............................................................................................ 143
3.2.14 多处理器 ............................................................................................ 144
3.2.15 抢占 .................................................................................................... 144
3.2.16 资源管理 ............................................................................................ 144
3.2.17 可观测性 ............................................................................................ 145
3.3 内核 .................................................................................................................. 145
3.3.1 Unix ...................................................................................................... 146
3.3.2 BSD....................................................................................................... 147
3.3.3 Solaris ................................................................................................... 148
3.4 Linux ................................................................................................................. 148
3.4.1 Linux 内核开发 .................................................................................... 149
3.4.2 systemd ................................................................................................. 154
3.4.3 KPTI(meltdown) ............................................................................... 155
3.4.4 Extended BPF ....................................................................................... 155
3.5 其他主题 .......................................................................................................... 156
3.5.1 PGO 内核 ............................................................................................. 156
3.5.2 Unikernels ............................................................................................. 157
3.5.3 微内核和混合内核 .............................................................................. 157
3.5.4 分布式操作系统 .................................................................................. 157
3.6 内核比较 .......................................................................................................... 158
3.7 练习 .................................................................................................................. 158
3.8 参考资料 .......................................................................................................... 159
3.8.1 延伸阅读 .............................................................................................. 161
第4章 观测工具.........................................................................................................163
4.1 工具范围 .......................................................................................................... 164
4.1.1 静态性能工具 ...................................................................................... 164
4.1.2 危机处理工具 ...................................................................................... 165
4.2 工具类型 .......................................................................................................... 167
4.2.1 固定计数器 .......................................................................................... 167
4.2.2 剖析 ...................................................................................................... 169
4.2.3 跟踪 ...................................................................................................... 170
4.2.4 监测 ...................................................................................................... 171
4.3 监测来源 .......................................................................................................... 172
4.3.1 /proc ...................................................................................................... 174
4.3.2 /sys ........................................................................................................ 177
4.3.3 延时核算 .............................................................................................. 179
4.3.4 netlink ................................................................................................... 179
4.3.5 Tracepoints ............................................................................................ 180
4.3.6 kprobes .................................................................................................. 185
4.3.7 uprobes .................................................................................................. 187
4.3.8 USDT .................................................................................................... 189
4.3.9 硬件计数器 .......................................................................................... 190
4.3.10 其他观测源 ........................................................................................ 193
4.4 sar ...................................................................................................................... 194
4.4.1 sar(1) 的覆盖范围 ................................................................................ 195
4.4.2 sar(1) 监测 ............................................................................................ 195
4.4.3 sar(1) 实时报告 .................................................................................... 199
4.4.4 sar(1) 文档 ............................................................................................ 199
4.5 跟踪工具 .......................................................................................................... 200
4.6 观测工具的观测 .............................................................................................. 201
4.7 练习 .................................................................................................................. 202
4.8 参考资料 .......................................................................................................... 202
第5章 应用程序.........................................................................................................205
5.1 应用程序基础 .................................................................................................. 206
5.1.1 目标 ...................................................................................................... 207
5.1.2 常见情况的优化 .................................................................................. 208
5.1.3 可观测性 .............................................................................................. 208
5.1.4 大 O 标记法 ......................................................................................... 209
5.2 应用程序性能技术 .......................................................................................... 210
5.2.1 选择 I/O 尺寸 ....................................................................................... 210
5.2.2 缓存 ...................................................................................................... 210
5.2.3 缓冲区 .................................................................................................. 211
5.2.4 轮询 ...................................................................................................... 211
5.2.5 并发和并行 .......................................................................................... 211
5.2.6 非阻塞 I/O ............................................................................................ 215
5.2.7 处理器绑定 .......................................................................................... 215
5.2.8 性能箴言 .............................................................................................. 216
5.3 编程语言 .......................................................................................................... 216
5.3.1 编译型语言 .......................................................................................... 217
5.3.2 解释型语言 .......................................................................................... 218
5.3.3 虚拟机 .................................................................................................. 219
5.3.4 垃圾回收 .............................................................................................. 219
5.4 方法 .................................................................................................................. 220
5.4.1 CPU 剖析.............................................................................................. 221
5.4.2 off-CPU 分析 ........................................................................................ 223
5.4.3 系统调用分析 ...................................................................................... 226
5.4.4 USE 方法 .............................................................................................. 227
5.4.5 线程状态分析 ...................................................................................... 227
5.4.6 锁分析 .................................................................................................. 232
5.4.7 静态性能调优 ...................................................................................... 232
5.4.8 分布式跟踪 .......................................................................................... 233
5.5 观测工具 .......................................................................................................... 233
5.5.1 perf ........................................................................................................ 234
5.5.2 profifile .................................................................................................... 237
5.5.3 offcputime ............................................................................................. 238
5.5.4 strace ..................................................................................................... 239
5.5.5 execsnoop ............................................................................................. 241
5.5.6 syscount ................................................................................................ 242
5.5.7 bpftrace ................................................................................................. 243
5.6 明白了 .............................................................................................................. 247
5.6.1 缺少符号 .............................................................................................. 248
5.6.2 缺少栈 .................................................................................................. 249
5.7 练习 .................................................................................................................. 250
5.8 参考资料 .......................................................................................................... 251
第6章 CPU................................................................................................................253
6.1 术语 .................................................................................................................. 254
6.2 模型 .................................................................................................................. 255
6.2.1 CPU 架构.............................................................................................. 255
6.2.2 CPU 内存缓存...................................................................................... 255
6.2.3 CPU 运行队列...................................................................................... 256
6.3 概念 .................................................................................................................. 257
6.3.1 时钟频率 .............................................................................................. 257
6.3.2 指令 ...................................................................................................... 257
6.3.3 指令流水线 .......................................................................................... 258
6.3.4 指令宽度 .............................................................................................. 258
6.3.5 指令尺寸 .............................................................................................. 258
6.3.6 SMT ...................................................................................................... 259
6.3.7 IPC 和 CPI ............................................................................................ 259
6.3.8 使用率 .................................................................................................. 260
6.3.9 用户时间 / 内核时间 ........................................................................... 260
6.3.10 饱和度 ................................................................................................ 260
6.3.11 抢占 .................................................................................................... 261
6.3.12 优先级反转 ........................................................................................ 261
6.3.13 多进程和多线程 ................................................................................ 261
6.3.14 字长 .................................................................................................... 263
6.3.15 编译器优化 ........................................................................................ 263
6.4 架构 .................................................................................................................. 263
6.4.1 硬件 ...................................................................................................... 264
6.4.2 软件 ...................................................................................................... 275
6.5 方法 .................................................................................................................. 278
6.5.1 工具法 .................................................................................................. 279
6.5.2 USE 方法 .............................................................................................. 279
6.5.3 负载特征归纳 ...................................................................................... 280
6.5.4 剖析 ...................................................................................................... 281
6.5.5 周期分析 .............................................................................................. 285
6.5.6 性能监测 .............................................................................................. 285
6.5.7 静态性能调优 ...................................................................................... 286
6.5.8 优先级调优 .......................................................................................... 286
6.5.9 资源控制 .............................................................................................. 287
6.5.10 CPU 绑定............................................................................................ 287
6.5.11 微基准测试 ........................................................................................ 287
6.6 观测工具 .......................................................................................................... 288
6.6.1 uptime ................................................................................................... 289
6.6.2 vmstat .................................................................................................... 292
6.6.3 mpstat .................................................................................................... 293
6.6.4 sar .......................................................................................................... 294
6.6.5 ps ........................................................................................................... 294
6.6.6 top ......................................................................................................... 295
6.6.7 pidstat .................................................................................................... 296
6.6.8 time 和 ptime ........................................................................................ 297
6.6.9 turbostat ................................................................................................ 298
6.6.10 showboost ........................................................................................... 299
6.6.11 pmcarch ............................................................................................... 299
6.6.12 tlbstat................................................................................................... 300
6.6.13 perf ...................................................................................................... 301
6.6.14 profifile .................................................................................................. 311
6.6.15 cpudist ................................................................................................. 312
6.6.16 runqlat ................................................................................................. 313
6.6.17 runqlen ................................................................................................ 314
6.6.18 softirqs ................................................................................................ 315
6.6.19 hardirqs ............................................................................................... 316
6.6.20 bpftrace ............................................................................................... 316
6.6.21 其他工具 ............................................................................................ 319
6.7 可视化 .............................................................................................................. 322
6.7.1 使用率热图 .......................................................................................... 322
6.7.2 亚秒级偏移量热图 .............................................................................. 323
6.7.3 火焰图 .................................................................................................. 323
6.7.4 FlameScope........................................................................................... 326
6.8 实验 .................................................................................................................. 327
6.8.1 Ad Hoc .................................................................................................. 327
6.8.2 SysBench .............................................................................................. 328
6.9 调优 .................................................................................................................. 328
6.9.1 编译器选项 .......................................................................................... 329
6.9.2 调度优先级和调度类 .......................................................................... 329
6.9.3 调度器选项 .......................................................................................... 329
6.9.4 调节调速器 .......................................................................................... 331
6.9.5 能耗状态 .............................................................................................. 331
6.9.6 CPU 绑定.............................................................................................. 331
6.9.7 独占 CPU 组......................................................................................... 332
6.9.8 资源控制 .............................................................................................. 332
6.9.9 安全启动选项 ...................................................................................... 332
6.9.10 处理器选项(BIOS 调优) ................................................................ 333
6.10 练习 ................................................................................................................ 333
6.11 参考资料......................................................................................................... 334
第7章 内存................................................................................................................337
7.1 术语 .................................................................................................................. 338
7.2 概念 .................................................................................................................. 339
7.2.1 虚拟内存 .............................................................................................. 339
7.2.2 换页 ...................................................................................................... 340
7.2.3 按需换页 .............................................................................................. 341
7.2.4 过度提交 .............................................................................................. 342
7.2.5 进程交换 .............................................................................................. 342
7.2.6 文件系统缓存用量 .............................................................................. 343
7.2.7 使用率和饱和度 .................................................................................. 343
7.2.8 分配器 .................................................................................................. 343
7.2.9 共享内存 .............................................................................................. 344
7.2.10 工作集大小 ........................................................................................ 344
7.2.11 字长 .................................................................................................... 344
7.3 架构 .................................................................................................................. 345
7.3.1 硬件 ...................................................................................................... 345
7.3.2 软件 ...................................................................................................... 349
7.3.3 进程虚拟地址空间 .............................................................................. 353
7.4 方法 .................................................................................................................. 357
7.4.1 工具法 .................................................................................................. 357
7.4.2 USE 方法 .............................................................................................. 358
7.4.3 描述使用情况 ...................................................................................... 359
7.4.4 周期分析 .............................................................................................. 360
7.4.5 性能监测 .............................................................................................. 360
7.4.6 泄漏检测 .............................................................................................. 360
7.4.7 静态性能调优 ...................................................................................... 361
7.4.8 资源控制 .............................................................................................. 362
7.4.9 微基准测试 .......................................................................................... 362
7.4.10 内存收缩 ............................................................................................ 362
7.5 观测工具 .......................................................................................................... 362
7.5.1 vmstat .................................................................................................... 363
7.5.2 PSI......................................................................................................... 364
7.5.3 swapon .................................................................................................. 365
7.5.4 sar .......................................................................................................... 365
7.5.5 slabtop ................................................................................................... 367
7.5.6 numastat ................................................................................................ 368
7.5.7 ps ........................................................................................................... 369
7.5.8 top ......................................................................................................... 370
7.5.9 pmap ..................................................................................................... 371
7.5.10 perf ...................................................................................................... 372
7.5.11 drsnoop ................................................................................................ 376
7.5.12 wss ...................................................................................................... 376
7.5.13 bpftrace ............................................................................................... 377
7.5.14 其他工具 ............................................................................................ 381
7.6 调优 .................................................................................................................. 384
7.6.1 可调参数 .............................................................................................. 384
7.6.2 多种页面大小 ...................................................................................... 386
7.6.3 分配器 .................................................................................................. 387
7.6.4 NUMA 绑定 ......................................................................................... 387
7.6.5 资源控制 .............................................................................................. 387
7.7 练习 ................................................................................................................. 388
7.8 参考资料 .......................................................................................................... 389
第8章 文件系统.........................................................................................................393
8.1 术语 .................................................................................................................. 394
8.2 模型 .................................................................................................................. 395
8.2.1 文件系统接口 ...................................................................................... 395
8.2.2 文件系统缓存 ...................................................................................... 395
8.2.3 二级缓存 .............................................................................................. 396
8.3 概念 .................................................................................................................. 396
8.3.1 文件系统延时 ...................................................................................... 396
8.3.2 缓存 ...................................................................................................... 397
8.3.3 随机与顺序 I/O .................................................................................... 397
8.3.4 预取 ...................................................................................................... 398
8.3.5 预读 ...................................................................................................... 399
8.3.6 回写缓存 .............................................................................................. 399
8.3.7 同步写 .................................................................................................. 400
8.3.8 裸 I/O 与直接 I/O ................................................................................. 400
8.3.9 非阻塞 I/O ............................................................................................ 400
8.3.10 内存映射文件 .................................................................................... 401
8.3.11 元数据 ................................................................................................ 401
8.3.12 逻辑 I/O 与物理 I/O ........................................................................... 402
8.3.13 操作并不平等 .................................................................................... 404
8.3.14 特殊的文件系统 ................................................................................ 405
8.3.15 访问时间戳 ........................................................................................ 405
8.3.16 容量 .................................................................................................... 405
8.4 架构 .................................................................................................................. 406
8.4.1 文件系统 I/O 栈 ................................................................................... 406
8.4.2 VFS ....................................................................................................... 407
8.4.3 文件系统缓存 ...................................................................................... 407
8.4.4 文件系统特性 ...................................................................................... 409
8.4.5 文件系统种类 ...................................................................................... 411
8.4.6 卷和池 .................................................................................................. 416
8.5 方法 .................................................................................................................. 417
8.5.1 磁盘分析 .............................................................................................. 418
8.5.2 延时分析 .............................................................................................. 418
8.5.3 负载特征归纳 ...................................................................................... 420
8.5.4 性能监测 .............................................................................................. 422
8.5.5 静态性能调优 ...................................................................................... 423
8.5.6 缓存调优 .............................................................................................. 423
8.5.7 负载分离 .............................................................................................. 423
8.5.8 微基准测试 .......................................................................................... 424
8.6 观测工具 .......................................................................................................... 425
8.6.1 mount .................................................................................................... 426
8.6.2 free ........................................................................................................ 426
8.6.3 top ......................................................................................................... 427
8.6.4 vmstat .................................................................................................... 427
8.6.5 sar .......................................................................................................... 427
8.6.6 slabtop ................................................................................................... 428
8.6.7 strace ..................................................................................................... 429
8.6.8 fatrace ................................................................................................... 429
8.6.9 LatencyTOP .......................................................................................... 430
8.6.10 opensnoop ........................................................................................... 431
8.6.11 fifiletop .................................................................................................. 432
8.6.12 cachestat .............................................................................................. 433
8.6.13 ext4dist(xfs、zfs、btrfs、nfs) ........................................................ 433
8.6.14 ext4slower(xfs、zfs、btrfs、nfs) ................................................... 435
8.6.15 bpftrace ............................................................................................... 436
8.6.16 其他工具 ............................................................................................ 443
8.6.17 可视化 ................................................................................................ 444
8.7 实验 .................................................................................................................. 445
8.7.1 Ad Hoc .................................................................................................. 445
8.7.2 微基准测试工具 .................................................................................. 446
8.7.3 缓存刷新 .............................................................................................. 448
8.8 调优 .................................................................................................................. 448
8.8.1 应用程序调用 ...................................................................................... 449
8.8.2 ext4 ....................................................................................................... 450
8.8.3 ZFS ....................................................................................................... 452
8.9 练习 .................................................................................................................. 453
8.10 参考资料 ........................................................................................................ 454
第9章 磁盘................................................................................................................457
9.1 术语 .................................................................................................................. 458
9.2 模型 .................................................................................................................. 459
9.2.1 简单磁盘 .............................................................................................. 459
9.2.2 缓存磁盘 .............................................................................................. 459
9.2.3 控制器 .................................................................................................. 460
9.3 概念 .................................................................................................................. 461
9.3.1 测量时间 .............................................................................................. 461
9.3.2 时间尺度 .............................................................................................. 463
9.3.3 缓存 ...................................................................................................... 464
9.3.4 随机 I/O 与连续 I/O ............................................................................. 464
9.3.5 读 / 写比 ............................................................................................... 465
9.3.6 I/O 大小 ................................................................................................ 466
9.3.7 IOPS 并不平等 ..................................................................................... 466
9.3.8 非数据传输磁盘命令 .......................................................................... 466
9.3.9 使用率 .................................................................................................. 467
9.3.10 饱和度 ................................................................................................ 468
9.3.11 I/O 等待 .............................................................................................. 468
9.3.12 同步与异步 ........................................................................................ 468
9.3.13 磁盘 I/O 与应用程序 I/O ................................................................... 469
9.4 架构 .................................................................................................................. 469
9.4.1 磁盘类型 .............................................................................................. 469
9.4.2 接口 ...................................................................................................... 476
9.4.3 存储类型 .............................................................................................. 477
9.4.4 操作系统磁盘 I/O 栈 ........................................................................... 480
9.5 方法 .................................................................................................................. 483
9.5.1 工具法 .................................................................................................. 484
9.5.2 USE 方法 .............................................................................................. 484
9.5.3 性能监测 .............................................................................................. 486
9.5.4 负载特征归纳 ...................................................................................... 486
9.5.5 延时分析 .............................................................................................. 488
9.5.6 静态性能调优 ...................................................................................... 489
9.5.7 缓存调优 .............................................................................................. 490
9.5.8 资源控制 .............................................................................................. 490
9.5.9 微基准测试 .......................................................................................... 490
9.5.10 伸缩 .................................................................................................... 491
9.6 观测工具 .......................................................................................................... 492
9.6.1 iostat ...................................................................................................... 493
9.6.2 sar .......................................................................................................... 497
9.6.3 PSI......................................................................................................... 498
9.6.4 pidstat .................................................................................................... 498
9.6.5 perf ........................................................................................................ 499
9.6.6 biolatency .............................................................................................. 502
9.6.7 biosnoop ................................................................................................ 504
9.6.8 iotop、biotop ........................................................................................ 506
9.6.9 biostacks ............................................................................................... 508
9.6.10 blktrace ............................................................................................... 509
9.6.11 bpftrace ............................................................................................... 513
9.6.12 MegaCli .............................................................................................. 518
9.6.13 smartctl ............................................................................................... 518
9.6.14 SCSI 日志 ........................................................................................... 520
9.6.15 其他工具 ............................................................................................ 521
9.7 可视化 .............................................................................................................. 521
9.7.1 折线图 .................................................................................................. 521
9.7.2 延时散点图 .......................................................................................... 522
9.7.3 延时热图 .............................................................................................. 522
9.7.4 偏移量热图 .......................................................................................... 523
9.7.5 使用率热图 .......................................................................................... 524
9.8 实验 .................................................................................................................. 524
9.8.1 Ad Hoc .................................................................................................. 524
9.8.2 自定义负载生成器 .............................................................................. 525
9.8.3 微基准测试工具 .................................................................................. 525
9.8.4 随机读示例 .......................................................................................... 525
9.8.5 ioping .................................................................................................... 526
9.8.6 fifio .......................................................................................................... 527
9.8.7 blkreplay ............................................................................................... 527
9.9 调优 .................................................................................................................. 527
9.9.1 操作系统可调参数 .............................................................................. 527
9.9.2 磁盘设备可调参数 .............................................................................. 528
9.9.3 磁盘控制器可调参数 .......................................................................... 528
9.10 练习 ................................................................................................................ 529
9.11 参考资料......................................................................................................... 530
第10章 网络..............................................................................................................533
10.1 术语 ................................................................................................................ 534
10.2 模型 ................................................................................................................ 535
10.2.1 网络接口 ............................................................................................ 535
10.2.2 控制器 ................................................................................................ 535
10.2.3 协议栈 ................................................................................................ 536
10.3 概念 ................................................................................................................ 537
10.3.1 网络和路由 ........................................................................................ 537
10.3.2 协议 .................................................................................................... 538
10.3.3 封装 .................................................................................................... 538
10.3.4 包的大小 ............................................................................................ 538
10.3.5 延时 .................................................................................................... 539
10.3.6 缓冲 .................................................................................................... 541
10.3.7 连接积压队列 .................................................................................... 541
10.3.8 接口协商 ............................................................................................ 542
10.3.9 避免阻塞 ............................................................................................ 542
10.3.10 使用率 .............................................................................................. 542
10.3.11 本地连接 .......................................................................................... 543
10.4 架构 ................................................................................................................ 543
10.4.1 协议 .................................................................................................... 543
10.4.2 硬件 .................................................................................................... 549
10.4.3 软件 .................................................................................................... 551
10.5 方法 ................................................................................................................ 558
10.5.1 工具法 ................................................................................................ 559
10.5.2 USE 方法 ............................................................................................ 560
10.5.3 工作负载特征归纳 ............................................................................ 561
10.5.4 延时分析 ............................................................................................ 562
10.5.5 性能监测 ............................................................................................ 563
10.5.6 数据包嗅探 ........................................................................................ 564
10.5.7 TCP 分析 ............................................................................................ 565
10.5.8 静态性能调优 .................................................................................... 565
10.5.9 资源控制 ............................................................................................ 566
10.5.10 微基准测试 ...................................................................................... 567
10.6 观测工具 ........................................................................................................ 567
10.6.1 ss ......................................................................................................... 568
10.6.2 ip ......................................................................................................... 570
10.6.3 ifconfifig ................................................................................................ 571
10.6.4 nstat ..................................................................................................... 572
10.6.5 netstat .................................................................................................. 573
10.6.6 sar ........................................................................................................ 577
10.6.7 nicstat .................................................................................................. 579
10.6.8 ethtool ................................................................................................. 580
10.6.9 tcplife .................................................................................................. 582
10.6.10 tcptop ................................................................................................ 583
10.6.11 tcpretrans ........................................................................................... 583
10.6.12 bpftrace ............................................................................................. 584
10.6.13 tcpdump ............................................................................................ 592
10.6.14 Wireshark .......................................................................................... 594
10.6.15 其他工具 .......................................................................................... 594
10.7 实验 ................................................................................................................ 596
10.7.1 ping ..................................................................................................... 596
10.7.2 traceroute ............................................................................................ 597
10.7.3 pathchar............................................................................................... 598
10.7.4 iperf ..................................................................................................... 598
10.7.5 netperf ................................................................................................. 599
10.7.6 tc ......................................................................................................... 600
10.7.7 其他工具 ............................................................................................ 601
10.8 调优 ................................................................................................................ 601
10.8.1 系统级可调参数 ................................................................................ 601
10.8.2 套接字选项 ........................................................................................ 607
10.8.3 配置 .................................................................................................... 608
10.9 练习 ................................................................................................................ 608
10.10 参考资料 ...................................................................................................... 609
第11章 云计算...........................................................................................................613
11.1 背景................................................................................................................. 614
11.1.1 实例类型 ............................................................................................ 615
11.1.2 可扩展的架构 .................................................................................... 615
11.1.3 容量规划 ............................................................................................ 616
11.1.4 存储 .................................................................................................... 618
11.1.5 多租户 ................................................................................................ 619
11.1.6 编排(Kubernetes) ............................................................................ 620
11.2 硬件虚拟化..................................................................................................... 621
11.2.1 实现 .................................................................................................... 622
11.2.2 系统开销 ............................................................................................ 623
11.2.3 资源控制 ............................................................................................ 629
11.2.4 可观测性 ............................................................................................ 631
11.3 操作系统虚拟化............................................................................................. 639
11.3.1 实现方式 ............................................................................................ 641
11.3.2 系统开销 ............................................................................................ 644
11.3.3 资源控制 ............................................................................................ 647
11.3.4 可观测性 ............................................................................................ 651
11.4 轻量虚拟化..................................................................................................... 664
11.4.1 实现 .................................................................................................... 665
11.4.2 开销 .................................................................................................... 666
11.4.3 资源控制 ............................................................................................ 666
11.4.4 可观测性 ............................................................................................ 666
11.5 其他类型......................................................................................................... 668
11.6 比较................................................................................................................. 668
11.7 练习................................................................................................................. 670
11.8 参考资料......................................................................................................... 671
第12章 基准测试.......................................................................................................675
12.1 背景 ................................................................................................................ 676
12.1.1 原因 .................................................................................................... 676
12.1.2 有效的基准测试 ................................................................................ 677
12.1.3 基准测试失败 .................................................................................... 679
12.2 基准测试的类型 ........................................................................................... 685
12.2.1 微基准测试 ........................................................................................ 685
12.2.2 模拟 .................................................................................................... 687
12.2.3 回放 .................................................................................................... 688
12.2.4 行业标准 ............................................................................................ 688
12.3 方法 ................................................................................................................ 690
12.3.1 被动基准测试 .................................................................................... 690
12.3.2 主动基准测试 .................................................................................... 691
12.3.3 CPU 剖析............................................................................................ 694
12.3.4 USE 方法 ............................................................................................ 695
12.3.5 工作负载特征归纳 ............................................................................ 696
12.3.6 自定义基准测试 ................................................................................ 696
12.3.7 逐渐增加负载 .................................................................................... 696
12.3.8 合理性检查 ........................................................................................ 698
12.3.9 统计分析 ............................................................................................ 699
12.3.10 基准测试检查清单 .......................................................................... 700
12.4 基准测试问题 ................................................................................................ 701
12.5 练习 ................................................................................................................ 702
12.6 参考资料 ........................................................................................................ 703
第13章 perf...............................................................................................................705
13.1 子命令概览 .................................................................................................... 706
13.2 单行命令 ........................................................................................................ 708
13.3 perf事件 .......................................................................................................... 713
13.4 硬件事件 ........................................................................................................ 715
13.4.1 频率采样 ............................................................................................ 716
13.5 软件事件 ........................................................................................................ 717
13.6 tracepoint事件 ................................................................................................ 718
13.7 探针事件 ........................................................................................................ 719
13.7.1 kprobe ................................................................................................. 719
13.7.2 uprobe ................................................................................................. 721
13.7.3 USDT 探针 ......................................................................................... 724
13.8 perf stat ........................................................................................................... 725
13.8.1 选项 .................................................................................................... 726
13.8.2 周期统计信息 .................................................................................... 727
13.8.3 CPU 均衡............................................................................................ 727
13.8.4 事件过滤器 ........................................................................................ 727
13.8.5 隐藏统计信息 .................................................................................... 728
13.9 perf record ....................................................................................................... 728
13.9.1 选项 .................................................................................................... 729
13.9.2 CPU 剖析............................................................................................ 729
13.9.3 栈遍历 ................................................................................................ 730
13.10 perf report ..................................................................................................... 730
13.10.1 TUI .................................................................................................... 731
13.10.2 STDIO............................................................................................... 731
13.11 perf script ...................................................................................................... 732
13.11.1 火焰图 .............................................................................................. 734
13.11.2 跟踪脚本 .......................................................................................... 734
13.12 perf trace ....................................................................................................... 735
13.12.1 内核版本 .......................................................................................... 736
13.13 其他命令 ...................................................................................................... 736
13.14 perf文档 ........................................................................................................ 737
13.15 参考资料 ...................................................................................................... 737
第14章 Ftrace............................................................................................................739
14.1 功能概述 ........................................................................................................ 740
14.2 tracefs(/sys) ............................................................................................... 742
14.2.1 tracefs 的内容 ..................................................................................... 743
14.3 Ftrace函数剖析器 .......................................................................................... 745
14.4 Ftrace函数跟踪 .............................................................................................. 747
14.4.1 使用 trace............................................................................................ 747
14.4.2 使用 trace_pipe ................................................................................... 749
14.4.3 选项 .................................................................................................... 750
14.5 跟踪点 ............................................................................................................ 751
14.5.1 过滤器 ................................................................................................ 751
14.5.2 触发器 ................................................................................................ 752
14.6 kprobes ............................................................................................................ 753
14.6.1 事件跟踪 ............................................................................................ 753
14.6.2 参数 .................................................................................................... 754
14.6.3 返回值 ................................................................................................ 755
14.6.4 过滤器和触发器 ................................................................................ 755
14.6.5 kprobe 剖析 ........................................................................................ 756
14.7 uprobes ............................................................................................................ 756
14.7.1 事件跟踪 ............................................................................................ 756
14.7.2 参数和返回值 .................................................................................... 757
14.7.3 过滤器和触发器 ................................................................................ 757
14.7.4 uprobe 剖析 ........................................................................................ 757
14.8 Ftrace function_graph ..................................................................................... 758
14.8.1 图表跟踪 ............................................................................................ 758
14.8.2 选项 .................................................................................................... 759
14.9 Ftrace hwlat .................................................................................................... 760
14.10 Ftrace hist触发器 .......................................................................................... 761
14.10.1 单关键字 .......................................................................................... 761
14.10.2 字段 .................................................................................................. 762
14.10.3 修饰器 .............................................................................................. 763
14.10.4 PID 过滤器 ....................................................................................... 763
14.10.5 多关键字 .......................................................................................... 764
14.10.6 栈踪迹关键字 .................................................................................. 764
14.10.7 综合事件 .......................................................................................... 765
14.11 trace-cmd....................................................................................................... 768
14.11.1 子命令概述 ...................................................................................... 768
14.11.2 trace-cmd 单行命令 ......................................................................... 770
14.11.3 trace-cmd 和 perf(1) 的比较 ............................................................ 772
14.11.4 trace-cmd function_graph ................................................................. 773
14.11.5 KernelShark ...................................................................................... 773
14.11.6 trace-cmd 文档 ................................................................................. 774
14.12 perf ftrace ...................................................................................................... 775
14.13 perf-tools ....................................................................................................... 775
14.13.1 工具覆盖 .......................................................................................... 776
14.13.2 单用途的工具 .................................................................................. 777
14.13.3 多用途工具 ...................................................................................... 778
14.13.4 perf-tools 单行命令 .......................................................................... 779
14.13.5 示例 .................................................................................................. 781
14.13.6 perf-tools 与 BCC/BPF 的对比........................................................ 781
14.13.7 文档 .................................................................................................. 782
14.14 Ftrace文档 .................................................................................................... 782
14.15 参考资料 ...................................................................................................... 783
第15章 BPF...............................................................................................................785
15.1 BCC ................................................................................................................ 787
15.1.1 安装 .................................................................................................... 788
15.1.2 工具范围 ............................................................................................ 788
15.1.3 单用途工具 ........................................................................................ 789
15.1.4 多用途工具 ........................................................................................ 791
15.1.5 单行命令 ............................................................................................ 791
15.1.6 多用途工具示例 ................................................................................ 793
15.1.7 BCC 与 bpftrace 的比较 .................................................................... 794
15.1.8 文档 .................................................................................................... 794
15.2 bpftrace ........................................................................................................... 795
15.2.1 安装 .................................................................................................... 796
15.2.2 工具 .................................................................................................... 796
15.2.3 单行命令 ............................................................................................ 797
15.2.4 编程 .................................................................................................... 800
15.2.5 参考 .................................................................................................... 808
15.2.6 文档 .................................................................................................... 815
15.3 参考资料 ........................................................................................................ 816
第16章 案例研究.......................................................................................................817
16.1 无法解释的收益 ............................................................................................ 817
16.1.1 问题陈述 ............................................................................................ 817
16.1.2 分析策略 ............................................................................................ 818
16.1.3 统计数据 ............................................................................................ 818
16.1.4 配置 .................................................................................................... 820
16.1.5 PMCs .................................................................................................. 822
16.1.6 软件事件 ............................................................................................ 823
16.1.7 跟踪 .................................................................................................... 824
16.1.8 结论 .................................................................................................... 826
16.2 其他信息 ........................................................................................................ 726
16.3 参考资料 ........................................................................................................ 827
附录A USE方法:Linux............................................................................................829
附录B sar总结...........................................................................................................835
附录C bpftrace单行命令............................................................................................837
附录D 精选练习题答案..............................................................................................843
附录E 系统性能名人录..............................................................................................845
术语表..........................................................................................................................849
· · · · · · (收起)
丛书信息
· · · · · ·
性能之巅:洞悉系统、企业与云计算(第2版)(英文版)的书评 · · · · · · ( 全部 11 条 )
全面深入, 推荐阅读. (找不到官方勘误, 暂列在此)
这篇书评可能有关键情节透露
了解系统性能优化的必读书. 但是建议先看一本内核实现方面的书, 如 Understanding Linux Kernel. 这本书的结构非常清晰: 1 到 4 章是综述, 涵盖了性能优化方面的概念, 方法论和工具简介; 接下来基本是沿着操作系统各重要组件的专门讲解: cpu, 内存, 文件系统, 磁盘, 网络, 并... (展开)系统性能优化圣经级的存在
dtrace linux 尝试
这篇书评可能有关键情节透露
新问题:oracle时代的solaris会成为什么位置? 嘻嘻😄,不多想了,两件事做 1.安个solaris测试dtrace用 2.在linux上先找找systemtap的使用吧 豆瓣说字数不够→_→, 豆瓣说字数不够→_→, 豆瓣说字数不够→_→, 豆瓣说字数不够→_→, 豆瓣说字数不够→_→, 豆瓣说字数不够... (展开)系统的性能分析的通用方法
这篇书评可能有关键情节透露
我们在读书的时候,如何先建立目标,再去阅读。而阅读这本书,其实是希望我们能够对系统有更为全面的认知。 自己想从这本书中获得什么? 想更系统地了解操作系统,能够快速定位系统出现的性能问题。 其实性能,在我看来,主要分为两种。 1、一种是本地的系统调用(单机情况下)... (展开)> 更多书评 11篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部5 )
-
电子工业出版社 (2015)8.7分 334人读过
-
Prentice Hall (2013)8.6分 52人读过
-
电子工业出版社 (2022)9.3分 25人读过
-
Prentice Hall (2020)8.9分 19人读过
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有5人想读,手里有一本闲着?
订阅关于性能之巅:洞悉系统、企业与云计算(第2版)(英文版)的评论:
feed: rss 2.0
还没人写过短评呢
还没人写过短评呢