在本教程中,Mike Kucera 将带您领略 Performance Advisor 的主要功能,并向您展示如何提高示例应用程序的性能。
IBM® Rational® Developer for Power Systems Software V8.5 引入了一个名为 Performance Advisor 的新组件,这个新组件提供了一组丰富的特性,用于性能调优 IBM® AIX® 和 IBM® PowerLinux 上的 C++ 和 C++ 应用程序。
Performance Advisor 易于使用且非常强大。如果您对性能调优不熟悉,那么您将会发现 Performance Advisor 是一个入门的好方法,因为用户界面很简单,而且该工具提供了大量反馈和引导。如果您是经验丰富的性能调优人员,那么您将会发现一组丰富工具,可以用来高效隔离并修复性能问题。
Rational Developer for Power Systems Software(通常非正式地称为 RD Power 或 RDp)已经因其开发和调试工具而众所周知,而且 Performance Advisor 与这些工具能够很好地集成。您可以将 Performance Advisor 用作一个独立的工具,或者将其无缝集成到现有的代码、构建、测试和调试周期中。
本教程将带您领略一个 Performance Advisor 用户一天的生活。
了解性能调优
开始学习本教程之前,让我们先从本质上来看看 Performance Advisor 是如何工作的。
性能数据来自哪里
Performance Advisor 从数个资源中收集数据。原始的应用程序性能数据来自低级别的操作">系统工具,并每隔一定时间抽样检查处理器和内存的状态。编译器生成的调试信息允许该数据与最初的源代码相匹配。XLC 编译器可以生成 XML 报告文件来提供在编译期间执行的最优化信息。最后,对应用程序的构建和运行时系统进行分析以确定是否存在一些潜在的环境问题。
所有该数据都是自动进行收集、关联和分析,并以一种可以快速访问和容易理解的方式向您展示。这就使得可以很容易就确定用于优化应用程序的最佳策略。
抽样检查指令指针
有关 AIX 性能数据的主要资源是 tprof 命令(在 Linux 上,相对等的工具是 OProfile)。
当应用程序正在运行时,tprof 大约每隔 10 毫秒就醒来,记录处理器指令指针状态的样例,这包含了当前执行指令的内存地址。每个样例都称为一个节拍。性能运行完成之后,编译器生成的调试信息用于将每个节拍映射到其相应的源代码行中。从这个关联的数据中,您可以看出哪部分程序最常执行。这些部分被称为热点,而且通常是开始寻找优化程序代码机会的最佳位置。
您可以直接从 AIX 命令行中运行 tprof,但是要使用这种方法很难。它具有高度可配置性并且采取了许多命令行选项。它生成的原始数据文件非常大,要手动进行分析会相当耗时。Performance Advisor 使用 tprof 来收集原始性能数据,但是这以透明方式来完成。因此,作为终端用户,您永远不需要直接处理这些低级别的工具。
抽样检查调用堆栈
调用堆栈抽样数据也是从低级别的系统工具中收集。这种数据来自于 AIX 上的 procstack 命令和 Linux 上的 OProfile 命令。
应用程序的调用堆栈每隔一定时间就进行一次抽样检查。而且应用程序的所有当前执行功能都被记录。您可以通过使用一个图形查看器来探索引起和来自任何感兴趣函数的运行时调用路径。有了该信息,您就可以回答以下问题:“该函数是因为花费太长时间执行而热还是因为调用太过频繁而热?”
系统积分卡报告
应用程序的性能还取决于其构建的方式以及其运行的环境。通常,无需对应用程序的源代码进行更改,只对构建或运行时环境所做的简单更改就会对应用程序的性能产生很大的影响。
Performance Advisor 会分析构建主机和运行时主机,并根据若干个标准进行计分;包括硬件级别、OS 级别、编译器版本以及构建选项。生成调用 System Scorecard 的报告并提供如何提高系统配置来实现更好的应用性能的建议。如果您正在寻找一些容易实现的目标,那么这会是一个很好的开始。
编译器转换报告
XLC 编译器可以产生 XML 报告文件,描述编译期间执行的优化情况。这些报告并没有严格要求,但一旦生成之后,更多信息就可用于分析。其中一个最有趣的事情是,这些报告展示的是编译期间以内联方式调用函数的位置。