科技
类型
8.6
豆瓣评分
可以朗读
语音朗读
413千字
字数
2015-08-01
发行日期
展开全部
主编推荐语
基于Linux和Solaris系统阐述了适用于所有系统的性能理论和方法。
内容简介
大型网络、云计算、大数据和虚拟计算机系统的快速部署已经为性能优化带来了新的挑战。
本书为此提供了解决方案。国际知名的性能优化专家Brendan Gregg汇集了最先进的技术和工具来分析调优大型网络或云计算的环境。
本书的内容包括现代化的性能分析和容量规划;与云计算相关的新性能和可靠性挑战;方法、概念、术语、工具和指标;负载与结构问题的权衡;调整操作系统、CPU、内存、文件系统、磁盘、网络和总线;调整虚拟系统;性能相关的编程语言问题,对C、C++、Java和node.js编写的应用程序分析。
目录
- 版权信息
- 内容简介
- 推荐序1
- 推荐序2
- 推荐序3
- 推荐序4
- 推荐序5
- 推荐序6
- 译者序
- 前言
- 致谢
- 关于作者
- 第1章 绪论
- 1.1 系统性能
- 1.2 人员
- 1.3 事情
- 1.4 视角
- 1.5 性能是充满挑战的
- 1.5.1 性能是主观的
- 1.5.2 系统是复杂的
- 1.5.3 可能有多个问题并存
- 1.6 延时
- 1.7 动态跟踪
- 1.8 云计算
- 1.9 案例研究
- 1.9.1 缓慢的磁盘
- 1.9.2 软件变更
- 1.9.3 更多阅读
- 第2章 方法
- 2.1 术语
- 2.2 模型
- 2.2.1 受测系统
- 2.2.2 排队系统
- 2.3 概念
- 2.3.1 延时
- 2.3.2 时间量级
- 2.3.3 权衡三角
- 2.3.4 调整的影响
- 2.3.5 合适的层级
- 2.3.6 性能建议的时间点
- 2.3.7 负载vs.架构
- 2.3.8 扩展性
- 2.3.9 已知的未知
- 2.3.10 指标
- 2.3.11 使用率
- 2.3.12 饱和度
- 2.3.13 剖析
- 2.3.14 缓存
- 2.4 视角
- 2.4.1 资源分析
- 2.4.2 工作负载分析
- 2.5 方法
- 2.5.1 街灯讹方法
- 2.5.2 随机变动讹方法
- 2.5.3 责怪他人讹方法
- 2.5.4 Ad Hoc 核对清单法
- 2.5.5 问题陈述法
- 2.5.6 科学法
- 2.5.7 诊断循环
- 2.5.8 工具法
- 2.5.9 USE 方法
- 2.5.10 工作负载特征归纳
- 2.5.11 向下挖掘分析
- 2.5.12 延时分析
- 2.5.13 R 方法
- 2.5.14 事件跟踪
- 2.5.15 基础线统计
- 2.5.16 静态性能调整
- 2.5.17 缓存调优
- 2.5.18 微基准测试
- 2.6 建模
- 2.6.1 企业vs.云
- 2.6.2 可视化识别
- 2.6.3 Amdahl 扩展定律
- 2.6.4 通用扩展定律
- 2.6.5 排队理论
- 2.7 容量规划
- 2.7.1 资源极限
- 2.7.2 因素分析
- 2.7.3 扩展方案
- 2.8 统计
- 2.8.1 量化性能
- 2.8.2 平均值
- 2.8.3 标准方差、百分位数、中位数
- 2.8.4 变异系数
- 2.8.5 多重模态分布
- 2.8.6 异常值
- 2.9 监视
- 2.9.1 基于时间的规律
- 2.9.2 监测产品
- 2.9.3 启动以来的信息统计
- 2.10 可视化
- 2.10.1 线图
- 2.10.2 散点图
- 2.10.3 热图
- 2.10.4 表面图
- 2.10.5 可视化工具
- 2.11 练习
- 2.12 参考
- 第3章 操作系统
- 3.1 术语
- 3.2 背景
- 3.2.1 内核
- 3.2.2 栈
- 3.2.3 中断和中断线程
- 3.2.4 中断优先级
- 3.2.5 进程
- 3.2.6 系统调用
- 3.2.7 虚拟内存
- 3.2.8 内存管理
- 3.2.9 调度器
- 3.2.10 文件系统
- 3.2.11 缓存
- 3.2.12 网络
- 3.2.13 设备驱动
- 3.2.14 多处理器
- 3.2.15 抢占
- 3.2.16 资源管理
- 3.2.17 观测性
- 3.3 内核
- 3.3.1 UNIX
- 3.3.2 基于Solaris
- 3.3.3 基于Linux
- 3.3.4 差异
- 3.4 练习
- 3.5 参考
- 第4章 观测工具
- 4.1 工具类型
- 4.1.1 计数器
- 4.1.2 跟踪
- 4.1.3 剖析
- 4.1.4 监视(sar)
- 4.2 观测来源
- 4.2.1 /proc
- 4.2.2 /sys
- 4.2.3 kstat
- 4.2.4 延时核算
- 4.2.5 微状态核算
- 4.2.6 其他的观测源
- 4.3 DTrace
- 4.3.1 静态和动态跟踪
- 4.3.2 探针
- 4.3.3 provider
- 4.3.4 参数
- 4.3.5 D 语言
- 4.3.6 内置变量
- 4.3.7 action
- 4.3.8 变量类型
- 4.3.9 单行命令
- 4.3.10 脚本
- 4.3.11 开销
- 4.3.12 文档和资源
- 4.4 SystemTap
- 4.4.1 探针
- 4.4.2 tapset
- 4.4.3 action 和内置变量
- 4.4.4 示例
- 4.4.5 开销
- 4.4.6 文档和资源
- 4.5 perf
- 4.6 观测工具的观测
- 4.7 练习
- 4.8 参考
- 第5章 应用程序
- 5.1 应用程序基础
- 5.1.1 目标
- 5.1.2 常见情况的优化
- 5.1.3 观测性
- 5.1.4 大O 标记法
- 5.2 应用程序性能技术
- 5.2.1 选择I/O 尺寸
- 5.2.2 缓存
- 5.2.3 缓冲区
- 5.2.4 轮询
- 5.2.5 并发和并行
- 5.2.6 非阻塞I/O
- 5.2.7 处理器绑定
- 5.3 编程语言
- 5.3.1 编译语言
- 5.3.2 解释语言
- 5.3.3 虚拟机
- 5.3.4 垃圾回收
- 5.4 方法和分析
- 5.4.1 线程状态分析
- 5.4.2 CPU 剖析
- 5.4.3 系统调用分析
- 5.4.4 I/O 剖析
- 5.4.5 工作负载特征归纳
- 5.4.6 USE 方法
- 5.4.7 向下挖掘法
- 5.4.8 锁分析
- 5.4.9 静态性能调优
- 5.5 练习
- 第6章 CPU
- 6.1 术语
- 6.2 模型
- 6.2.1 CPU 架构
- 6.2.2 CPU 内存缓存
- 6.2.3 CPU 运行队列
- 6.3 概念
- 6.3.1 时钟频率
- 6.3.2 指令
- 6.3.3 指令流水线
- 6.3.4 指令宽度
- 6.3.5 CPI,IPC
- 6.3.6 使用率
- 6.3.7 用户时间/内核时间
- 6.3.8 饱和度
- 6.3.9 抢占
- 6.3.10 优先级反转
- 6.3.11 多进程,多线程
- 6.3.12 字长
- 6.3.13 编译器优化
- 6.4 架构
- 6.4.1 硬件
- 6.4.2 软件
- 6.5 方法
- 6.5.1 工具法
- 6.5.2 USE 方法
- 6.5.3 负载特征归纳
- 6.5.4 剖析
- 6.5.5 周期分析
- 6.5.6 性能监控
- 6.5.7 静态性能调优
- 6.5.8 优先级调优
- 6.5.9 资源控制
- 6.5.10 CPU 绑定
- 6.5.11 微型基准测试
- 6.5.12 扩展
- 6.6 分析
- 6.6.1 uptime
- 6.6.2 vmstat
- 6.6.3 mpstat
- 6.6.4 sar
- 6.6.5 ps
- 6.6.6 top
- 6.6.7 prstat
- 6.6.8 pidstat
- 6.6.9 time 和ptime
- 6.6.10 DTrace
- 6.6.11 SystemTap
- 6.6.12 perf
- 6.6.13 cpustat
- 6.6.14 其他工具
- 6.6.15 可视化
- 6.7 实验
- 6.7.1 Ad Hoc
- 6.7.2 SysBench
- 6.8 调优
- 6.8.1 编译器选项
- 6.8.2 调度优先级和调度类
- 6.8.3 调度器选项
- 6.8.4 进程绑定
- 6.8.5 独占CPU 组
- 6.8.6 资源控制
- 6.8.7 处理器选项(BIOS 调优)
- 6.9 练习
- 6.10 参考资料
- 第7章 内存
- 7.1 术语
- 7.2 概念
- 7.2.1 虚拟内存
- 7.2.2 换页
- 7.2.3 按需换页
- 7.2.4 过度提交
- 7.2.5 交换
- 7.2.6 文件系统缓存占用
- 7.2.7 使用率和饱和度
- 7.2.8 分配器
- 7.2.9 字长
- 7.3 架构
- 7.3.1 硬件
- 7.3.2 软件
- 7.3.3 进程地址空间
- 7.4 方法
- 7.4.1 工具法
- 7.4.2 USE 方法
- 7.4.3 使用特征归纳
- 7.4.4 周期分析
- 7.4.5 性能监测
- 7.4.6 泄漏检测
- 7.4.7 静态性能调优
- 7.4.8 资源控制
- 7.4.9 微基准测试
- 7.5 分析
- 7.5.1 vmstat
- 7.5.2 sar
- 7.5.3 slabtop
- 7.5.4 ::kmstat
- 7.5.5 ps
- 7.5.6 top
- 7.5.7 prstat
- 7.5.8 pmap
- 7.5.9 DTrace
- 7.5.10 SystemTap
- 7.5.11 其他工具
- 7.6 调优
- 7.6.1 可调参数
- 7.6.2 多个页面大小
- 7.6.3 分配器
- 7.6.4 资源控制
- 7.7 练习
- 7.8 参考资料
- 第8章 文件系统
- 8.1 术语
- 8.2 模型
- 8.2.1 文件系统接口
- 8.2.2 文件系统缓存
- 8.2.3 二级缓存
- 8.3 概念
- 8.3.1 文件系统延时
- 8.3.2 缓存
- 8.3.3 随机与顺序I/O
- 8.3.4 预取
- 8.3.5 预读
- 8.3.6 写回缓存
- 8.3.7 同步写
- 8.3.8 裸I/O 和直接I/O
- 8.3.9 非阻塞I/O
- 8.3.10 内存映射文件
- 8.3.11 元数据
- 8.3.12 逻辑I/O vs.物理I/O
- 8.3.13 操作并非不平等
- 8.3.14 特殊文件系统
- 8.3.15 访问时间戳
- 8.3.16 容量
- 8.4 架构
- 8.4.1 文件系统I/O 栈
- 8.4.2 VFS
- 8.4.3 文件系统缓存
- 8.4.4 文件系统特性
- 8.4.5 文件系统种类
- 8.4.6 卷和池
- 8.5 方法
- 8.5.1 磁盘分析
- 8.5.2 延时分析
- 8.5.3 负载特征归纳
- 8.5.4 性能监控
- 8.5.5 事件跟踪
- 8.5.6 静态性能调优
- 8.5.7 缓存调优
- 8.5.8 负载分离
- 8.5.9 内存文件系统
- 8.5.10 微型基准测试
- 8.6 分析
- 8.6.1 vfsstat
- 8.6.2 fsstat
- 8.6.3 strace、truss
- 8.6.4 DTrace
- 8.6.5 SystemTap
- 8.6.6 LatencyTOP
- 8.6.7 free
- 8.6.8 top
- 8.6.9 vmstat
- 8.6.10 sar
- 8.6.11 slabtop
- 8.6.12 mdb::kmastat
- 8.6.13 fcachestat
- 8.6.14 /proc/meminfo
- 8.6.15 mdb::memstat
- 8.6.16 kstat
- 8.6.17 其他工具
- 8.6.18 可视化
- 8.7 实验
- 8.7.1 Ad Hoc
- 8.7.2 微型基准测试工具
- 8.7.3 缓存写回
- 8.8 调优
- 8.8.1 应用程序调用
- 8.8.2 ext3
- 8.8.3 ZFS
- 8.9 练习
- 第9章 磁盘
- 9.1 术语
- 9.2 模型
- 9.2.1 简单磁盘
- 9.2.2 缓存磁盘
- 9.2.3 控制器
- 9.3 概念
- 9.3.1 测量时间
- 9.3.2 时间尺度
- 9.3.3 缓存
- 9.3.4 随机vs.连续I/O
- 9.3.5 读/写比
- 9.3.6 I/O 大小
- 9.3.7 IOPS 并不平等
- 9.3.8 非数据传输磁盘命令
- 9.3.9 使用率
- 9.3.10 饱和度
- 9.3.11 I/O 等待
- 9.3.12 同步vs.异步
- 9.3.13 磁盘vs.应用程序I/O
- 9.4 架构
- 9.4.1 磁盘类型
- 9.4.2 接口
- 9.4.3 存储类型
- 9.4.4 操作系统磁盘I/O 栈
- 9.5 方法
- 9.5.1 工具法
- 9.5.2 USE 方法
- 9.5.3 性能监控
- 9.5.4 负载特征归纳
- 9.5.5 延时分析
- 9.5.6 事件跟踪
- 9.5.7 静态性能调优
- 9.5.8 缓存调优
- 9.5.9 资源控制
- 9.5.10 微基准测试
- 9.5.11 伸缩
- 9.6 分析
- 9.6.1 iostat
- 9.6.2 sar
- 9.6.3 pidstat
- 9.6.4 DTrace
- 9.6.5 SystemTap
- 9.6.6 perf
- 9.6.7 iotop
- 9.6.8 iosnoop
- 9.6.9 blktrace
- 9.6.10 MegaCli
- 9.6.11 smartctl
- 9.6.12 可视化
- 9.7 实验
- 9.7.1 Ad Hoc
- 9.7.2 自定义负载生成器
- 9.7.3 微基准测试工具
- 9.7.4 随机读示例
- 9.8 调优
- 9.8.1 操作系统可调参数
- 9.8.2 磁盘设备可调参数
- 9.8.3 磁盘控制器可调参数
- 9.9 练习
- 第10章 网络
- 10.1 术语
- 10.2 模型
- 10.2.1 网络接口
- 10.2.2 控制器
- 10.2.3 协议栈
- 10.3 概念
- 10.3.1 网络和路由
- 10.3.2 协议
- 10.3.3 封装
- 10.3.4 包长度
- 10.3.5 延时
- 10.3.6 缓冲
- 10.3.7 连接积压队列
- 10.3.8 接口协商
- 10.3.9 使用率
- 10.3.10 本地连接
- 10.4 架构
- 10.4.1 协议
- 10.4.2 硬件
- 10.4.3 软件
- 10.5 方法
- 10.5.1 工具法
- 10.5.2 USE 方法
- 10.5.3 工作负载特征归纳
- 10.5.4 延时分析
- 10.5.5 性能监测
- 10.5.6 数据包嗅探
- 10.5.7 TCP 分析
- 10.5.8 挖掘分析
- 10.5.9 静态性能调优
- 10.5.10 资源控制
- 10.5.11 微基准测试
- 10.6 分析
- 10.6.1 netstat
- 10.6.2 sar
- 10.6.3 ifconfig
- 10.6.4 ip
- 10.6.5 nicstat
- 10.6.6 dladm
- 10.6.7 ping
- 10.6.8 traceroute
- 10.6.9 pathchar
- 10.6.10 tcpdump
- 10.6.11 snoop
- 10.6.12 Wireshark
- 10.6.13 DTrace
- 10.6.14 SystemTap
- 10.6.15 perf
- 10.6.16 其他工具
- 10.7 实验
- 10.7.1 iperf
- 10.8 调优
- 10.8.1 Linux
- 10.8.2 Solaris
- 10.8.3 配置
- 10.9 练习
- 10.10 参考
- 第11章 云计算
- 11.1 背景
- 11.1.1 性价比
- 11.1.2 可扩展的架构
- 11.1.3 容量规划
- 11.1.4 存储
- 11.1.5 多租户
- 11.2 OS 虚拟化
- 11.2.1 系统开销
- 11.2.2 资源控制
- 11.2.3 可观测性
- 11.3 硬件虚拟化
- 11.3.1 系统开销
- 11.3.2 资源控制
- 11.3.3 可观测性
- 11.4 比较
- 11.5 练习
- 第12章 基准测试
- 12.1 背景
- 12.1.1 事情
- 12.1.2 有效的基准测试
- 12.1.3 基准测试之罪
- 12.2 基准测试的类型
- 12.2.1 微基准测试
- 12.2.2 模拟
- 12.2.3 回放
- 12.2.4 行业标准
- 12.3 方法
- 12.3.1 被动基准测试
- 12.3.2 主动基准测试
- 12.3.3 CPU 剖析
- 12.3.4 USE 方法
- 12.3.5 工作负载特征归纳
- 12.3.6 自定义基准测试
- 12.3.7 逐渐增加负载
- 12.3.8 完整性检查
- 12.3.9 统计分析
- 12.4 基准测试问题
- 12.5 练习
- 12.6 参考
- 第13章 案例研究
- 13.1 案例研究:红鲸
- 13.1.1 问题陈述
- 13.1.2 支持
- 13.1.3 上手
- 13.1.4 选择征途
- 13.1.5 USE 方法
- 13.1.6 我们做完了吗
- 13.1.7 二度出击
- 13.1.8 基础
- 13.1.9 忽略红鲸
- 13.1.10 审问内核
- 13.1.11 为什么
- 13.1.12 尾声
- 13.2 结语
- 13.3 附加信息
- 附录A USE法:Linux
- 附录B USE法:Solaris
- 附录C sar总结
- 附录D DTrace单行命令
- 附录E 从DTrace到SystemTap
- 附录F 精选练习题答案
- 附录G 系统性能名人录
展开全部
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。