The taming of the shrew: increasing performance by automatic parameter tuning for java garbage collectors

Garbage collection, if not tuned properly, can considerably impact application performance. Unfortunately, configuring a garbage collector is a tedious task as only few guidelines exist and tuning is often done by trial and error. We present what is, to our knowledge, the first published work on automatically tuning Java garbage collectors in a black-box manner considering all available parameters. We propose the use of iterated local search methods to automatically compute application-specific garbage collector configurations. Our experiments show that automatic tuning can reduce garbage collection time by up to 77% for a specific application and a specific workload and by 35% on average across all benchmarks (compared to the default configuration). We evaluated our approach for 3 different garbage collectors on the DaCapo and SPECjbb benchmarks, as well as on a real-world industrial application.

[1]  Francisco Tirado,et al.  Dynamic management of nursery space organization in generational collection , 2004, Eighth Workshop on Interaction between Compilers and Computer Architectures, 2004. INTERACT-8 2004..

[2]  Amer Diwan,et al.  The DaCapo benchmarks: java benchmarking development and analysis , 2006, OOPSLA '06.

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

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

[5]  Georgios Gousios,et al.  Tuning Java's memory manager for high performance server applications , 2006 .

[6]  Matthias Jacob,et al.  Concurrent Remembered Set Refinement in Generational Garbage Collection , 2002, Java Virtual Machine Research and Technology Symposium.

[7]  Stephan M. Winkler,et al.  Architecture and Design of the HeuristicLab Optimization Environment , 2014 .

[8]  Gavin Brown,et al.  Intelligent selection of application-specific garbage collectors , 2007, ISMM '07.

[9]  Gavin Brown,et al.  Garbage collection auto-tuning for Java mapreduce on multi-cores , 2011, ISMM '11.

[10]  Marcus Hirt,et al.  Oracle JRockit: The Definitive Guide , 2010 .

[11]  Simonetta Balsamo,et al.  Optimisation of Virtual Machine Garbage Collection Policies , 2011, ASMTA.

[12]  David Vengerov,et al.  Modeling, analysis and throughput optimization of a generational garbage collector , 2009, ISMM '09.

[13]  Emery D. Berger,et al.  Automatic heap sizing: taking real memory into account , 2004, ISMM '04.

[14]  Witawas Srisa-an,et al.  Investigating the effects of using different nursery sizing policies on performance , 2009, ISMM '09.

[15]  David Detlefs,et al.  Garbage-first garbage collection , 2004, ISMM '04.

[16]  Gavin Brown,et al.  The economics of garbage collection , 2010, ISMM '10.

[17]  Henry Lieberman,et al.  A real-time garbage collector based on the lifetimes of objects , 1983, CACM.

[18]  Tim Brecht,et al.  Controlling garbage collection and heap growth to reduce the execution time of Java applications , 2006, TOPL.