《LINUX服务器性能调整》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)SanderaK.Johnson,GerritHuizenga等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302205326
  • 页数:422 页
图书介绍:本书讲述安装和配置Linux,以便达到最高性能,掌握Linux 2.3至2.6版本的内核:组件、性能问题以及优化可能性,对性能数据加以解读,以便分析Linux服务器的真实行为。

第Ⅰ部分 Linux概述 3

第1章 Linux系统安装的性能问题 3

1.1 引言 3

1.2 安装前的规划 3

1.2.1 选择分区位置 4

1.2.2 使用多个硬盘驱动器 4

1.2.3 选择文件系统 4

1.2.4 转换文件系统 5

1.2.5 配置RAID 6

1.3 Linux 2.6内核的可配置属性 8

1.3.1 I/O提升器 8

1.3.2 超大TLB页面支持 8

1.4 Linux日志工具 9

1.4.1 /var/log/messages文件 9

1.4.2 /var/log/XFree86.0.log文件 9

1.4.3 日志轮转 10

1.4.4 日志工具 10

1.4.5 日志定制 10

1.5 BSD与系统V的初始化机制 11

1.5.1 初始化表(/etc/inittab) 11

1.5.2 BSD的初始化表(Slackware) 12

1.5.3 系统V的初始化表(Red Hat) 13

1.6 小结 14

1.7 参考文献 14

第2章 Linux内核机制 15

2.1 引言 15

2.2 Linux的发展历程 15

2.3 Linux内核体系结构 15

2.3.1 内核的职能 16

2.3.2 内核组织结构与模块 16

2.3.3 内核服务 16

2.3.4 /proc文件系统的外部性能视图 16

2.3.5 内存管理 17

2.4 进程管理 18

2.4.1 进程、任务与内核线程 19

2.4.2 调度与上下文切换 19

2.5 进程间通信 20

2.5.1 信号 20

2.5.2 管道 20

2.5.3 系统V的IPC机制 21

2.6 Linux对称多处理(SMP)模型 22

2.6.1 多处理系统类型 22

2.6.2 同步与数据串行化 22

2.6.3 锁、锁粒度与锁开销 22

2.6.4 cache一致性 23

2.6.5 处理器亲和度 23

2.7 文件系统 23

2.7.1 虚拟文件系统(VFS) 23

2.7.2 ext2fs 23

2.7.3 LVM与RAID 24

2.7.4 磁盘卷组 24

2.7.5 设备相关文件 25

2.7.6 devfs 25

2.8 Linux 2.6内核的新特性 26

2.9 小结 26

2.10 参考文献 27

第3章 服务器体系结构 29

3.1 引言 29

3.2 Linux服务器 29

3.3 多处理器与多处理机制 30

3.3.1 服务器拓扑结构 30

3.3.2 处理器的混用机制 31

3.4 内存 32

3.5 I/O 33

3.6 Linux企业级服务器 34

3.7 Linux集群 35

3.7.1 高性能集群 35

3.7.2 高可用集群 36

3.8 服务器系统示例 36

3.8.1 IBM zSeries大型机 36

3.8.2 刀片服务器 39

3.8.3 NUMA 39

3.9 小结 44

第Ⅱ部分 性能分析工具 47

第4章 系统性能监控 47

4.1 引言 47

4.2 Linux与性能分析的背景知识 47

4.3 CPU利用率 49

4.3.1 vmstat 51

4.3.2 top与gtop工具 53

4.3.3 sar 54

4.4 内存利用率 56

4.4.1 /proc/meminfo与/proc/slabinfo 56

4.4.2 ps 57

4.4.3 vmstat 59

4.5 I/O利用率 59

4.5.1 iostat 61

4.5.2 sar 62

4.6 网络利用率 63

4.6.1 网络统计信息 64

4.6.2 接口信息 66

4.6.3 TCP/IP协议统计数据 66

4.6.4 nfsstat 67

4.7 小结 67

