HPjmeter 4.2 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, 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.
58 Profiling Applications