关于本书
本书旨在介绍如何在Solaris操作系统上获得程序的最佳运行性能。本书适用的读者是那些对Solaris上的可用工具感兴趣的开发者和软件架构师,以及那些关心如何充分利用系统中每一种性能的人员。.
本书不仅适合性能分析和优化的新手阅读,也适合在这个领域有一定经验的开发者阅读。为了满足不同层次读者的需求,本书在介绍各种工具并进行深入讨论之前,首先综述了处理器的基本概念。
与其他的同类书籍相比,本书是一本实用性很强的入门书籍。人们在开发过程中经常会遇到两类问题。第一类问题是应该使用什么工具。针对这一问题,本书覆盖了目前所有在Solaris上可用的开发工具,并且介绍了它们的常见用法。第二类问题是如何理解这些工具的输出。书中提供了大量的例子,来演示工具的用法并解释其输出数据的含义。
对于编译器可以自动执行的优化技术,本书将避免解释手动启用它的方法。本书着重关注于如何利用适当的工具来定位问题,以及如何利用最简单的方法来解决问题。有时候,解决的方法是使用不同的编译选项优化应用程序,从而消除导致问题产生的热点代码。而有时候,解决的方法是修改编译器无法执行优化的代码;我会详细地解释编译器无法优化这些代码的原因。
目标和前提
本书要实现的目标如下:
全面地介绍影响处理器性能的部件。
介绍用于性能分析和性能提高的工具,包括操作系统所提供的工具和编译器所提供的工具。
介绍编译器以及编译器支持的提高性能的优化技术。
讨论SPARC和x64处理器家族的特征,并示范如何利用这些特征来提高应用程序的性能。
介绍利用多处理器或多线程来提高性能的可能性,以及有效地利用计算机资源的可能性。
本书假定读者可以熟练地使用C编程语言。书中的大多数例子都采用了这种语言。本书还假定读者了解一些处理器的基本原理和指令集的相关知识。本书不会详细地阐述处理器的内部细节,但是会介绍一些现代处理器的特征,这些特征可能影响应用程序的性能。
本书假定读者有Sun Studio编译器和相关的工具。这些工具都是可以免费下载的。本书使用Sun Studio 12编译大多数例子。新版本的编译器将产生相似的结果。编译器通常安装在/opt/SUNWspro/bin/目录下,并且假定该路径已经设置在读者的环境变量中。
本书是基于Solaris 10的。在此之前的操作系统支持书中涉及的大多数工具。如果某个工具需要更新版本的Solaris的支持,那么我将在书中给出说明。
本书章节综述
第一部分处理器综述..
第1章:常规的处理器
第2章:SPARC家族
第3章:x64处理器家族
.第二部分开发工具
第4章:信息工具
第5章:编译器的使用
第6章:浮点数优化
第7章:库与链接
第8章:性能分析工具
第9章:校正与调试
第三部分优化技术
第10章:性能计数器度量
第11章:源代码优化
第四部分线程化和吞吐量
第12章:多核、多进程与多线程
第五部分总述
第13章:性能分析致谢
在本书的编写过程中,很多人都做出了贡献。Ross Towle 提供了多线程编程的章节大纲,并且对这章的内容做出了有价值的评论。Joel Williamson 多次阅读了早期的草稿,每次都给出了详细的评论和改进方法。我的同事Boris Ivanovski、Karsten Gutheridge、John Henning、Miriam Blatt、Linda Hsi、Peter Farkas、Greg Price和Geetha Vallabhenini也阅读了草稿,并提出了修改意见。在此,我要特别感谢John Henning对本书做了许多细致的改进。
我还要感谢所有花时间阅读本书并提供有效建议的各个领域的专家,他们是链接方面的Rod Evans,调试器方面的Chris Quenelle,提供了一些有用工具名字和评论的Brian Whitney,提供建议的Brendan Gregg,对编译器和源代码优化技术部分进行审阅的JianZhong Wang, 提供关于浮点优化技术详细建议的Alex Liu, 对性能分析和多线程章节进行评论的Marty Izkowitz, 对多线程相关章节提出建议的Yuan Lin、Ruud van der Pas、Alfred Huang和Nawal Copty,对MPI进行评论的Josh Simmons, 了解SPARC处理器历史的David Weaver,对x64处理器相关章节进行审阅的Richard Smith,以及对本书提供总体建议的Richard Friedman 。
在本书的出版过程中,很多人都提供了帮助,他们是Yvonne Prefontaine、Ahmed Zandi和Ken Tracton。尤其感谢Richard McDougall在项目最后阶段提供的帮助。
特别感谢Prentice Hall 的工作人员,包括编辑Greg Doench和产品经理Julie Nahil。还要感谢Techne小组的产品项目经理Dmitri Korzh。
最重要的是,感谢我的家人对我的支持和鼓励。Jenny的冷静以及有效的建议帮助我完成了书中困难部分的编写; Aaron即使对最现实的问题也抱有丰富的想象力,他成功地感染了我;Timothy对分享生活中的乐趣有很大的热情,这对我的影响是无处不在的;Emma 出生在我完成本书的时候,她是上天赐给我的最珍贵的礼物。...