欢迎光临
梦想从学习开始!

性能之巅 | 小熊书籍

本文主要介绍 性能之巅 | 小熊书籍,小熊精心挑选的书籍希望对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以购买正版书籍进行阅读和学习。


作者: Brendan Gregg
出版社: 电子工业出版社
出品方: 博文视点
副标题: 洞悉系统、企业与云计算
原作名: Systems Performance
译者: 徐章宁 / 吴寒思 / 陈磊
出版年: 2015-8-15
页数: 628
定价: 128
装帧: 平装
ISBN: 9787121267925

《性能之巅:洞悉系统、企业与云计算》基于Linux 和Solaris 系统阐述了适用于所有系统的性能理论和方法,Brendan Gregg 将业界普遍承认的性能方法、工具和指标收集于本书之中。阅读本书,你能洞悉系统运作的方式,学习到分析和提高系统与应用程序性能的方法,这些性能方法同样适用于大型企业与云计算这类最为复杂的环境的性能分析与调优。

第1 章 绪论 ………………………………………………………………………….. 1
1.1 系统性能 ……………………………………………………………………………….. 1
1.2 人员 ……………………………………………………………………………………2
1.3 事情 ……………………………………………………………………………………3
1.4 视角 ……………………………………………………………………………………4
1.5 性能是充满挑战的 ………………………………………………………………………….. 4
1.5.1 性能是主观的 …………………………………………………………………………………………….. 4
1.5.2 系统是复杂的 …………………………………………………………………………………………….. 5
1.5.3 可能有多个问题并存 ………………………………………………………………………………….. 6
1.6 延时 ………………………………………………………………………… 6
1.7 动态跟踪 …………………………………………………………………………………………… 7
1.8 云计算 …………………………………………………………………………………………….. 8
1.9 案例研究 …………………………………………………………………………………………. 8
1.9.1 缓慢的磁盘 ………………………………………………………………………………………………… 9
1.9.2 软件变更 ………………………………………………………………………………………………….. 10
1.9.3 更多阅读 ………………………………………………………………………………………………….. 12
第2 章 方法 ……………………………………………………………………………………………….. 13
2.1 术语 …………………………………………………………………………………………………… 14
2.2 模型 ……………………………………………………………………………………………. 14
2.2.1 受测系统 ………………………………………………………………………………………………….. 15
2.2.2 排队系统 ………………………………………………………………………………………………….. 15
2.3 概念 …………………………………………………………………………………………….. 16
2.3.1 延时 …………………………………………………………………………………………………………. 16
2.3.2 时间量级 ………………………………………………………………………………………………….. 17
2.3.3 权衡三角 ………………………………………………………………………………………………….. 18
2.3.4 调整的影响 ………………………………………………………………………………………………. 19
2.3.5 合适的层级 ………………………………………………………………………………………………. 19
2.3.6 性能建议的时间点 ……………………………………………………………………………………. 20
2.3.7 负载vs.架构 ……………………………………………………………………………………………… 20
2.3.8 扩展性 ……………………………………………………………………………………………………… 21
2.3.9 已知的未知 ………………………………………………………………………………………………. 22
2.3.10 指标 ……………………………………………………………………………………………………….. 23
2.3.11 使用率 ……………………………………………………………………………………………………. 24
2.3.12 饱和度 ……………………………………………………………………………………………………. 25
2.3.13 剖析 ……………………………………………………………………………………………………….. 26
2.3.14 缓存 ……………………………………………………………………………………………………….. 26
2.4 视角 ………………………………………………………………………………………………. 28
2.4.1 资源分析 ………………………………………………………………………………………………….. 28
2.4.2 工作负载分析 …………………………………………………………………………………………… 29
2.5 方法 ……………………………………………………………………………………………. 30
2.5.1 街灯反方法 ………………………………………………………………………………………………. 31
2.5.2 随机变动反方法 ……………………………………………………………………………………….. 32
2.5.3 责怪他人反方法 ……………………………………………………………………………………….. 32
2.5.4 ad hoc 核对清单法 …………………………………………………………………………………….. 33
2.5.5 问题陈述法 ………………………………………………………………………………………………. 33
2.5.6 科学法 ……………………………………………………………………………………………………… 34
2.5.7 诊断循环 ………………………………………………………………………………………………….. 35
2.5.8 工具法 ……………………………………………………………………………………………………… 35
2.5.9 USE 方法 …………………………………………………………………………………………………… 36
2.5.10 工作负载特征归纳 ………………………………………………………………………………….. 42
2.5.11 向下挖掘分析 …………………………………………………………………………………………. 43
2.5.12 延时分析 ………………………………………………………………………………………………… 44
2.5.13 R 方法 ……………………………………………………………………………………………………. 45
2.5.14 事件跟踪 ………………………………………………………………………………………………… 45
2.5.15 基础线统计 …………………………………………………………………………………………….. 47
2.5.16 静态性能调整 …………………………………………………………………………………………. 47
2.5.17 缓存调优 ………………………………………………………………………………………………… 47
2.5.18 微基准测试 …………………………………………………………………………………………….. 48
2.6 建模 ………………………………………………………………………………………… 49
2.6.1 企业vs.云 …………………………………………………………………………………………………. 49
2.6.2 可视化识别 ………………………………………………………………………………………………. 49
2.6.3 Amdahl 扩展定律 ……………………………………………………………………………………… 51
2.6.4 通用扩展定律 …………………………………………………………………………………………… 52
2.6.5 排队理论 ………………………………………………………………………………………………….. 52
2.7 容量规划 ………………………………………………………………………………………… 56
2.7.1 资源极限 ………………………………………………………………………………………………….. 56
2.7.2 因素分析 ………………………………………………………………………………………………….. 58
2.7.3 扩展方案 ………………………………………………………………………………………………….. 58
2.8 统计 …………………………………………………………………………………….. 59
2.8.1 量化性能 ………………………………………………………………………………………………….. 59
2.8.2 平均值 ……………………………………………………………………………………………………… 60
2.8.3 标准方差、百分位数、中位数 ………………………………………………………………….. 61
2.8.4 变异系数 ………………………………………………………………………………………………….. 62
2.8.5 多重模态分布 …………………………………………………………………………………………… 62
2.8.6 异常值 ……………………………………………………………………………………………………… 63
2.9 监视 ……………………………………………………………………………………… 63
2.9.1 基于时间的规律 ……………………………………………………………………………………….. 63
2.9.2 监测产品 ………………………………………………………………………………………………….. 65
2.9.3 启动以来的信息统计 ………………………………………………………………………………… 65
2.10 可视化 …………………………………………………………………………………….. 65
2.10.1 线图 ……………………………………………………………………………………………………….. 65
2.10.2 散点图 ……………………………………………………………………………………………………. 66
2.10.3 热图 ……………………………………………………………………………………………………….. 67
2.10.4 表面图 ……………………………………………………………………………………………………. 68
2.10.5 可视化工具 …………………………………………………………………………………………….. 69
2.11 练习 …………………………………………………………………………………….. 70
2.12 参考 ……………………………………………………………………………………………… 70
第3 章 操作系统 ……………………………………………………………………………… 72
3.1 术语 ……………………………………………………………………………………………… 72
3.2 背景 ……………………………………………………………………………………………………. 73
3.2.1 内核 …………………………………………………………………………………………………………. 73
3.2.2 栈 …………………………………………………………………………………………………………….. 76
3.2.2 中断和中断线程 ……………………………………………………………………………………….. 77
3.2.4 中断优先级 ………………………………………………………………………………………………. 78
3.2.5 进程 …………………………………………………………………………………………………………. 78
3.2.6 系统调用 ………………………………………………………………………………………………….. 80
3.2.7 虚拟内存 ………………………………………………………………………………………………….. 82
3.2.8 内存管理 ………………………………………………………………………………………………….. 82
3.2.9 调度器 ……………………………………………………………………………………………………… 83
3.2.10 文件系统 ………………………………………………………………………………………………… 84
3.2.11 缓存 ……………………………………………………………………………………………………….. 86
3.2.12 网络 ……………………………………………………………………………………………………….. 87
3.2.13 设备驱动 ………………………………………………………………………………………………… 87
3.2.14 多处理器 ………………………………………………………………………………………………… 87
3.2.15 抢占 ……………………………………………………………………………………………………….. 88
3.2.16 资源管理 ………………………………………………………………………………………………… 88
3.2.17 观测性 ……………………………………………………………………………………………………. 89
3.3 内核 …………………………………………………………………………………………………. 89
3.3.1 UNIX ……………………………………………………………………………………… 90
3.3.2 基于Solaris ………………………………………………………………………………………………. 90
3.3.3 基于Linux ………………………………………………………………………………………………… 93
3.3.4 差异 …………………………………………………………………………………………………………. 95
3.4 练习 ………………………………………………………………………………………………. 96
3.5 参考 …………………………………………………………………………………………. 96
第4 章 观测工具 …………………………………………………………………………… 98
4.1 工具类型 …………………………………………………………………………………….. 98
4.1.1 计数器 ……………………………………………………………………………………………………… 99
4.1.2 跟踪 ……………………………………………………………………………………………………….. 100
4.1.3 剖析 ……………………………………………………………………………………………………….. 101
4.1.4 监视(sar) …………………………………………………………………………………………….. 102
4.2 观测来源 …………………………………………………………………………………………. 103
4.2.1 /proc ……………………………………………………………………………………………………….. 103
4.2.2 /sys …………………………………………………………………………………………………………. 108
4.2.3 kstat ………………………………………………………………………………………………………… 109
4.2.4 延时核算 ………………………………………………………………………………………………… 111
4.2.5 微状态核算 …………………………………………………………………………………………….. 112
4.2.6 其他的观测源 …………………………………………………………………………………………. 112
4.3 DTrace ………………………………………………………………………………………. 114
4.3.1 静态和动态跟踪 ……………………………………………………………………………………… 115
4.3.2 探针 ……………………………………………………………………………………………………….. 116
4.3.3 provider …………………………………………………………………………………………………… 116
4.3.4 参数 ……………………………………………………………………………………………………….. 117
4.3.5 D 语言 ……………………………………………………………………………………………………. 117
4.3.6 内置变量 ………………………………………………………………………………………………… 118
4.3.7 action ……………………………………………………………………………………………………… 118
4.3.8 变量类型 ………………………………………………………………………………………………… 119
4.3.9 单行命令 ………………………………………………………………………………………………… 121
4.3.10 脚本 ……………………………………………………………………………………………………… 121
4.3.11 开销 ……………………………………………………………………………………………………… 122
4.3.12 文档和资源 …………………………………………………………………………………………… 123
4.4 SystemTap ……………………………………………………………………………………… 124
4.4.1 探针 ……………………………………………………………………………………………………….. 124
4.4.2 tapset ………………………………………………………………………………………………………. 125
4.4.3 action 和内置变量……………………………………………………………………………………. 125
4.4.4 示例 ……………………………………………………………………………………………………….. 125
4.4.5 开销 ……………………………………………………………………………………………………….. 127
4.4.6 文档和资源 …………………………………………………………………………………………….. 128
4.5 perf …………………………………………………………………………………………………………. 128
4.6 观测工具的观测 …………………………………………………………………………………. 129
4.7 练习 ……………………………………………………………………………………………….. 130
4.8 参考 ……………………………………………………………………………………………….. 130
第5 章 应用程序 ………………………………………………………………………………… 131
5.1 应用程序基础 …………………………………………………………………………………… 131
5.1.1 目标 ……………………………………………………………………………………………………….. 132
5.1.2 常见情况的优化 ……………………………………………………………………………………… 133
5.1.3 观测性 ……………………………………………………………………………………………………. 134
5.1.4 大O 标记法 ……………………………………………………………………………………………. 134
5.2 应用程序性能技术 ………………………………………………………………………………. 135
5.2.1 选择I/O 尺寸 ………………………………………………………………………………………….. 135
5.2.2 缓存 ……………………………………………………………………………………………………….. 136
5.2.3 缓冲区 ……………………………………………………………………………………………………. 136
5.2.4 轮询 ……………………………………………………………………………………………………….. 136
5.2.5 并发和并行 …………………………………………………………………………………………….. 137
5.2.6 非阻塞I/O ………………………………………………………………………………………………. 139
5.2.7 处理器绑定 …………………………………………………………………………………………….. 139
5.3 编程语言 …………………………………………………………………………………………… 140
5.3.1 编译语言 ………………………………………………………………………………………………… 140
5.3.2 解释语言 ………………………………………………………………………………………………… 141
5.3.3 虚拟机 ……………………………………………………………………………………………………. 142
5.3.4 垃圾回收 ………………………………………………………………………………………………… 142
5.4 方法和分析 …………………………………………………………………………………… 143
5.4.1 线程状态分析 …………………………………………………………………………………………. 143
5.4.2 CPU 剖析 ……………………………………………………………………………………………….. 146
5.4.3 系统调用分析 …………………………………………………………………………………………. 148
5.4.4 I/O 剖析 ………………………………………………………………………………………………….. 154
5.4.5 工作负载特征归纳 ………………………………………………………………………………….. 155
5.4.6 USE 方法 ………………………………………………………………………………………………… 155
5.4.7 向下挖掘法 …………………………………………………………………………………………….. 156
5.4.8 锁分析 ………………………………………………………………………………………… 156
5.4.9 静态性能调优 ……………………………………………………………………… 159
5.5 练习 …………………………………………………………………………………………… 160
5.6 参考 ………………………………………………………………………………………… 161
第6 章 CPU ………………………………………………………………………………… 162
6.1 术语 ……………………………………………………………………………………….. 163
6.2 模型 ………………………………………………………………………………………….. 163
6.2.1 CPU 架构 ……………………………………………………………………………………………….. 163
6.2.2 CPU 内存缓存 ………………………………………………………………………………………… 164
6.2.3 CPU 运行队列 ………………………………………………………………………………………… 165
6.3 概念 ……………………………………………………………………………………………… 165
6.3.1 时钟频率 ………………………………………………………………………………………………… 165
6.3.2 指令 ……………………………………………………………………………………………………….. 166
6.3.3 指令流水线 …………………………………………………………………………………………….. 166
6.3.4 指令宽度 ………………………………………………………………………………………………… 167
6.3.5 CPI,IPC ………………………………………………………………………………………………… 167
6.3.6 使用率 ……………………………………………………………………………………………………. 167
6.3.7 用户时间/内核时间 …………………………………………………………………………………. 168
6.3.8 饱和度 ……………………………………………………………………………………………………. 168
6.3.9 抢占 ……………………………………………………………………………………………………….. 168
6.3.10 优先级反转 …………………………………………………………………………………………… 169
6.3.11 多进程,多线程 ……………………………………………………………………………………. 169
6.3.12 字长 ……………………………………………………………………………………………………… 170
6.3.13 编译器优化 …………………………………………………………………………………………… 171
6.4 架构 …………………………………………………………………………………………… 171
6.4.1 硬件 ……………………………………………………………………………………………………….. 171
6.4.2 软件 ……………………………………………………………………………………………………….. 179
6.5 方法 …………………………………………………………………………………………………… 184
6.5.1 工具法 ……………………………………………………………………………………………………. 184
6.5.2 USE 方法 ………………………………………………………………………………………………… 185
6.5.3 负载特征归纳 …………………………………………………………………………………………. 186
6.5.4 剖析 ……………………………………………………………………………………………………….. 187
6.5.5 周期分析 ………………………………………………………………………………………………… 188
6.5.6 性能监控 ………………………………………………………………………………………………… 189
6.5.7 静态性能调优 …………………………………………………………………………………………. 189
6.5.8 优先级调优 …………………………………………………………………………………………….. 189
6.5.9 资源控制 ………………………………………………………………………………………………… 190
6.5.10 CPU 绑定 ……………………………………………………………………………………………… 190
6.5.11 微型基准测试 ……………………………………………………………………………………….. 191
6.5.12 扩展 ……………………………………………………………………………………………………… 191
6.6 分析 …………………………………………………………………………………………….. 192
6.6.1 uptime …………………………………………………………………………………………………….. 192
6.6.2 vmstat …………………………………………………………………………………………………….. 194
6.6.3 mpstat …………………………………………………………………………………………………….. 195
6.6.4 sar ………………………………………………………………………………………………………….. 197
6.6.5 ps……………………………………………………………………………………………………………. 198
6.6.6 top ………………………………………………………………………………………………………….. 199
6.6.7 prstat ………………………………………………………………………………………………………. 200
6.6.8 pidstat …………………………………………………………………………………………………….. 201
6.6.9 time 和ptime …………………………………………………………………………………………… 202
6.6.10 DTrace ………………………………………………………………………………………………….. 203
6.5.11 SystemTap …………………………………………………………………………………………….. 209
6.6.12 perf ……………………………………………………………………………………………………….. 209
6.6.13 cpustat …………………………………………………………………………………………………… 215
6.6.14 其他工具 ………………………………………………………………………………………………. 216
6.6.15 可视化 ………………………………………………………………………………………………….. 216
6.7 实验 ………………………………………………………………………………………… 219
6.7.1 Ad Hoc ……………………………………………………………………………………………………. 219
6.7.2 SysBench ………………………………………………………………………………………………… 220
6.8 调优 …………………………………………………………………………………………….. 220
6.8.1 编译器选项 …………………………………………………………………………………………….. 221
6.8.2 调度优先级和调度类 ………………………………………………………………………………. 221
6.8.3 调度器选项 …………………………………………………………………………………………….. 221
6.8.4 进程绑定 ………………………………………………………………………………………………… 223
6.8.5 独占CPU 组 …………………………………………………………………………………………… 224
6.8.6 资源控制 ………………………………………………………………………………………………… 224
6.8.7 处理器选项(BIOS 调优) ……………………………………………………………………… 224
6.9 练习 ………………………………………………………………………………….. 225
6.10 参考资料 ……………………………………………………………………………………… 226
第7 章 内存 …………………………………………………………………………………………….. 228
7.1 术语 ……………………………………………………………………………………………………. 229
7.2 概念 ………………………………………………………………………………………… 229
7.2.1 虚拟内存 ………………………………………………………………………………………………… 230
7.2.2 换页 ……………………………………………………………………………………………………….. 230
7.2.3 按需换页 ………………………………………………………………………………………………… 231
7.2.4 过度提交 ………………………………………………………………………………………………… 233
7.2.5 交换 ……………………………………………………………………………………………………….. 233
7.2.6 文件系统缓存占用 ………………………………………………………………………………….. 233
7.2.7 使用率和饱和度 ……………………………………………………………………………………… 234
7.2.8 分配器 ……………………………………………………………………………………………………. 234
7.2.9 字长 ……………………………………………………………………………………………………….. 234
7.3 架构 …………………………………………………………………………………………… 234
7.3.1 硬件 ……………………………………………………………………………………………………….. 235
7.3.2 软件 ……………………………………………………………………………………………………….. 239
7.3.3 进程地址空间 …………………………………………………………………………………………. 244
7.4 方法 ………………………………………………………………………………………….. 248
7.4.1 工具法 ……………………………………………………………………………………………………. 249
7.4.2 USE 方法 ………………………………………………………………………………………………… 249
7.4.3 使用特征归纳 …………………………………………………………………………………………. 250
7.4.4 周期分析 ………………………………………………………………………………………………… 251
7.4.5 性能监测 ………………………………………………………………………………………………… 251
7.4.6 泄漏检测 ………………………………………………………………………………………………… 252
7.4.7 静态性能调优 …………………………………………………………………………………………. 252
7.4.8 资源控制 ………………………………………………………………………………………………… 253
7.4.9 微基准测试 …………………………………………………………………………………………….. 253
7.5 分析 ……………………………………………………………………………………… 253
7.5.1 vmstat …………………………………………………………………………………………………….. 254
7.5.2 sar ………………………………………………………………………………………………………….. 256
7.5.3 slabtop …………………………………………………………………………………………………….. 259
7.5.4 ::kmstat …………………………………………………………………………………………………… 260
7.5.5 ps……………………………………………………………………………………………………………. 261
7.5.6 top ………………………………………………………………………………………………………….. 262
7.5.7 prstat ………………………………………………………………………………………………………. 263
7.5.8 pmap ………………………………………………………………………………………………………. 264
7.5.9 DTrace ……………………………………………………………………………………………………. 265
7.5.10 SystemTap …………………………………………………………………………………………….. 269
7.5.11 其他工具 ………………………………………………………………………………………………. 269
7.6 调优 ………………………………………………………………………. 270
7.6.1 可调参数 ………………………………………………………………………………………………….. 271
7.6.2 多个页面大小 …………………………………………………………………………………………. 273
7.6.3 分配器 ……………………………………………………………………………………………………. 274
7.6.4 资源控制 ………………………………………………………………………………………………… 274
7.7 练习 ……………………………………………………………………………………………. 274
7.8 参考资料 ……………………………………………………………………………………………… 276
第8 章 文件系统 ……………………………………………………………………………………… 278
8.1 术语 ……………………………………………………………………………………………………. 279
8.2 模型 …………………………………………………………………………………………………… 279
8.2.1 文件系统接口 …………………………………………………………………………………………. 279
8.2.2 文件系统缓存 …………………………………………………………………………………………. 280
8.2.3 二级缓存 ………………………………………………………………………………………………… 281
8.3 概念 ……………………………………………………………………………………….. 281
8.3.1 文件系统延时 …………………………………………………………………………………………. 281
8.3.2 缓存 ……………………………………………………………………………………………………….. 282
8.3.3 随机与顺序I/O ……………………………………………………………………………………….. 282
8.3.4 预取 ……………………………………………………………………………………………………….. 283
8.3.5 预读 ……………………………………………………………………………………………………….. 284
8.3.6 写回缓存 ………………………………………………………………………………………………… 284
8.3.7 同步写 ……………………………………………………………………………………………………. 284
8.3.8 裸I/O 和直接I/O …………………………………………………………………………………….. 285
8.3.9 非阻塞I/O ………………………………………………………………………………………………. 285
8.3.10 内存映射文件 ……………………………………………………………………………………….. 286
8.3.11 元数据 ………………………………………………………………………………………………….. 286
8.3.12 逻辑I/O vs.物理I/O ………………………………………………………………………………. 287
8.3.13 操作并非不平等 ……………………………………………………………………………………. 288
8.3.14 特殊文件系统 ……………………………………………………………………………………….. 289
8.3.15 访问时间戳 …………………………………………………………………………………………… 289
8.3.16 容量 ……………………………………………………………………………………………………… 289
8.4 架构 …………………………………………………………………………………………………… 290
8.4.1 文件系统I/O 栈 ………………………………………………………………………………………. 290
8.4.2 VFS ………………………………………………………………………………………………………… 291
8.4.3 文件系统缓存 …………………………………………………………………………………………. 291
8.4.4 文件系统特性 …………………………………………………………………………………………. 296
8.4.5 文件系统种类 …………………………………………………………………………………………. 297
8.4.6 卷和池 ……………………………………………………………………………………………………. 302
8.5 方法 …………………………………………………………………………………………………. 303
8.5.1 磁盘分析 ………………………………………………………………………………………………… 304
8.5.2 延时分析 ………………………………………………………………………………………………… 304
8.5.3 负载特征归纳 …………………………………………………………………………………………. 306
8.5.4 性能监控 ………………………………………………………………………………………………… 308
8.5.5 事件跟踪 ………………………………………………………………………………………………… 308
8.5.6 静态性能调优 …………………………………………………………………………………………. 309
8.5.7 缓存调优 ………………………………………………………………………………………………… 310
8.5.8 负载分离 ………………………………………………………………………………………………… 310
8.5.9 内存文件系统 …………………………………………………………………………………………. 310
8.5.10 微型基准测试 ……………………………………………………………………………………….. 310
8.6 分析 …………………………………………………………………………………………………… 312
8.6.1 vfsstat ……………………………………………………………………………………………………… 312
8.6.2 fsstat ……………………………………………………………………………………………………….. 313
8.6.3 strace、truss ……………………………………………………………………………………………. 314
8.6.4 DTrace ……………………………………………………………………………………………………. 314
8.6.5 SystemTap ………………………………………………………………………………………………. 323
8.6.6 LatencyTOP …………………………………………………………………………………………….. 323
8.6.7 free …………………………………………………………………………………………………………. 324
8.6.8 top ………………………………………………………………………………………………………….. 324
8.6.9 vmstat …………………………………………………………………………………………………….. 324
8.6.10 sar ………………………………………………………………………………………………………… 325
8.6.11 slabtop …………………………………………………………………………………………………… 326
8.6.12 mdb ::kmastat ………………………………………………………………………………………… 327
8.6.13 fcachestat ………………………………………………………………………………………………. 327
8.6.14 /proc/meminfo ……………………………………………………………………………………….. 328
8.6.15 mdb ::memstat ……………………………………………………………………………………….. 328
8.6.16 kstat ………………………………………………………………………………………………………. 329
8.6.17 其他工具 ………………………………………………………………………………………………. 330
8.6.18 可视化 ………………………………………………………………………………………………….. 331
8.7 实验 ………………………………………………………………………………………………….. 331
8.7.1 Ad Hoc ……………………………………………………………………………………………………. 332
8.7.2 微型基准测试工具 ………………………………………………………………………………….. 332
8.7.3 缓存写回 ………………………………………………………………………………………………… 334
8.8 调优 ……………………………………………………………………………………….. 334
8.8.1 应用程序调用 …………………………………………………………………………………………. 335
8.8.2 ext3 ………………………………………………………………………………………………………… 336
8.8.3 ZFS ………………………………………………………………………………………………………… 336
8.9 练习 ………………………………………………………………………………………………….. 338
8.10 参考资料 ………………………………………………………………………………………….. 339
第9 章 磁盘 ………………………………………………………………………………………… 341
9.1 术语 ………………………………………………………………………………………………… 342
9.2 模型 …………………………………………………………………………………………………… 342
9.2.1 简单磁盘 ………………………………………………………………………………………………… 342
9.2.2 缓存磁盘 ………………………………………………………………………………………………… 343
9.2.3 控制器 ……………………………………………………………………………………………………. 344
9.3 概念 …………………………………………………………………………………………………….. 344
9.3.1 测量时间 ………………………………………………………………………………………………… 344
9.3.2 时间尺度 ………………………………………………………………………………………………… 346
9.3.3 缓存 ……………………………………………………………………………………………………….. 347
9.3.4 随机 vs 连续I/O ……………………………………………………………………………………. 347
9.3.5 读/写比 …………………………………………………………………………………………………… 348
9.3.6 I/O 大小 ………………………………………………………………………………………………….. 348
9.3.7 IOPS 并不平等 ………………………………………………………………………………………… 349
9.3.8 非数据传输磁盘命令 ………………………………………………………………………………. 349
9.3.9 使用率 ……………………………………………………………………………………………………. 349
9.3.10 饱和度 ………………………………………………………………………………………………….. 350
9.3.11 I/O 等待 ………………………………………………………………………………………………… 350
9.3.12 同步 vs 异步 ………………………………………………………………………………………… 351
9.3.13 磁盘 vs 应用程序I/O …………………………………………………………………………… 351
9.4 架构 ……………………………………………………………………………………………….. 352
9.4.1 磁盘类型 ………………………………………………………………………………………………… 352
9.4.2 接口 ……………………………………………………………………………………………………….. 357
9.4.3 存储类型 ………………………………………………………………………………………………… 358
9.4.4 操作系统磁盘I/O 栈 ……………………………………………………………………………….. 360
9.5 方法 ……………………………………………………………………………………………………. 363
9.5.1 工具法 ……………………………………………………………………………………………………. 364
9.5.2 USE 方法 ………………………………………………………………………………………………… 364
9.5.3 性能监控 ………………………………………………………………………………………………… 365
9.5.4 负载特征归纳 …………………………………………………………………………………………. 366
9.5.5 延时分析 ………………………………………………………………………………………………… 367
9.5.6 事件跟踪 ………………………………………………………………………………………………… 368
9.5.7 静态性能调优 …………………………………………………………………………………………. 369
9.5.8 缓存调优 ………………………………………………………………………………………………… 370
9.5.9 资源控制 ………………………………………………………………………………………………… 370
9.5.10 微基准测试 …………………………………………………………………………………………… 370
9.5.11 伸缩 ……………………………………………………………………………………………………… 371
9.6 分析 ……………………………………………………………………………………………… 372
9.6.1 iostat ………………………………………………………………………………………………………. 373
9.6.2 sar ………………………………………………………………………………………………………….. 380
9.6.3 pidstat …………………………………………………………………………………………………….. 381
9.6.4 DTrace ……………………………………………………………………………………………………. 382
9.6.5 SystemTap ………………………………………………………………………………………………. 390
9.6.6 perf …………………………………………………………………………………………………………. 390
9.6.7 iotop ……………………………………………………………………………………………………….. 391
9.6.8 iosnoop …………………………………………………………………………………………………… 393
9.6.9 blktrace …………………………………………………………………………………………………… 396
9.6.10 MegaCli ………………………………………………………………………………………………… 397
9.6.11 smartctl …………………………………………………………………………………………………. 398
9.6.12 可视化 ………………………………………………………………………………………………….. 399
9.7 实验 ……………………………………………………………………………………………. 402
9.7.1 Ad Hoc ……………………………………………………………………………………………………. 402
9.7.2 自定义负载生成器 ………………………………………………………………………………….. 403
9.7.3 微基准测试工具 ……………………………………………………………………………………… 403
9.7.4 随机读示例 …………………………………………………………………………………………….. 403
9.8 调优 ……………………………………………………………………………………………….. 404
9.8.1 操作系统可调参数 ………………………………………………………………………………….. 404
9.8.2 磁盘设备可调参数 ………………………………………………………………………………….. 406
9.8.3 磁盘控制器可调参数 ………………………………………………………………………………. 406
9.9 练习 ……………………………………………………………………………………………….. 407
9.10 参考资料 …………………………………………………………………………………… 408
第10 章 网络 ………………………………………………………………………………………. 410
10.1 术语 …………………………………………………………………………………………….. 411
10.2 模型 ……………………………………………………………………………………………… 411
10.2.1 网络接口 ………………………………………………………………………………………………. 411
10.2.2 控制器 ………………………………………………………………………………………………….. 412
10.2.3 协议栈 ………………………………………………………………………………………………….. 412
10.3 概念 ……………………………………………………………………………………………. 413
10.3.1 网络和路由 …………………………………………………………………………………………… 413
10.3.2 协议 ……………………………………………………………………………………………………… 414
10.3.3 封装 ……………………………………………………………………………………………………… 414
10.3.4 包长度 ………………………………………………………………………………………………….. 414
10.3.5 延时 ……………………………………………………………………………………………………… 415
10.3.6 缓冲 ……………………………………………………………………………………………………… 417
10.3.7 连接积压队列 ……………………………………………………………………………………….. 417
10.3.8 接口协商 ………………………………………………………………………………………………. 417
10.3.9 使用率 ………………………………………………………………………………………………….. 418
10.3.10 本地连接 …………………………………………………………………………………………….. 418
10.4 架构 ……………………………………………………………………………………………. 418
10.4.1 协议 ……………………………………………………………………………………………………… 418
10.4.2 硬件 ……………………………………………………………………………………………………… 421
10.4.3 软件 ……………………………………………………………………………………………………… 423
10.5 方法 ……………………………………………………………………………………. 427
10.5.1 工具法 …………………………………………………………………………………………. 428
10.5.2 USE 方法 ………………………………………………………………………………………………. 428
10.5.3 工作负载特征归纳 ………………………………………………………………………………… 429
10.5.4 延时分析 ………………………………………………………………………………………………. 430
10.5.5 性能监测 ………………………………………………………………………………………………. 431
10.5.6 数据包嗅探 …………………………………………………………………………………………… 431
10.5.7 TCP 分析 ………………………………………………………………………………………………. 432
10.5.8 挖掘分析 ………………………………………………………………………………………………. 433
10.5.9 静态性能调优 ……………………………………………………………………………………….. 433
10.5.10 资源控制 …………………………………………………………………………………………….. 434
10.5.11 微基准测试 …………………………………………………………………………………………. 434
10.6 分析 …………………………………………………………………………………………… 435
10.6.1 netstat ……………………………………………………………………………………………………. 435
10.6.2 sar ………………………………………………………………………………………………………… 440
10.6.3 ifconfig …………………………………………………………………………………………………. 442
10.6.4 ip ………………………………………………………………………………………………………….. 443
10.6.5 nicstat ……………………………………………………………………………………………………. 443
10.6.6 dladm ……………………………………………………………………………………………………. 444
10.6.7 ping ………………………………………………………………………………………………………. 445
10.6.8 traceroute ………………………………………………………………………………………………. 445
10.6.9 pathchar ………………………………………………………………………………………………… 446
10.6.10 tcpdump …………………………………………………………………………………………………. 446
10.6.11 snoop …………………………………………………………………………………………………… 447
10.6.12 Wireshark …………………………………………………………………………………………….. 450
10.6.13 DTrace ………………………………………………………………………………………………… 450
10.6.14 SystemTap …………………………………………………………………………………………… 461
10.6.15 perf ……………………………………………………………………………………………………… 461
10.6.16 其他工具 …………………………………………………………………………………………….. 462
10.7 实验 ……………………………………………………………………………………….. 463
10.7.1 iperf ………………………………………………………………………………………………………. 463
10.8 调优 ………………………………………………………………………………………………… 464
10.8.1 Linux …………………………………………………………………………………………………….. 465
10.8.2 Solaris …………………………………………………………………………………………………… 467
10.8.3 配置 ……………………………………………………………………………………………………… 469
10.9 练习 ……………………………………………………………………………………………….. 470
10.10 参考 …………………………………………………………………………………………. 471
第11 章 云计算 ………………………………………………………………………………………….. 473
11.1 背景 ………………………………………………………………………………………………… 474
11.1.1 性价比 ……………………………………………………………………………………….. 474
11.1.2 可扩展的架构 ……………………………………………………………………………………….. 474
11.1.3 容量规划 ………………………………………………………………………………………………. 475
11.1.4 存储 ……………………………………………………………………………………………………… 477
11.1.5 多租户 ………………………………………………………………………………………………….. 477
11.2 OS 虚拟化 ……………………………………………………………………………………….. 478
11.2.1 系统开销 ………………………………………………………………………………………………. 479
11.2.2 资源控制 ………………………………………………………………………………………………. 481
11.2.3 可观测性 ………………………………………………………………………………………………. 484
11.3 硬件虚拟化 …………………………………………………………………………………. 489
11.3.1 系统开销 ………………………………………………………………………………………………. 490
11.3.2 资源控制 ………………………………………………………………………………………………. 495
11.3.3 可观测性 ………………………………………………………………………………………………. 498
11.4 比较 ……………………………………………………………………………………………………… 503
11.5 练习 …………………………………………………………………………………………………… 505
11.6 参考资料 ………………………………………………………………………………………………… 506
第12 章 基准测试 ……………………………………………………………………………………… 508
12.1 背景 …………………………………………………………………………………………………. 508
12.1.1 事情 ……………………………………………………………………………………………………… 509
12.1.2 有效的基准测试 ……………………………………………………………………………………. 509
12.1.3 基准测试之罪 ……………………………………………………………………………………….. 511
12.2 基准测试的类型 ………………………………………………………………………………….. 516
12.2.1 微基准测试 …………………………………………………………………………………………… 517
12.2.2 模拟 ……………………………………………………………………………………………………… 518
12.2.3 回放 ……………………………………………………………………………………………………… 519
12.2.4 行业标准 ………………………………………………………………………………………………. 519
12.3 方法 …………………………………………………………………………………………… 521
12.3.1 被动基准测试 ……………………………………………………………………………………….. 521
12.3.2 主动基准测试 ……………………………………………………………………………………….. 522
12.3.3 CPU 剖析 ……………………………………………………………………………………………… 524
12.3.4 USE 方法 ………………………………………………………………………………………………. 525
12.3.5 工作负载特征归纳 ………………………………………………………………………………… 526
12.3.6 自定义基准测试 ……………………………………………………………………………………. 526
12.3.7 逐渐增加负载 ……………………………………………………………………………………….. 526
12.3.8 完整性检查 …………………………………………………………………………………………… 528
12.3.9 统计分析 ………………………………………………………………………………………………. 529
12.4 基准测试问题 ……………………………………………………………………………………. 530
12.5 练习 ……………………………………………………………………………………………………. 531
12.6 参考 …………………………………………………………………………………………….. 532
第13 章 案例研究 ………………………………………………………………………………… 534
13.1 案例研究:红鲸 …………………………………………………………………………………. 534
13.1.1 问题陈述 ………………………………………………………………………………………………. 535
13.1.2 支持 ……………………………………………………………………………………………………… 536
13.1.3 上手 ……………………………………………………………………………………………………… 537
13.1.4 选择征途 ………………………………………………………………………………………………. 538
13.1.5 USE 方法 ………………………………………………………………………………………………. 539
13.1.6 我们做完了吗 ……………………………………………………………………………………….. 542
13.1.7 二度出击 ………………………………………………………………………………………………. 542
13.1.8 基础 ……………………………………………………………………………………………………… 543
13.1.9 忽略红鲸 ………………………………………………………………………………………………. 544
13.1.10 审问内核 …………………………………………………………………………………………….. 545
13.1.11 为什么 ………………………………………………………………………………………………… 546
13.1.12 尾声 ……………………………………………………………………………………………………. 548
13.2 结语 ………………………………………………………………………………………….. 548
13.3 附加信息 ………………………………………………………………………………………………… 549
13.4 参考 ……………………………………………………………………………………………………… 549
附录A USE 法:Linux ………………………………………………………………………………………….. 551
附录B USE 法:Solaris ……………………………………………………………………………………….. 556
附录C sar 总结 ………………………………………………………………………………… 561
附录D DTrace 单行命令 …………………………………………………………………………… 563
附录E 从DTrace 到SystemTap ……………………………………………………………………………. 573
附录F 精选练习题答案 …………………………………………………………………………… 582
附录G 系统性能名人录 ………………………………………………………………………….. 585
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小熊分享邦(www.xxfxb.com),支持正版书籍,谢谢。

赞(0) 打赏
未经允许不得转载:小熊分享邦 » 性能之巅 | 小熊书籍

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