4.8 参考文献 67

第5章 系统跟踪工具 69

5.1 引言 69

5.2 系统跟踪机制的需求 69

5.3 top 70

5.4 strace 72

5.5 OProfile 74

5.5.1 opcontrol 75

5.5.2 数据概况描述工具 76

5.6 Performance Inspector 82

5.6.1 Above Idle 83

5.6.2 Per-Thread Time 84

5.6.3 Trace Profiling 86

5.6.4 指令跟踪 89

5.6.5 Java Profiler 91

5.6.6 Java Lock Monitor 103

5.6.7 Performance Inspector的执行工具 106

5.7 小结 107

5.8 参考文献 107

第6章 工作负荷的性能基准测试 109

6.1 引言 109

6.2 改进工作负荷的基准测试方法 110

6.3 基准测试的类型 111

6.4 微基准测试 111

6.4.1 操作系统基准测试 111

6.4.2 磁盘基准测试 124

6.4.3 网络基准测试 132

6.4.4 应用基准测试 133

6.5 Web服务器基准测试 137

6.5.1 SPECweb、SPECweb SSL与TPC-W 137

6.5.2 SPECjAppServer与ECPerf 138

6.5.3 其他应用基准测试 139

6.6 小结 139

第Ⅲ部分 系统调优 143

第7章 系统性能原理和策略:基准测试方法的案例分析 143

7.1 引言 143

7.2 性能评价方法 143

7.2.1 跟踪机制 143

7.2.2 工作负荷特征描述 144

7.2.3 数值分析 144

7.2.4 模拟方法 144

7.3 基准测试案例分析 144

7.4 分析方法 145

7.4.1 软硬件配置 145

7.4.2 运行规则 146

7.4.3 设置目标 146

7.4.4 测量、分析与调优 146

7.4.5 退出策略 147

7.5 基准测试程序 148

7.5.1 基准测试程序介绍 148

7.5.2 性能结果 149

7.6 小结 151

7.7 致谢 152

7.8 参考文献 152

第8章 调度器调优 153

8.1 引言 153

8.2 单处理器系统 153

8.3 对称多处理 154

8.4 非一致内存访问 154

8.5 对称多线程 155

8.6 Linux 2.6内核调度器 155

8.7 负载平衡 156

8.8 调度器的可调参数 157

8.8.1 *CHILD_PENALTY 157

8.8.2 *CREDIT_LIMIT 157

8.8.3 *EXIT_WEIGHT 157

8.8.4 *INTERACTIVE_DELTA 157

8.8.5 *MAX_SLEEP_AVG 158

8.8.6 *MAX_TIMESLICE 158

8.8.7 *MIN_TIMESLICE 158

8.8.8 *PARENT_PENALTY 158

8.8.9 *PRIO_BONUS_RATIO 158

8.8.10 *STARVATION_LIMIT 158

8.9 小结 159

8.10 参考文献 159

第9章 Linux虚存的性能问题 161

9.1 引言 161

9.2 内存与地址空间 162

9.2.1 地址空间 162

9.2.2 用户地址空间 162

9.2.3 VM区域 163

9.2.4 内核地址空间 164

9.3 高端内存支持 165

9.4 分页与交换机制 165

9.4.1 替换策略 166

9.4.2 页面替换与内存平衡 167

9.5 Linux页表 167

9.6 Linux 2.6内核中的新特性 169

9.6.1 rmap与objrmap 169

9.6.2 大型页面的支持 169

9.6.3 页面分配与替换 170

9.6.4 Slab分配器 171

9.6.5 VM的可调参数 171

9.6.6 CPU调度器 173

9.7 小结 175

9.8 参考文献 175

第10章 I/O子系统的性能问题 177

10.1 引言 177

10.2 I/O调度与块I/O(BIO)层 177

10.2.1 Linux 2.6内核的I/O调度器 178

10.2.2 Linux 2.4内核的I/O调度器 179

