Exploiting FIFO Scheduler to Improve Parallel Garbage Collection Performance

Recent studies have found that parallel garbage collection performs worse with more CPUs and more collector threads. As part of this work, we further investigate this enomenon and find that poor scalability is worst in highly scalable Java applications. Our investigation to find the causes clearly reveals that efficient multi-threading in an application can prolong the average object lifespan, which results in less effective garbage collection. We also find that prolonging lifespan is the direct result of Linux's Completely Fair Scheduler due to its round-robin like behavior that can increase the heap contention between the application threads. Instead, if we use pseudo first-in-first-out to schedule application threads in large multicore systems, the garbage collection scalability is significantly improved while the time spent in garbage collection is reduced by as much as 21%. The average execution time of the 24 Java applications used in our study is also reduced by 11%. Based on this observation, we propose two approaches to optimally select scheduling policies based on application scalability profile. Our first approach uses the profile information from one execution to tune the subsequent executions. Our second approach dynamically collects profile information and performs policy selection during execution.

[1]  Stijn Eyerman,et al.  Bottle graphs: visualizing scalability bottlenecks in multi-threaded applications , 2013, OOPSLA.

[2]  P. Cochat,et al.  Et al , 2008, Archives de pediatrie : organe officiel de la Societe francaise de pediatrie.

[3]  Jan Vitek,et al.  A black-box approach to understanding concurrency in DaCapo , 2012, OOPSLA '12.

[4]  Kathryn S. McKinley,et al.  Error-free garbage collection traces: how to cheat and not get caught , 2002, SIGMETRICS '02.

[5]  Nhan Nguyen,et al.  NumaGiC: a Garbage Collector for Big Data on Big NUMA Machines , 2015, ASPLOS.

[6]  Witawas Srisa-an,et al.  Allocation-phase aware thread scheduling policies to improve garbage collection performance , 2007, ISMM '07.

[7]  Marc Shapiro,et al.  Assessing the scalability of garbage collectors on many cores , 2011, PLOS '11.

[8]  George Neville-Neil,et al.  The Design and Implementation of the FreeBSD Operating System , 2014 .

[9]  Marc Shapiro,et al.  A study of the scalability of stop-the-world garbage collectors on multicores , 2013, ASPLOS '13.

[10]  Lieven Eeckhout,et al.  Exploring multi-threaded Java application performance on multicore hardware , 2012, OOPSLA '12.

[11]  J. Morris Chang,et al.  A quantitative simulator for dynamic memory managers , 2000, 2000 IEEE International Symposium on Performance Analysis of Systems and Software. ISPASS (Cat. No.00EX422).

[12]  Witawas Srisa-an,et al.  Contention-aware scheduler: unlocking execution parallelism in multithreaded java programs , 2008, OOPSLA.

[13]  Witawas Srisa-an,et al.  SmartStealing: Analysis and Optimization of Work Stealing in Parallel Garbage Collection for Java VM , 2015, PPPJ.

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

[15]  Witawas Srisa-an,et al.  Microphase: an approach to proactively invoking garbage collection for improved performance , 2007, OOPSLA.

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

[17]  Kathryn S. McKinley,et al.  Fast conservative garbage collection , 2014, OOPSLA.

[18]  Witawas Srisa-an,et al.  Factors affecting scalability of multithreaded Java applications on manycore systems , 2015, 2015 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS).

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

[20]  J. Morris Chang,et al.  Multithreading in Java: Performance and Scalability on Multicore Systems , 2011, IEEE Transactions on Computers.

[21]  Xi Yang,et al.  Looking back on the language and hardware revolutions: measured power, performance, and scaling , 2011, ASPLOS XVI.

[22]  Witawas Srisa-an,et al.  AS-GC: An Efficient Generational Garbage Collector for Java Application Servers , 2007, ECOOP.

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

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

[25]  J. Morris Chang,et al.  Performance Characterization of Java Applications on SMT Processors , 2005, IEEE International Symposium on Performance Analysis of Systems and Software, 2005. ISPASS 2005..