本书不仅介绍了如何测量CPU、内存、磁盘SSD、网络的性能,如何观察、记录、跟踪、汇总性能指标,还讨论了如何设计和创建性能测试工具KUtrace,以及如何对观察结果进行推理。
本书不仅适合软件开发人员阅读,还适合计算机相关专业的师生参考。
网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 深入理解软件性能(一种动态视角) |
分类 | |
作者 | (美)理查德·L.赛茨 |
出版社 | 人民邮电出版社 |
下载 | ![]() |
简介 | 内容推荐 本书不仅介绍了如何测量CPU、内存、磁盘SSD、网络的性能,如何观察、记录、跟踪、汇总性能指标,还讨论了如何设计和创建性能测试工具KUtrace,以及如何对观察结果进行推理。 本书不仅适合软件开发人员阅读,还适合计算机相关专业的师生参考。 作者简介 理查德·L.赛茨(Richard L.Sites),美国国家工程院院士。在职业生涯的大部分时间中,他负责硬件与软件的交接,特别关注CPU/软件性能交互。他担任了DEC Alpha处理器的架构师,发明了处理器的性能计数器。他还在DEC、Adobe、Google和Tesla公司编写过低开销的微代码,负责过软件跟踪。 目录 第一部分 测量 第1章 我的程序太慢了 1.1 数据中心环境 1.2 数据中心的硬件 1.3 数据中心的软件 1.4 长尾时延 1.5 思维框架 1.6 数量级估测 1.7 为什么事务很慢 1.8 5种基本资源 1.9 小结 第2章 测量CPU时间 2.1 发展历史 2.2 现状 2.3 测量add指令的时延 2.4 直线代码失败 2.5 简单循环、循环开销失败、优化编译器失败 2.6 死变量失败 2.7 更好的循环 2.8 依赖变量 2.9 实际执行时延 2.10 更多细微差别 2.11 小结 习题 第3章 测量内存层次 3.1 内存计时 3.2 关于内存 3.3 缓存组织 3.4 数据对齐 3.5 页表缓存组织 3.6 测量内存的步骤 3.7 测量缓存行的大小 3.8 问题:预取第N+1行 3.9 依赖加载 3.10 非随机的DRAM 3.11 测量每个缓存级别的总大小 3.12 测量每个级别的缓存相联度 3.13 页表缓存时间 3.14 缓存利用不足 3.15 小结 习题 第4章 CPU与内存的交互 4.1 缓存交互 4.2 简单矩阵乘法的动态 4.3 估测 4.4 初始化、反复核对和观察 4.5 初始结果 4.6 更快的矩阵乘法,转置方法 4.7 更快的矩阵乘法,子块方法 4.8 感知缓存的计算 4.9 小结 习题 第5章 测量磁盘SSD的传输时间 5.1 关于硬盘 5.2 关于SSD 5.3 软件磁盘访问和磁盘缓冲 5.4 磁盘读取有多快 5.5 一次粗略估算 5.6 磁盘写入有多快 5.7 结果 5.8 从磁盘读取 5.9 写入磁盘 5.10 从SSD读取 5.11 写入SSD 5.12 多次传输 5.13 小结 习题 第6章 测量网络流量 6.1 关于以太网 6.2 关于集线器、交换机和路由器 6.3 关于TCP IP 6.4 关于数据包 6.5 关于RPC 6.6 空程差 6.7 观察网络流量 6.8 示例RPC消息的定义 6.9 示例日志设计 6.10 使用RPC的示例客户-服务器系统 6.11 示例服务器程序 6.12 自旋锁 6.13 示例客户端程序 6.14 测量一个示例客户-服务器RPC 6.15 后处理RPC日志 6.16 观察 6.17 小结 习题 第7章 磁盘和网络数据库的交互 7.1 时间对齐 7.2 多个客户端 7.3 自旋锁的应用 7.4 实验 7.5 磁盘数据库 7.6 实验 7.7 实验 7.8 日志 7.9 理解事务时延的变化 7.10 小结 习题 第二部分 观察 第8章 日志 8.1 观察工具 8.2 日志 8.3 基本日志 8.4 扩展日志 8.5 时间戳 8.6 RPC ID 8.7 日志文件的格式 8.8 管理日志文件 8.9 小结 第9章 聚合措施测量 9.1 均匀的事件率与阵发的事件率 9.2 测量间隔 9.3 时间线 9.4 进一步汇总时间线 9.5 直方图的时间尺度 9.6 聚合每个事件的测量结果 9.7 一段时间的值的模式 9.8 更新间隔 9.9 事务采样 9.10 小结 第10章 仪表板 10.1 示例服务 10.2 示例仪表板 10.3 主仪表板 10.4 实例仪表板 10.5 服务器仪表板 10.6 健全检查 10.7 小结 习题 第11章 其他现有工具 11.1 观察工具的分类 11.2 要观察的数据 11.3 top命令 11.4 proc和 sys伪文件 11.5 time命令 11.6 perf命令 11.7 oprofile 11.8 strace 11.9 ltrace 11.10 ftrace 11.11 mtrace 11.12 blktrace 11.13 tcpdump和Wireshark 11.14 locktrace 11.15 输入负载、出站调用 11.16 小结 习题 第12章 跟踪工具 12.1 跟踪工具的优势 12.2 跟踪工具的缺点 12.3 3个起始问题 12.4 示例1:早期的程序计数器跟踪 12.5 示例2:每个函数的计数和时间 12.6 案例分析:Gmail的按函数跟踪 12.7 小结 第13章 优秀观察工具的设计原则 13.1 需要观察什么 13.2 有多频繁?要多久 13.3 开销有多大 13.4 设计的后果 13.5 案例分析:直方图桶 13.6 设计数据显示 13.7 小结 第三部分 内核-用户跟踪 第14章 KUtrace的目标、设计、 实现 14.1 概述 14.2 目标 14.3 设计 14.4 实现 14.5 内核补丁和Linux内核可加载模块 14.6 控制程序 14.7 后处理 14.8 关于安全问题的一点说明 14.9 小结 第15章 KUtrace中的Linux内核补丁 15.1 跟踪缓冲区数据结构 15.2 原始跟踪块的格式 15.3 跟踪条目 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。