10.2.3 Linux 2.6内核的最终期限I/O调度器 179

10.2.4 调度器的可调参数 180

10.2.5 Linux 2.6内核的Anticipatory I/O调度器 181

10.2.6 Linux 2.6内核的CFQ调度器 183

10.2.7 Linux 2.6内核的noop I/O调度器 183

10.2.8 I/O调度器的性能含义 183

10.3 批量读写请求 184

10.4 读预测启发算法 184

10.5 影响性能的I/O部件 185

10.6 I/O设备寻址 186

10.7 小结 186

10.8 参考文献 186

第11章 文件系统调优 189

11.1 引言 189

11.2 文件系统基本知识 189

11.2.1 文件系统的实现考虑 189

11.2.2 创建优化的文件系统 190

11.2.3 文件系统基本术语 190

11.3 日志型文件系统 192

11.3.1 文件系统的故障处理机制 193

11.3.2 事务机制 193

11.3.3 选项 194

11.4 影响文件系统性能的磁盘因素 195

11.4.1 物理磁盘存储器的考虑事项 195

11.4.2 磁盘的性能特征 196

11.4.3 传输速率 196

11.4.4 hdparm 197

11.5 文件系统的碎片整理 199

11.6 文件同步 199

11.6.1 确保数据或文件完整性 200

11.6.2 使用函数调用 200

11.6.3 使用文件描述符 200

11.6.4 sync/fsync的性能含义 201

11.7 bdflush参数 201

11.8 异步输入与输出 202

11.8.1 使用异步I/O 202

11.8.2 异步I/O函数 202

11.9 原始磁盘I/O 203

11.9.1 在Linux上设置原始I/O 203

11.9.2 示例 203

11.10 Ext2与Ext3文件系统 204

11.10.1 Ext2的组织结构 204

11.10.2 Ext2文件系统中的块分配方式 206

11.10.3 创建Ext2文件系统 206

11.10.4 Ext2文件系统的Ext3扩展机制 207

11.10.5 Ext3的内核配置支持 207

11.10.6 Ext3文件系统调优方法 208

11.10.7 创建Ext3分区 208

11.10.8 Ext2与Ext3的转换 209

11.10.9 建立外部日志 209

11.10.10 Ext2/Ext3工具 209

11.11 ReiserFS 210

11.11.1 ReiserFS的内核配置支持 211

11.11.2 ReisetFS文件系统调优方法 211

11.11.3 创建ReiserFS文件系统 211

11.11.4 建立外部日志 212

11.11.5 挂接ReiserFS文件系统 212

11.11.6 挂接选项 213

11.11.7 调优ReiserFS 213

11.11.8 ReiserFS文件系统实用工具 214

11.12 日志式文件系统 214

11.12.1 JFS的内核配置支持 215

11.12.2 JFS文件系统的调优方法 215

11.12.3 创建JFS文件系统 216

11.12.4 建立外部日志 216

11.12.5 挂接文件系统 216

11.12.6 挂接选项 216

11.12.7 调优JFS 217

11.12.8 JFS文件系统实用工具 217

11.13 下一代文件系统 217

11.13.1 XFS的内核配置支持 218

11.13.2 XFS文件系统的调优方法 218

11.13.3 创建XFS文件系统 219

11.13.4 容量饱和时的文件系统行为 219

11.13.5 建立外部日志 219

11.13.6 挂接文件系统 220

11.13.7 挂接选项 220

11.13.8 调优XFS 220

11.13.9 XFS文件系统实用工具 221

11.14 小结 222

11.15 参考文献 223

第12章 网络调优 225

12.1 引言 225

12.2 网络协议栈 225

12.3 内核参数调优机制 226

12.4 内核自动调优机制 226

12.5 核心内核参数 227

12.6 TCP/IPv4协议内核参数 228

12.6.1 TCP缓冲区与内存管理 228

12.6.2 TCP选项 230

12.6.3 TCP连接管理 231

