作 者:(美)布兰登·格雷格 著 徐章宁,吴寒思,陈磊 译
定 价:149
出 版 社:电子工业出版社
出版日期:2015年08月01日
页 数:644
装 帧:平装
ISBN:9787121267925
●前言
致谢
关于作者
章绪论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.4Ad hoc核对清单法33
2.5.5问题陈述法33
2.5.6科学法34
2.5.7诊断循环35
2.5.8工具法35
2.5.9USE方法36
2.5.10工作负载特征归纳42
2.5.11向下挖掘分析43
2.5.12延时分析44
2.5.13R方法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.3Amdahl扩展定律51
2.通用扩展定律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.1UNIX90
3.3.2基于Solaris90
3.3.3基于Linux93
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/proc103
4.2.2/sys108
4.2.3kstat109
4.2.4延时核算111
4.2.5微状态核算112
4.2.6其他的观测源112
4.3DTrace114
4.3.1静态和动态跟踪115
4.3.2探针116
4.3.3provider116
4.3.4参数117
4.3.5D语言117
4.3.6内置变量118
4.3.7action118
4.3.8变量类型119
4.3.9单行命令121
4.3.10脚本121
4.3.11开销122
4.3.12文档和资源123
4.4SystemTap124
4.4.1探针124
4.4.2tapset125
4.4.3action和内置变量125
4.4.4示例125
4.4.5开销127
4.4.6文档和资源128
4.5perf128
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/O139
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.2CPU剖析146
5.4.3系统调用分析148
5.4.4I/O剖析154
5.4.5工作负载特征归纳155
5.4.6USE方法155
5.4.7向下挖掘法156
5.4.8锁分析156
5.4.9静态性能调优159
5.5练习160
5.6参考161
第6章CPU162
6.1术语163
6.2模型163
6.2.1CPU架构163
6.2.2CPU内存缓存1
6.2.3CPU运行队列165
6.3概念165
6.3.1时钟频率165
6.3.2指令166
6.3.3指令流水线166
6.3.4指令宽度167
6.3.5CPI,IPC167
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
架构171
.1硬件171
.2软件179
6.5方法184
6.5.1工具法184
6.5.2USE方法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.10CPU绑定190
6.5.11微型基准测试191
6.5.12扩展191
6.6分析192
6.6.1uptime192
6.6.2vmstat194
6.6.3mpstat195
6.sar197
6.6.5ps198
6.6.699
6.6.7prstat200
6.6.8pidstat201
6.6.9time和ptime202
6.6.10DTrace203
6.5.11SystemTap209
6.6.12perf209
6.6.13cpustat215
6.6.14其他工具216
6.6.15可视化216
6.7实验219
6.7.1Ad Hoc219
6.7.2SysBench220
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.2USE方法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.1vmstat254
7.5.2sar256
7.5.3slabtop259
7.5.4::kmstat260
7.5.5ps261
7.5.6top262
7.5.7prstat263
7.5.8pmap2
7.5.9DTrace265
7.5.10SystemTap269
7.5.11其他工具269
7.6调优270
7.6.1可调参数271
7.6.2多个页面大小273
7.6.3分配器274
7.资源控制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/O282
8.3.4预取283
8.3.5预读284
8.3.6写回缓存284
8.3.7同步写284
8.3.8裸I/O和直接I/O285
8.3.9非阻塞I/O285
8.3.10内存映射文件286
8.3.11元数据286
8.3.12逻辑I/Ovs.物理I/O287
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.2VFS291
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.1vfsstat312
8.6.2fsstat313
8.6.3strace、truss314
8.DTrace314
8.6.5SystemTap323
8.6.6LatencyTOP323
8.6.7free324
8.6.8top324
8.6.9vmstat324
8.6.10sar325
8.6.11slabtop326
8.6.12mdb::kmastat327
8.6.13fcachestat327
8.6.14/proc/meminfo328
8.6.15mdb::memstat328
8.6.16kstat329
8.6.17其他工具330
8.6.18可视化331
8.7实验331
8.7.1Ad Hoc332
8.7.2微型基准测试工具332
8.7.3缓存写回334
8.8调优334
8.8.1应用程序调用335
8.8.2ext3336
8.8.3ZFS336
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/O347
9.3.5读/写比348
9.3.6I/O大小348
9.3.7IOPS并不平等349
9.3.8非数据传输磁盘命令349
9.3.9使用率349
9.3.10饱和度350
9.3.11I/O等待350
9.3.12同步vs异步351
9.3.13磁盘vs应用程序I/O351
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工具法3
9.5.2USE方法3
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.1iostat373
9.6.2sar380
9.6.3pidstat381
9.DTrace382
9.6.5SystemTap390
9.6.6perf390
9.6.7iotop391
9.6.8iosnoop393
9.6.9blktrace396
9.6.10MegaCli397
9.6.11smartctl398
9.6.12可视化399
9.7实验402
9.7.1Ad Hoc402
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
0章网络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.2USE方法428
10.5.3工作负载特征归纳429
10.5.4延时分析430
10.5.5性能监测431
10.5.6数据包431
10.5.7TCP分析432
10.5.8挖掘分析433
10.5.9静态性能调优433
10.5.10资源控制434
10.5.11微基准测试434
10.6分析435
10.6.1netstat435
10.6.2sar440
10.6.3ifconfig442
10.ip443
10.6.5nicstat443
10.6.6dlAd m444
10.6.7ping445
10.6.8traceroute445
10.6.9pathchar446
10.6.10tcpdump446
10.6.11snoop447
10.6.12Wireshark450
10.6.13DTrace450
10.6.14SystemTap461
10.6.15perf461
10.6.16其他工具462
10.7实验463
10.7.1iperf463
10.8调优4
10.8.1Linux465
10.8.2Solaris467
10.8.3配置469
10.9练习470
10.10参考471
1章云计算473
11.1背景474
11.1.1474
11.1.2可扩展的架构474
11.1.3容量规划475
11.1.4存储477
11.1.5多租户477
11.2OS虚拟化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
2章基准测试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.3CPU剖析524
12.3.4USE方法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
3章案例研究534
13.1案例研究:红鲸534
13.1.1问题陈述535
13.1.2支持536
13.1.3上手537
13.1.4选择征途538
13.1.5USE方法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
附录AUSE法:Linux551
附录BUSE法:Solaris556
附录Csar总结561
附录DDTrace单行命令563
附录E从DTrace到SystemTap573
附录F精选练习题答案582
附录G系统性能名人录585
《性能之巅:洞悉系统、企业与云计算》基于Linux和Solaris系统阐述了适用于所有系统的性能理论和方法,Brendan Gregg将业界普遍承认的性能方法、工具和指标收集于本书之中。阅读本书,你能洞悉系统运作的方式,学习到分析和提高系统与应用程序性能的方法,这些性能方法同样适用于大型企业与云计算这类较为复杂的环境的性能分析与调优。