VM '04 Paper
[VM '04 Technical Program]
Using Hardware Performance Monitors
the Behavior of Java Applications
Peter F. Sweeney1
1IBM Thomas J. Watson Research Center
2University of Colorado at Boulder
Modern Java programs, such as middleware and application servers,
include many complex software components. Improving the performance
of these Java applications requires a better understanding of the
interactions between the application, virtual machine, operating
system, and architecture. Hardware performance monitors, which are
available on most modern processors, provide facilities to obtain
detailed performance measurements of long-running applications in real
time. However, interpreting the data collected using hardware performance
monitors is difficult because of the low-level nature of the data.
We have developed a system, consisting of two components,
to alleviate the difficulty of interpreting results obtained using
hardware performance monitors.
The first component is an enhanced VM that
generates traces of hardware performance monitor values while executing
Java programs. This enhanced VM generates a separate trace for each
Java thread and CPU combination and thus provides accurate results in a
multithreaded and multiprocessor environment.
The second component is a tool that allows
users to interactively explore the traces using a graphical interface.
We implemented our tools in the context of Jikes RVM, an open source
Java VM, and evaluated it on a POWER4 multiprocessor. We demonstrate
that our system is effective in uncovering as yet unknown performance
characteristics and is a first step in exploring the reasons behind
observed behavior of a Java program.