This manual describes the Collector and Performance Analyzer, a pair of tools that you use to collect and analyze performance data for your application. The manual also describes the er_print utility, a command-line tool for displaying and analyzing collected performance data in text form. Performance Analyzer and the er_print utility show mostly the same data, but use different user interfaces.
The Collector and Performance Analyzer are designed for use by any software developer, even if performance tuning is not the developer’s main responsibility. These tools provide a more flexible, detailed, and accurate analysis than the commonly used profiling tools prof and gprof and are not subject to an attribution error in gprof.
The Collector and Performance Analyzer tools help to answer the following kinds of questions:
How much of the available resources does the program consume?
Which functions or load objects are consuming the most resources?
Which source lines and instructions are responsible for resource consumption?
How did the program arrive at this point in the execution?
Which resources are being consumed by a function or load object?
Using a statistical method called profiling, which can be based on a clock trigger, or on the overflow of a hardware performance counter
By tracing thread synchronization calls, memory allocation and deallocation calls, IO calls, and Message Passing Interface (MPI) calls
As summary data on the system and the process
On Oracle Solaris platforms, clock profiling data includes microstate accounting data. All recorded profiling and tracing events include call stacks, as well as thread and CPU IDs.
The Collector can collect all kinds of data for C, C++ and Fortran programs, and it can collect profiling data for applications written in the Java programming language. It can collect data for dynamically-generated functions and for descendant processes. See Performance Data for information about the data collected and Collecting Performance Data for detailed information about the Collector. The Collector runs when you profile an application with Performance Analyzer, with the collect command, or with the dbx collector command.
Performance Analyzer displays the data recorded by the Collector so that you can examine the information. Performance Analyzer processes the data and displays various metrics of performance at the level of the program, its functions, source lines, and instructions. These metrics are classed into the following groups:
Clock profiling metrics
Hardware counter profiling metrics
Synchronization wait tracing metrics
I/O tracing metrics
Heap tracing metrics
MPI tracing metrics
Performance Analyzer's Timeline view displays the raw data in a graphical format as a function of time. The Timeline view shows a chart of the events and the sample points recorded as a function of time. Data is displayed in horizontal bars.
Performance Analyzer can also display metrics of performance for structures in the dataspace of the target program, and for structural components of the memory subsystem. This data is an extension of the hardware counter metrics.
Experiments recorded on any supported architecture can be displayed by Performance Analyzer running on the same or any other supported architecture. For example, you can profile an application while it runs on an Oracle Solaris SPARC server and view the resulting experiment with Performance Analyzer running on a Linux machine.
A client version of Performance Analyzer called the Remote Performance Analyzer can be installed on any Oracle Solaris, Linux, Windows or Mac OS system that has Java available. You can run this remote Performance Analyzer and connect to a server where the full Oracle Developer Studio product is installed and view experiments remotely. See Using Performance Analyzer Remotely for more information.
Performance Analyzer is used by other tools in the Oracle Developer Studio analysis suite:
Thread Analyzer uses it for examining thread analysis experiments. A separate command tha starts Performance Analyzer with a specialized view to show data races and deadlocks in experiments that you can generate specifically for examining these types of data.
Oracle Developer Studio 12.6: Thread Analyzer User’s Guidedescribes how to use Thread Analyzer.
The uncover code coverage utility uses Performance Analyzer to display coverage data in the Functions, Source, Disassembly, and Inst-Freq data views. See Oracle Developer Studio 12.6: Discover and Uncover User’s Guide for more information.
See Performance Analyzer Tool and the Help menu in Performance Analyzer for detailed information about using the tool.
er_print Command-Line Performance Analysis Tool describes how to use the er_print command-line interface to analyze the data collected by the Collector.
Understanding Performance Analyzer and Its Data discusses topics related to understanding the Performance Analyzer and its data, including how data collection works, interpreting performance metrics, call stacks and program execution.
Understanding Annotated Source and Disassembly Data provides an understanding of the annotated source and disassembly, providing explanations about the different types of index lines and compiler commentary that Performance Analyzer displays. The chapter also describes the er_src command line utility that you can use to view annotated source code listings and disassembly code listings that include compiler commentary but do not include performance data.
Manipulating Experiments describes how to copy, move, and delete experiments; add labels to experiments; and archive and export experiments.
Kernel Profiling describes how you can use the Oracle Developer Studio performance tools to profile the kernel while the Oracle Solaris operating system is running a load.
See the Oracle Developer Studio 12.6: Performance Analyzer Tutorials for information about how to use the sample code with Performance Analyzer.
The er_print utility presents in plain text all the displays that are presented by Performance Analyzer, with the exception of the Timeline display, the MPI Timeline display, and the MPI Chart display. These displays are inherently graphical and cannot be presented as text. For more information, see er_print Command-Line Performance Analysis Tool and er_print(1).