12.6.4 TCP连接保持管理 232

12.6.5 IP端口范围 233

12.7 小结 233

12.8 参考文献 233

第13章 进程间通信 235

13.1 引言 235

13.2 进程间通信的定义 235

13.3 Linux SysV的IPC资源与ipcs命令 236

13.3.1 ipcs命令 236

13.3.2 IPC标识符及其限制 237

13.4 信号量参数 238

13 4 1 semmni 238

13.4.2 semmns 239

13.4.3 semmsl 239

13.4.4 semopm 239

13.4.5 semvmx 239

13.4.6 未用的信号量参数 239

13.5 消息队列参数 240

13.5.1 msgmni 240

13.5.2 msgmax 240

13.5.3 msgmnb 241

13.5.4 未用的消息队列参数 241

13.6 共享内存段参数 241

13.6.1 shmmni 242

13.6.2 shmmax 242

13.6.3 shrnmin 242

13.6.4 shmall 242

13.7 可配置IPC参数的动态修改机制 242

13.7.1 使用/proc 242

13.7.2 使用sysctl 243

13.8 IPC参数的静态配置 243

13.9 管道机制 243

13.10 小结 244

第14章 代码调优 245

14.1 引言 245

14.2 一般原则 245

14.3 应用的概要描述工具 246

14.4 编译器选项调优 246

14.4.1 性能调优的基本步骤 247

14.4.2 编译器优化的问题 247

14.5 代码调优 247

14.6 算法设计调优 248

14.6.1 问题与解决方案的可能性 248

14.6.2 问题描述 248

14.6.3 程序 249

14.6.4 设计代码 251

14.6.5 服务器 251

14.6.6 计时 252

14.6.7 Socket 253

14.6.8 线程 256

14.6.9 同步 259

14.6.10 文件I/O 262

14.6.11 客户端 264

14.6.12 代码讨论 266

14.6.13 编译选项 266

14.6.14 链接库 267

14.7 小结 268

第Ⅳ部分 Linux服务器应用的性能特征第15章 Web服务器的性能调优 271

15.1 引言 271

15.2 HTTP请求与响应 272

15.3 Web服务器的网络行为 273

15.4 Web服务器事务 275

15.5 Web服务器模型 275

15.6 Web服务器的调优方法 276

15.6.1 Web服务器的通用调优机制 277

15.6.2 Apache服务器的调优机制 277

15.6.3 Flash与事件驱动的其他服务器的调优机制 278

15.6.4 Tux的调优机制 278

15.6.5 Web服务器的性能评价工具 278

15.7 小结 279

15.8 参考文献 279

第16章 文件与打印服务器的性能调优 281

16.1 引言 281

16.2 专用网络存储服务器的类型 282

16.3 网络存储性能的优化方法 282

16.3.1 确定远程存储的数据 282

16.3.2 SAN与网络文件系统/NAS 282

16.3.3 网络文件系统协议 283

16.3.4 客户与服务器的实现选择 286

16.3.5 Linux客户端调优的关键概念 287

16.3.6 Linux文件服务器的调优机制 290

16.3.7 性能测量 292

16.3.8 改进容量规划的负荷测量方法 292

16.3.9 打印服务器的性能因素 293

16.4 参考文献 293

第17章 数据库服务器的性能调优 295

17.1 引言 295

17.2 数据库体系结构 295

17.3 数据库的性能调优领域 296

17.3.1 I/O调优 296

17.3.2 队列长度与响应时间 296

17.3.3 负载平衡 297

17.3.4 全局内存 298

17.3.5 日志设备 299

17.3.6 典型的数据库工作负荷 300

17.4 进程管理 300

17.5 内存管理 301

17.6 I/O管理 302

17.6.1 回弹缓冲区 302

17.6.2 原始I/O 302

17.6.3 向量I/O 303

17.6.4 异步I/O 303

17.6.5 直接I/O 303

17.6.6 块I/O 304

