跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris Studio 12.3:性能分析器 Oracle Solaris Studio 12.3 Information Library (简体中文) |
本手册介绍了收集器和性能分析器这一对工具,您可以使用它们来收集和分析应用程序的性能数据。该手册还介绍了 er_print 实用程序,一种用于以文本格式显示和分析所收集性能数据的命令行工具。分析器和 er_print 实用程序显示的数据大体相同,但使用不同的用户界面。
称为 Spot 的附加 Oracle Solaris Studio 工具可用于生成关于应用程序的性能报告。此工具是对性能分析器的补充。有关更多信息,请参见 spot(1) 手册页。
收集器和性能分析器设计旨在供任何软件开发者使用,即使性能调节并非开发者的主要职责。与常用的分析工具 prof 和 gprof 相比,这些工具提供了更加灵活、详细和准确的分析,并且不会产生 gprof 中的归属误差。
收集器和性能分析器工具有助于回答以下各种问题:
程序消耗的可用资源有多少?
最消耗资源的是哪些函数或装入对象?
消耗资源的是哪些源代码行和指令?
程序在执行过程中如何出现这种问题?
函数或装入对象消耗的是哪些资源?
收集器工具使用名为分析 (profiling) 的统计方法,并通过跟踪函数调用来收集性能数据。这些数据可能包括调用堆栈、微状态计数信息(仅在 Oracle Solaris 平台上)、线程同步延迟数据、硬件计数器溢出数据、消息传递接口 (Message Passing Interface, MPI) 函数调用数据、内存分配数据以及操作系统和进程的摘要信息。收集器可以收集 C、C++ 和 Fortran 程序的各种数据,也可以收集用 Java 编程语言编写的应用程序的分析数据。此外还可以收集动态生成的函数及子孙进程的数据。有关收集的数据的信息,请参见第 2 章;有关收集器的详细信息,请参见第 3 章。可以通过性能分析器 GUI、dbx 命令行工具以及使用 collect 命令运行收集器。
性能分析器工具显示收集器记录的数据,以便于您检查这些信息。性能分析器处理数据并显示程序、函数、源代码行和指令级别的各种性能度量。这些度量分为五组:
时钟分析度量
硬件计数器度量
同步延迟度量
内存分配度量
MPI 跟踪度量
性能分析器时间线工具可以按图形形式将原始数据显示为时间函数曲线。
性能分析器还可以显示目标程序的数据空间中结构的性能度量,以及内存子系统的结构组件的性能度量。此数据是硬件计数器度量的扩展。
此外,性能分析器可以显示线程分析器的数据;线程分析器是性能分析器的一个专门视图,设计用于检查线程分析实验。可使用一个单独的命令 tha 将性能分析器启动到该专门视图下,以这种方式启动的该工具称为线程分析器。
线程分析器可以显示您专门生成的用来检查这些数据类型的实验中的数据争用和死锁。一个单独的手册《Oracle Solaris Studio 12.3:线程分析器用户指南》中介绍了如何使用线程分析器。
有关性能分析器的详细信息,请参见第 4 章以及性能分析器中的联机帮助。
第 5 章介绍如何使用 er_print 命令行界面来分析收集器收集的数据。
第 6 章讨论了一些与了解性能分析器及其数据有关的主题,包括:数据收集的工作原理、解释性能度量、调用堆栈和程序执行。
第 7 章介绍如何了解带注释的源代码和反汇编代码,提供了有关性能分析器显示的不同类型的索引行和编译器注释的解释。可以使用 er_src 实用程序来查看包含编译器注释但不包含性能数据的带注释源代码列表和反汇编代码列表;本章中也介绍了该实用程序。
第 8 章介绍了如何复制、移动和删除实验;将标签添加到实验以及归档和导出实验。
第 9 章介绍了如何在 Oracle Solaris 操作系统运行负载时使用 Oracle Solaris Studio 性能工具分析内核。
注 - 可以从 Oracle Solaris Studio 12.3 示例应用程序下载页的示例应用程序 zip 文件中下载性能分析器的演示代码,网址为 http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/。
下载后,可以在选定的目录中解开 zip 文件。示例应用程序位于 SolarisStudioSampleApplications 目录的 PerformanceAnalyzer 子目录中。有关如何在分析器中使用样例代码的信息,请参见每个样例目录中的 README 文件。
er_print 实用程序以纯文本形式显示性能分析器提供的所有显示内容,但时间线显示、MPI 时间线显示和 MPI 图表显示除外。这些显示本身都是图形形式,无法将其表示为文本。