Performance Inspector™

This project is no longer under active development.

Performance Inspector


The Performance Inspector™ packages are provided AS IS, with no implied support.

The Performance Inspector™ packages contain suites of performance analysis tools for Linux®, Windows®, AIX®, and ZOS® platforms. These tools will help you gain a better understanding of the performance of your applications and the resources they consume. The tools can be used to help identify performance problems in your application, as well as how your application interacts with the operating system. Performance Inspector works with both Java™ and C/C++ applications and may be used with the Visual Performance Analyzer.

This documentation describes the maximum capabilities of our tools, which may be reduced due to the capabilities of the platform on which it is executed. Performance Inspector uses the performance counters provided by the CPUs, if available, to measure system events at the process level. The package may also include a device driver, and may use a pinned buffer per CPU along with kernel hooks, to capture performance related information.

The majority of this project is LGPL code, and the rest is GPL. See the Licensing Information section for more information.

You can find tools with similar capabilities to some of our tools in the Linux Trace Toolkit, Oprofile, and dProbes.

Styles of Execution Profiling

Performance Inspector provides three fundamental styles of execution profiling, each with its own advantages and disadvantages.

The first style is "time" profiling. This style records the address currently being executed by each processor, usually at regular time intervals, but it can recorded when any specific event occurs. At post-processing time, these addresses are converted to symbols and counts of these events are reported for each symbol, module, thread, and process. Because the number of these events can be very small compared to the total number of instructions being executed, the impact on the overall performance of the application being profiled can also be very small. However, time profiling only shows "hotspots", the methods that are being executed most of the time, without giving any indication why those methods are being executed.

The second style is callflow profiling. Unlike the information that was gathered by time profiling, callflow profiling does not merely collect samples of what is happening, it gathers information about every method entry and exit by intercepting the method entry and exit events generated by the Java Virtual Machine (JVM) or by the HOOKIT library. Thus, it reports not only what methods were executed, but also the context in which they were executed. That is, if A calls B, which then calls C, then the entire sequence A-B-C is recorded. This provides the detailed information that time profiling lacked, but because of the large number of method entry and exit events that must be handled, callflow profiling has a much greater impact on the execution of the application.

The third style is callstack sampling, which combines the best features of both time profiling and callflow profiling when analyzing Java applications. It can only be used with Java applications, because callstacks can not be reliably determined for non-Java applications. Callstack sampling uses events in the same way as time profiling. However, instead of merely recording the address being executed, it records the entire callstack for that thread, as reported by the JVM. That is, if method C is executing when the event is received and C was called by B which was called by A, then the sequence A-B-C is recorded, just as it would have been by callflow profiling. Thus, callstack sampling falls somewhere between time profiling and callflow profiling providing more detailed information than time profiling with less execution overhead than callflow profiling.

Styles of Data Profiling

Performance Inspector provides two different styles of data profiling.

The first style is heap dump analysis, which is performed by a post-processor. It reports a variety of information about the heap, including:

The second style tracks object allocations and deallocations and displays them with the methods which allocated each object. This data can be collected during either callflow profiling or callstack sampling.

List of Tools and Services

The following is a list of the major tools and services provided by our packages, with documentation links:


Mailing list (

Licensing Information

GNU General Public License 

GNU Library General Public License 

IBM License Information

Notwithstanding the terms of any agreement you may have with IBM or any of its related or affiliated companies (collectively "IBM"), the following terms and conditions apply to the Performance Inspector ("Program"): (a) the Program is provided on an "AS IS" basis; (b) IBM DISCLAIMS ANY AND ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS INCLUDING, BUT NOT LIMITED TO, THE WARRANTY OF NON-INFRIGNEMENT OR INTERFERENCE AND THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, (c) IBM will not be liable to you or indemnify you for any claims related to the Program; and (d) IBM will not be liable for any direct, indirect, incidental, special, exemplary, punitive or consequential damages with respect to the Program. The Program and future updates and fixpacks to the Program may contain certain third party components which are provided to you under terms and conditions which are different from this Agreement, or which require IBM to provide you with certain notices and/or information. For each such third party component, either IBM will identify such third party component in a "README" file (or in an updated "README" file accompanying the fixpack or update), or in a file or files referenced in such "README" files (and shall include any associated license agreement, notices and other related information therein), or the third party component will contain or be accompanied by its own license agreement (for example, provided when installing or starting such component, or accompanying such component in a file entitled "README", "COPYING", "LICENSE" or a substantially similar title, or included among the Program's paper documentation, if any). Your use of each third party component which contains or is accompanied by its own license agreement, or for which IBM has identified a license agreement in one of the above "README" files (or in a file or files referenced therein), will be subject to the terms and conditions of such other license agreement, and not this Agreement. By using or not uninstalling such third party components after the initial installation of such third party components (thereby giving you access to the applicable license agreements, notices and information), you acknowledge and agree to all such license agreements, notices and information, including those provided only in the English language. You agree to review any updated "README" files which accompany updates and fixpacks to the Program.

IBM is a trademark of International Business Machines Corporation in the United States, other countries, or both.
Performance Inspector is a trademark of IBM.
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
Other company, product, or service names may be trademarks or service marks of others.
MMX, Pentium, and ProShare are trademarks or registered trademarks of Intel Corporation in the United States, other countries, or both.
Image of the detective was derived from the Art Explosion 300,000 package by Nova Development Corporation.