Sable Research Group Assessing the Impact of Optimization in Java Virtual Machines Sable

Many new Java runtime optimizations report relatively smal l, single-digit performance improvements. On modern virtual and actual hardware, however, the p erformance impact of an optimization can be influenced by a variety of factors in the underlying system . Using a case study of a new garbage collection optimization in two different Java virtual mach ines, we show the various issues that must be taken into consideration when claiming an improvement. We e xamine the specific and overall performance changes due to our optimization and show how unintende d si -effects can contribute to, and distort the final assessment. Our experience shows that VM an d h rdware concerns can generate variances of up to 9.5% in whole program execution time. Consider ation of these confounding effects is critical to a good understanding of Java performance and opt imization.

[1]  Chandra Krintz,et al.  Dynamic selection of application-specific garbage collectors , 2004, ISMM '04.

[2]  Chen-Yong Cher,et al.  Software prefetching for mark-sweep garbage collection: hardware analysis and software redesign , 2004, ASPLOS XI.

[3]  Hans-Juergen Boehm,et al.  Reducing garbage collector cache misses , 2000, ISMM '00.

[4]  Feng Qian,et al.  An adaptive, region-based allocator for java , 2002, ISMM '02.

[5]  Etienne Gagnon,et al.  A portable research framework for the execution of java bytecode , 2003 .

[6]  Kathryn S. McKinley,et al.  Beltway: getting around garbage collection gridlock , 2002, PLDI '02.

[7]  Perry Cheng,et al.  Myths and realities: the performance impact of garbage collection , 2004, SIGMETRICS '04/Performance '04.

[8]  Kathryn S. McKinley,et al.  Age-based garbage collection , 1999, OOPSLA '99.

[9]  Perry Cheng,et al.  The garbage collection advantage: improving program locality , 2004, OOPSLA.

[10]  Lieven Eeckhout,et al.  How java programs interact with virtual machines at the microarchitectural level , 2003, OOPSLA.

[11]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[12]  David M. Ungar,et al.  Generation Scavenging: A non-disruptive high performance storage reclamation algorithm , 1984, SDE 1.

[13]  Jingling Xue,et al.  Let's study whole-program cache behaviour analytically , 2002, Proceedings Eighth International Symposium on High Performance Computer Architecture.

[14]  Laurie J. Hendren,et al.  SableVM: A Research Framework for the Efficient Execution of Java Bytecode , 2001, Java Virtual Machine Research and Technology Symposium.

[15]  Matthias Hauswirth,et al.  Using Hardware Performance Monitors to Understand the Behavior of Java Applications , 2004, Virtual Machine Research and Technology Symposium.

[16]  Kathryn S. McKinley,et al.  Finding your cronies: static analysis for dynamic object colocation , 2004, OOPSLA.

[17]  Weng-Fai Wong,et al.  Compiler orchestrated prefetching via speculation and predication , 2004, ASPLOS XI.

[18]  Matthias Hauswirth,et al.  Vertical profiling: understanding the behavior of object-priented applications , 2004, OOPSLA.

[19]  Lance M. Berc,et al.  Continuous profiling: where have all the cycles gone? , 1997, ACM Trans. Comput. Syst..

[20]  Laurie J. Hendren,et al.  Dynamic metrics for java , 2003, OOPSLA '03.

[21]  Sandhya Dwarkadas,et al.  Characterizing and predicting program behavior and its variability , 2003, 2003 12th International Conference on Parallel Architectures and Compilation Techniques.

[22]  Laurie J. Hendren,et al.  An adaptive, region-based allocator for java , 2002, MSP/ISMM.

[23]  J. Moss,et al.  Older-first garbage collection in practice: evaluation in a Java Virtual Machine , 2003, MSP '02.

[24]  Dayong Gu,et al.  Code Layout as a Source of Noise in JVM Performance , 2005, Stud. Inform. Univ..

[25]  Kevin Hammond,et al.  Spiking Your Caches , 1993, Functional Programming.

[26]  Bowen Alpern,et al.  Implementing jalapeño in Java , 1999, OOPSLA '99.

[27]  Perry Cheng,et al.  Oil and water? High performance garbage collection in Java with MMTk , 2004, Proceedings. 26th International Conference on Software Engineering.

[28]  Brad Calder,et al.  The Strong correlation Between Code Signatures and Performance , 2005, IEEE International Symposium on Performance Analysis of Systems and Software, 2005. ISPASS 2005..