| 作者 |
| 徐章宁 Brendan Gregg(布兰登.格雷格) |
| 丛书名 |
| 出版社 |
| 电子工业出版社 |
| ISBN |
| 9787121267925 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 性能之巅-洞悉系统.企业与云计算 内容简介 大型企业服务、云计算和虚拟计算系统都面临着严重的性能挑战。如今,国际知名的性能专家brendan gregg将业界验证的方法、工具和指标融汇在一起,足以应对*为复杂环境的分析和调优工作。《性能之巅》着力讲述linux和unix的性能,但所论述的性能问题适用于所有操作系统。你将洞察到系统是如何工作与执行的,学习到如何分析和改进系统和应用程序性能的方法。 gregg书中的示例都通过裸机和云端虚拟机做演示,所运行的系统包括基于linux的ubuntu、fedora、centos和基于illumos的joyent smartos和ominiti omnios。无论是cpu、内存、磁盘与网络的“传统”分析,还是像云计算和动态跟踪这类新领域,本书系统地覆盖了现代系统性能的方方面面。这本书还帮助你识别复杂性能中“未知的未知”——在你不知道的地方出现的瓶颈。本书还收纳了一个详实的研究实例,向你展示一个真实云计算问题是如何从头到尾做分析的。 □ 现代性能分析与调优:术语、概念、模型、方法和技术 □ 动态跟踪技术与工具,收录dtrace、systemtap和perf示例 □ 内核内幕:揭示os在做什么 □ 如何使用系统观测工具、接口和框架 □ 理解和监控应用程序性能 □ 优化cpu:处理器、核、硬件线程、缓存、互联与内核调度 □ 内存优化:虚拟内存、换页、交换、内存架构、总线、地址空间与分配器 □ 文件系统i/o,包括缓存 □ 存储设备/控制器、磁盘i/o工作负载、raid,以及内核i/o □ 网络相关性能问题:协议、套接字、网卡和物理连接。 □ os和基于硬件虚拟化的性能实现,以及云计算所遇到的新问题 □ 基准测试:如何得到精确的结果并避免一般性的错误 《性能之巅:洞悉系统、企业与云计算》是企业和云计算环境运维人员的**指导:系统管理员、网络管理员、数据库管理员和web管理员、开发工程师以及其他专业人员。对于新接触性能优化的学生等人员,本书还提供了饱含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 周期分析 25 |