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.