17.6.7 I/O请求锁 304

17.7 小结 304

第18章 应用服务器的性能调优 305

18.1 引言 305

18.2 应用服务器概念 305

18.3 Java、J2EE与应用服务器 305

18.4 应用服务器的性能特征 307

18.4.1 应用服务器的特征 308

18.4.2 Linux上的应用服务器 308

18.5 性能与高可用性的改进 316

18.5.1 SMP扩展性 316

18.5.2 集群 317

18.5.3 拓扑结构 319

18.5.4 性能调优 322

18.6 小结 324

18.7 参考文献 325

第Ⅴ部分 调优案例分析 329

第19章 Linux 2.6内核I/O调度器调优案例分析 329

19.1 引言 329

19.2 基准测试环境与工作负荷概况 330

19.3 I/O调度器与性能 331

19.4 单CPU单磁盘配置 331

19.5 8路RAID-5配置 332

19.6 16路RAID-0配置 335

19.7 AS串行读性能 335

19.8 AS与Deadline的性能 336

19.9 CFQ性能 337

19.10 小结 339

19.11 参考文献 339

第20章 文件系统调优实例分析 341

20.1 引言 341

20.2 文件布局分析 341

20.2.1 Ext2/Ext3文件系统布局 341

20.2.2 日志文件系统(JFS)布局 347

20.2.3 ReiserFS文件系统布局 349

20.2.4 XFS文件系统布局 351

20.3 文件系统的调优机制 353

20.3.1 Ext3的外部日志调优选项 353

20.3.2 ReiserFS的外部日志调优选项 357

20.3.3 JFS的外部日志调优选项 358

20.3.4 XFS的调优选项 359

20.4 I/O的测量方法 361

20.4.1 iostat 361

20.4.2 iostat与sar工具 362

20.5 小结 367

20.6 参考文献 367

第21章 Linux系统网络性能实例分析 369

21.1 引言 369

21.2 实例分析中使用的基准测试 369

21.2.1 NetBench 370

21 2.2 Netperf3 370

21.2.3 VolanoMark 370

21.2.4 SPECWeb99 370

21.3 Linux 2.4与2.6内核中的增强机制 371

21.3.1 SendFile 371

21.3.2 TCP分段卸载 373

21.3.3 网络负荷中的进程与IRQ亲合性 375

21.3.4 NAPI 376

21.3.5 TCP卸载引擎 378

21.4 示例分析 379

21.4.1 NetBench 380

21.4.2 Netperf3(千兆位以太网调优实例分析) 381

21.4.3 VolanoMark 383

21.4.4 SPECWeb99 384

21.5 小结 386

21.6 参考文献 387

第22章 商用负载调优实例分析 389

22.1 引言 389

22.2 商用负载调优概述 389

22.3 J2EE的标准商用负载模型 390

22.4 商用负载模型实例:股票交易 390

22.4.1 系统配置 391

22.4.2 Trade3的详细信息 392

22.4.3 性能分析方法 395

22.5 性能分析试验 397

22.5.1 Web服务器 398

22.5.2 数据库后端程序 399

22.5.3 Java虚拟机 404

22.5.4 应用服务器 406

22.5.5 超线程 408

22.6 小结 409

22.7 参考文献 410

附录A 内核参数调优 411

A.1 引言 411

A.2 sysctl接口 411

A.3 procfs接口 412

A.4 sysfs(只针对Linux 2.6内核) 413

A.5 通用内核参数 413

A.5.1 共享内存 413

A.5.2 进程 414

A.5.3 信号 414

A.5.4 概要分析/调试 414

A.5.5 系统 414

A.6 虚存参数 415

A.7 文件系统参数 416

A.8 网络内核参数 417

A.8.1 网络核心参数 418

A.8.2 ICMP 418

A.8.3 邻居 419

A.8.4 配置 419

A.8.5 路由 420

A.8.6 TCP 420

A.8.7 IP分段 421