Sun Studio 12:性能分析器

第 1 章 性能分析器概述

开发高性能的应用程序需要将编译器特性、已优化的函数库和性能分析工具整合在一起。性能分析器手册介绍了一些工具,这些工具有助于您评估代码的性能、识别潜在的性能问题并定位出现这些问题的代码部分。

从集成开发环境中启动性能分析器

有关从集成开发环境 (Integrated Development Environment, IDE) 中启动性能分析器的信息,请参见性能分析器自述文件,可通过位于 /installation_directory/docs/index.html 的文档索引获取该文件。Solaris 平台上的缺省安装目录为 /opt/SUNWspro。Linux 平台上的缺省安装目录为 /opt/sun/sunstudio12。如果 Sun Studio 12 编译器和工具未安装在 /opt 目录下,请询问系统管理员以获取系统中的等效路径。

性能分析工具

本手册介绍了收集器和性能分析器这一对 Sun Studio 工具,您可以使用它们来收集和分析应用程序的性能数据。既可通过命令行界面也可通过图形用户界面使用这两个工具。

收集器和性能分析器设计旨在供任何软件开发者使用,即使性能调节并非开发者的主要职责。与常用的分析工具 profgprof 相比,这些工具提供了更加灵活、详细和准确的分析,并且不会产生 gprof 中的归属误差。

收集器和性能分析器工具有助于回答以下各种问题:

收集器工具

收集器工具使用名为分析 (profiling) 的统计方法,并通过跟踪函数调用来收集性能数据。这些数据可能包括调用栈、微态记帐信息、线程同步延迟数据、硬件计数器溢出数据、消息传递接口 (Message Passing Interface, MPI) 函数调用数据、内存分配数据以及操作系统和进程的摘要信息。收集器可以收集 C、C++ 和 Fortran 程序的各种数据,也可以收集用 JavaTM 编程语言编写的应用程序的分析数据。此外还可以收集动态生成的函数及后续进程的数据。有关收集的数据的信息,请参见第 2 章,性能数据;有关收集器的详细信息,请参见第 3 章,收集性能数据。可以通过性能分析器 GUI、IDE、dbx 命令行工具和使用 collect 命令运行收集器。

性能分析器工具

性能分析器工具显示收集器记录的数据,以便于您检查这些信息。性能分析器处理数据并显示程序、函数、源代码行和指令级别的各种性能度量。这些度量分为五组:

性能分析器还可以按图形格式显示作为时间函数的原始数据。性能分析器可以创建映射文件,您可以使用该映射文件更改函数在程序地址空间的装入顺序,以提高性能。

有关性能分析器的详细信息,请参见第 4 章,性能分析器工具以及 IDE 或性能分析器 GUI 中的联机帮助。

第 5 章,内核分析介绍如何在 SolarisTM 操作系统 (Solaris Operating System, Solaris OS) 运行负载时使用 Sun Studio 性能工具分析内核。

第 6 章,er_print 命令行性能分析工具介绍如何使用 er_print 命令行界面来分析收集器收集的数据。

第 7 章,了解性能分析器及其数据讨论一些与了解性能分析器及其数据有关的主题,包括:数据收集的工作原理、解释性能度量、调用栈和程序执行,以及已注释的代码列表。可以使用 er_src 实用程序来查看包含编译器注释但不包含性能数据的带注释源代码列表和反汇编代码列表(有关更多信息,请参见第 9 章,处理实验)。

第 8 章,了解带注释的源代码和反汇编数据介绍如何了解带注释的源代码和反汇编代码,提供了有关性能分析器显示的不同类型的索引行和编译器注释的解释。

第 9 章,处理实验介绍如何复制、移动、删除、归档和导出实验。

er_print 实用程序

er_print 实用程序以纯文本形式显示性能分析器提供的所有显示内容,但时间线显示除外。

tcov 实用程序

Sun Studio 软件还包含名为 tcov 的另外一款分析工具,该工具可生成程序中执行的每条语句的确切次数计数。有关此工具的更多信息,请参见 tcov(1) 手册页。

性能分析器窗口


注 –

以下是性能分析器窗口的简要概述。有关下文讨论的标签的功能和特性的完整详细论述,请参见第 4 章,性能分析器工具和联机帮助。


性能分析器窗口由带有菜单栏和工具栏的多标签化显示组成。性能分析器启动时显示的标签显示了该程序的函数列表,以及每个函数的独占和包含度量。可以按装入对象、线程、轻量级进程 (lightweight process, LWP)、CPU 和时间片来过滤该列表。

对于某个选定的函数,另一个标签会显示该函数的调用者和被调用者。可以使用此标签导航调用树,例如在搜索较大的度量值时。

另外两个标签显示用性能度量逐行注释的并与编译器注释交错的源代码,以及用每个指令的度量注释的并与可用的源代码和编译器注释交错的反汇编代码。

性能数据在另一个标签中显示为时间函数。

其他标签显示实验和装入对象的详细信息,函数和内存泄露的摘要信息,以及进程的统计数据。

其他标签显示索引对象、内存对象、数据对象、数据布局、行及 PC。有关各标签的更多信息,请参见分析器数据显示

对于记录了线程分析器数据的实验,数据争用和死锁标签也将可用。仅在装入的实验具有支持这些标签的数据时才会显示标签。

有关线程分析器的更多信息,请参见《Sun Studio 12:线程分析器用户指南》

使用键盘和鼠标都可以导航性能分析器。

传统的 UNIX 性能工具

Solaris OS 长期以来一直提供两个标准 UNIX® 分析工具,profgprofprof 实用程序生成程序使用的 CPU 时间的统计分析数据,以及进入每个函数的次数的确切计数。gprof 实用程序生成程序使用的 CPU 时间的统计分析数据,以及进入每个函数的次数的确切计数和程序调用图中遍历各 arc(调用者-被调用者对)的次数。这些工具对于简单的程序很有用,但对于调节复杂程序并不胜任。有关这些标准工具的更多信息,请参见 prof(1)gprof(1) 手册页。