使用Performance Advisor对C/C++应用程序进行性能调优

在本教程中,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 报告文件,描述编译期间执行的优化情况。这些报告并没有严格要求,但一旦生成之后,更多信息就可用于分析。其中一个最有趣的事情是,这些报告展示的是编译期间以内联方式调用函数的位置。

时间: 2024-12-10 18:28:17

使用Performance Advisor对C/C++应用程序进行性能调优的相关文章

可预见的Oracle应用程序的性能调优

这篇技巧性文章是由"国际Oracle用户组"(IOUG)提供的,它是一个由用户组成的组织,这个组织通过提供高质量的信息.培训.网络和支持,来提高Oracle数据库专家和数据库开发者的水平.这篇文章摘自由David Welch所写的论文<可预见的Oracle应用程序性能调优>.点击这里成为"国际Oracle用户组"的一员,从而获得成千上万的由Oracle用户写的技巧性文章和科技文献. 引言 我们见到过很多带有巨大性能问题的Oracle应用程序和电子商务套件

OLTP应用程序的DB2调优技巧

简介 DB2 Universal Database(UDB)是第一个支持多媒体和Web的关系数据库管理系统,它的功能非常强大,足以满足大公司的需求,并且它非常灵活,足以满足中小企业的要求.DB2 产品系列软件和因特网技术的结合使我们可以方便地跨不同平台访问信息.使用信息并且保证信息安全.全世界有30 多万家公司的6000 多万个DB2 用户依赖于 IBM 数据管理解决方案. DB2 UDB 为大多数需要电子商务的应用程序(比如电子商务.企业资源计划.客户关系管理.供应链管理.Web自助服务和商业

Java程序性能调优的基本知识和JDK调优

一 基本知识 1.1 性能是什么 在性能调优之前,我们首先来了解一下性能是什么?关于性能,我想每个学习过Java的人都能列出几点,甚至可以夸夸其谈.在<Java TM Platform Performance>一书中,定义了如下五个方面来作为评判性能的标准: 1) 运算的性能--哪一个算法的执行性能最好? 2) 内存的分配--程序运行时需要耗费多少内存? 3) 启动的时间--程序启动需要多长时间?这在Web项目中的影响不大,但要注意部分程序需要部署或运行在客户端时的情形(比如applet程序)

.NET性能调优之一:ANTS Performance Profiler的使用介绍_实用技巧

在使用.NET进行快速地上手与开发出应用程序后,接下来面临的问题可能就是程序性能调优方面的问题,而性能调优有时候会涉及方方面面的问题,如程序宿主系统.数据库.网络环境等等,而当程序异常庞大复杂的时候,性能调优将变得更加无从下手. 本系列文章主要会介绍一些.NET性能调优的工具.Web性能优化的规则(如YSlow)及方法等等内容.成文前最不希望看到的就是园子里不间断的"哪个语言好,哪个语言性能高"的争论,不多说,真正的明白人都应该知道这样的争论有没有意义,希望我们能从实际性能优化的角度去

Java EE应用程序在Glassfish上的性能调优案例分析

Java EE应用的性能问题对严肃的项目和产品来说是一个非常重要的问题.特别是企业级的应用,并发用户多,数据传输量大,业务逻辑复杂,占用系统资源多,因此性能问题在企业级应用变得至关重要,它和系统的稳定性有着直接的联系.更加重要的是,性能好的应用在完成相同任务的条件下,能够占用更少的资源,获得更好的用户体验,换句话说,就是能够节省费用和消耗,获得更高的利润. 要获得更好的性能,就需要对原来的系统进行性能调优.对运行在Glassfish上的JavaEE应用,调优是一件相对复杂的事情.在调优以前必须要

Java 程序性能优化《第一章》Java性能调优概述 1.4小结

Java 程序性能优化<第一章>1.4小结 通过本章的学习,读者应该了解性能的基本概念及其常用的参考指标.此外,本章还较为详细的介绍了与性能调优相关的两个重要理论--木桶原理以及Amdahl定律. 根据木桶原理,系统的最终性能总是由系统中性能最差的组件决定的.因此,改善该组件的性能对提升系统整体性能有重要的作用.而根据Amdahl定律,可以知道只是增加处理器数量对提升系统性能并没有太大的实际意义,必须同时提高程序的并行化比重. 本章还简要的介绍了在软件开发和维护过程中可以进行性能优化的各个阶段

Java 程序性能优化《第一章》Java性能调优概述 1.2性能调优的层次

Java 程序性能优化<第一章>1.2性能调优的层次 为了提升系统性能,开发人员开始从系统各个角度和层次对系统进行优化.除了最常见的代码优化外,在软件架构上.JVM虚拟机层.数据库以及操作系统层面都可以通过各种手段进行优化,从而在整体上提升系统的性能. 1.2.1 设计调优 设计调优处于所有调优手段的上层,它往往需要在软件开发之前进行.在软件开发之处,软件架构师就应该评估系统可能存在的各种潜在问题,并给出合理的设计方案.由于软件设计和架构对整体质量有决定性的影响,所以,设计调优对系统性能的影响

Java 程序性能优化《第一章》Java性能调优概述 1.1性能概述

Java 程序性能调优<第一章>Java性能调优概述(1.1性能概述) 1.1 性能概述 为什么程序总是那么慢?它现在到底在干什么?时间都花在哪里了?也许,你经常会抱怨这些问题,如果是这样,那说明你的程序出了性能问题.和功能问题相比,性能问题在有些情况下,可能不算什么大问题,将就将就,也就过去了.但是严重的性能问题会导致程序瘫痪.假死.直至崩溃.本书就先来认识性能的各种表现和指标. 1.1.1 看懂程序的性能 对客户端程序而言,拙劣的性能会严重影响用户体验,界面停顿.抖动.响应迟钝等问题会遭到

Java 程序性能优化《第一章》Java性能调优概述 1.3基本调优策略和手段

Java 程序性能优化<第一章>1.3基本调优策略和手段 存在性能问题的系统,十之八九是由于某一系统瓶颈导致的.只要找到该性能瓶颈,分析瓶颈的形成原因,对症下药,使用合理的方法解决系统瓶颈,就能从根本上提升性能.所以,系统性能优化的最主要目的就是查找并解决性能瓶颈问题.但同时值得注意的是,性能优化往往会涉及对原有的实现进行较大的修改,因此,很难保证这些修改不引入新的问题.所以,在性能优化前,需要对性能优化的目标.方法进行统筹的安排. 1.3.1 优化的一般步骤 对软件系统进行优化,首先需要有明