|
Computer Sciences Seminar
Wednesday, April 3
12:30 PM, NAC 8/206
Online Profiling and Optimization of Java
Matthew Arnold
Rutgers University
Abstract
The dynamic nature of the Java programming language presents both the
biggest challenge and greatest opportunity for high-performance Java
implementations. To avoid the overhead of interpretation, many Java
Virtual Machines (JVM's) use a dynamic optimizing compiler to compile
Java bytecode into native code. Although performing compilation at
runtime can introduce substantial overhead, it also has the advantage
that runtime information from the current execution can be exploited and
used to improve performance.
Our work focuses on improving the performance of Java applications by
applying online feedback-directed optimizations, where fine-grained
profiling information is collected at runtime and used to improve the
decisions made by the optimizing compiler. Many feedback-directed
optimizations have been described in the literature; however, most have
relied on offline training runs and high-overhead profiling techniques.
As a result, the vast majority of these techniques are not yet being
applied in online systems.
In this talk I describe the design and implementation of a fully
automatic approach for performing feedback-directed optimizations online.
Our approach uses instrumentation-sampling to reduce the overhead of
instrumentation, thus eliminating many of the limitations present in
existing online systems. Our experimental results show improvements in
peak performance of up to 20% while overhead remains low, with no
individual execution being degraded more than 2%.
Bio
Matthew Arnold received his B.S. from Rensselaer Polytechnic Institute in
1995, his M.S. from Rutgers University in 1998, and will be receiving his
Ph.D. from Rutgers University this spring. For the past 3 years he has
also been a part-time intern at the IBM T.J. Watson Research Center where
he was a member of the team developing Jikes RVM, a research virtual
machine for Java. His interests are in the area of software profiling
techniques and their use in program optimization and program
understanding.
|