阅读 深入理解软件性能

前段时间异步社区 Ethan 送了一本《深入理解软件性能——一种动态视角》,花了大约 1 个星期过了一遍,有不少收获和启发,这里做一个简单的介绍。

  • 书名:深入理解软件性能——一种动态视角
  • 作者:[美] 理查德·L.赛茨 ( Richard L.Sites )
  • 译者:赵利通
  • 出版时间:2023-12-01
  • 出版社: 人民邮电出版社
  • ISBN: 9787115616562

作者介绍 链接到标题

理查德。L. 赛茨 ( Richard L.Sites ) ,美国国家工程院院士。工作中主要负责硬件与软件的交接,特别关注 CPU/软件性能交互。他担任了 DEC Alpha 处理器的架构师,发明了处理器的性能计数器。他还在 DEC、Adobe、Google 和 Tesla 公司编写过低开销的微代码,负责过软件跟踪。

内容简介 链接到标题

这本书从软件性能的基础概念和理论开始介绍,说明性能相关的基本软硬件资源。每种资源从硬件跨度到软件如何进行性能评估测量和调优都有详细的说明。本书还罗列了性能常用的观察工具和追踪工具。另外本书基于 Linux 内核展示了一个性能追踪工具 KUtrace 的设计过程和实现。在最后通过实际的性能问题展示性能调试的推理和解决过程。

读书建议 链接到标题

下面是摘抄编辑的推荐

适读人群 :本书不仅适合软件开发人员阅读,还适合计算机相关专业的师生参考。 1.理解复杂软件动态:本书通过介绍多种环境的优化原则和技术,帮助读者更好地理解复杂软件的动态。 2.提高软件可靠性:通过解决与 CPU、内存、磁盘/SSD、网络以及它们之间如何交互有关的问题,可以大大提高软件的可靠性。 3.修复程序运行问题:本书提供了具体的示例和技术,帮助读者修复运行速度缓慢或无缘无故变慢的程序。 4.更有效地分析性能数据:通过介绍如何使用开源软件工具 KUtrace 收集信息,读者可以更有效地分析性能数据,了解现实与期望的差距。 5.发现问题并解决:本书帮助读者发现问题,例如执行太多指令、指令执行缓慢、等待资源和软件加锁等,并提供了相应的解决方案。

适读人群 链接到标题

我推荐的读者: 最低要求:

  1. Unix/类 Unix 系统编程人员,编程经验大于 3 年,或有一定系统调试经验。
  2. 计算机科班出生的学生并具有一定的编程经验。

其它无上限,即使你是一个多年的软件系统分析人员也能从中得到很多启发,并能看到问题背后的问题。

阅读建议 链接到标题

第一部分 链接到标题

基础,概念和方法,含有大量的测量方法和实验。亮点:详细说明了硬件对性能的影响,软件如何最大化硬件的效能。

推荐每章详读

  • 第 1 章 关于性能的基础概念,可以认为是理论基础
  • 第 2~7 章 详细说明计算机资源 ( CPU,内存,硬盘/SSD,网络 ) 的工作方式,性能测量和评估。

第二部分 链接到标题

性能观察和追踪工具,如何设计一些方式来观察有时间约束的软件系统的整体行为和健康状况。观察工具的设计原则。

推荐9,13 章详读

  • 第 8 章 日志系统的构成和特点以及设计的注意事项
  • 第 9 章 如何设计统计观察数据结果的方法
  • 第 11,12 章 现有的观察工具和追踪工具
  • 第 10,13 章 观察工具设计原则

第三部分 链接到标题

作者开发的 KUtrace,以较低的 CPU 和内存开销 ( <1% ) 追踪每个 CPU 核心每个 ns 的工作。这部分说明该工具目标,设计,原理和实现。

推荐选读

第四部分 链接到标题

各种案例的分析推理过程和解决过程,涉及到 CPU, 内存,磁盘,网络,锁,时间,队列等个方面的案例。

推荐先略读各个案例,再根据需要详细选读