HPjmeter 4.3 User's Guide

5 Profiling Applications
HPjmeter allows you to process profile data from Java virtual machines.
Separating the profile data collection step from the analysis step has the following advantages:
The data analysis can be done at a different time and on a different platform than was used
to run the application. For example, it can be done on a desktop system or on a laptop.
A non-interactive profiling agent will often impose less overhead than an interactive one.
The profile data files obtained naturally facilitate comparison of different runs or creation of
a history of performance improvements.
The -Xeprof profiling option, available for the HP-UX HotSpot™ VM, was specifically designed to
produce profile data files for HPjmeter. This option works well to capture performance data for
viewing, and now can be accessed during a program run, as well as when starting an application.
-Xeprof focuses primarily on performance problems that characterize large server applications.
Its relatively low overhead allows you to collect performance data such as the delay caused by
lock contention, actual CPU time used by Java methods, and actual profiler overhead.
Using the -Xeprof switch on HP-UX 11.31:
For best results when using the -Xeprof switch on HP-UX 11.31 on Integrity systems, you should
run Java 1.5.0.14 or later, or 6.0.02 or later or 7.0.00 or later, because the thread timing data
generated by earlier releases of Java can be inaccurate on 11.31.
How to tell when the thread timing data is off: Because Java can generate an eprof data file with
no errors or other indication of a problem in this situation, you may not know the file is inaccurate
until you try to open it with HPjmeter. Then, HPjmeter will either refuse to load the file, or it will
load the file, but display unusual results.
If HPjmeter refuses to load the file, it will display an error message such as
Number format error at line NNN. Cannot continue.
If HPjmeter does load the file, you will see unexpected and inaccurate results in the metric displays.
The unexpected results can be seen most easily by examining the Threads Histogram. If you see
many threads spending all their time in an unexpected state, such as "Unknown" or "Lock
Contention", then you are experiencing the problem with inaccurate data. Update your Java
installation to one of the versions mentioned above to correct the problem.
Although many features of HPjmeter are available only when -Xeprof is used to capture the
profile data, useful profile data can be obtained from almost any JVM. No special compilation or
preprocessing of the application code is needed, and you do not need to have access to the source
code to get the profiling data for a Java program.
This guide also presents information on running the JVM with -agentlib:hprof , which also
provides numerous statistics, some of which are especially useful for detailed profiling of memory
usage).
Profiling Overview
Profiling an application means investigating its runtime performance by collecting metrics during
its execution. One of the most popular metrics is method call count - this is the number of times
each function (method) of the program was called during a run. Another useful metric is method
clock time - the actual time spent in each of the methods of the program. You can also measure
the CPU (central processing unit) time, which directly reflects the work done on behalf of the method
by any of the computer's processors. This does not take into account the I/O, sleep, context switch,
or wait time.
Profiling Overview 69