Task-aware garbage collection in a multi-tasking virtual machine

A multi-tasking virtual machine (MVM) executes multiple programs in isolation, within a single operating system process. The goal of a MVM is to improve startup time, overall system throughput, and performance, by effective reuse and sharing of system resources across programs (tasks). However, multitasking also mandates a memory management system capable of offering a guarantee of isolation with respect to garbage collection costs, accounting of memory usage, and timely reclamation of heap resources upon task termination.To this end, we investigate and evaluate, novel task-aware extensions to a state-of-the-art MVM garbage collector (GC). Our task-aware GC exploits the generational garbage collection hypothesis, in the context of multiple tasks, to provide performance isolation by maintaining task-private young generations. Task aware GC facilitates concurrent per-task allocation and promotion, and minimizes synchronization and scanning overhead. In addition, we efficiently track per-task heap usage to enable GC-free reclamation upon task termination. Moreover, we couple these techniques with a light-weight synchronization mechanism that enables per-task minor collection, concurrently with allocation by other tasks.We empirically evaluate the efficiency, scalability, and through-put that our task-aware GC system enables.

[1]  Paul R. Wilson,et al.  Uniprocessor Garbage Collection Techniques , 1992, IWMM.

[2]  Beth Brown A Guide to Programming in Java: Java 2 Platform Standard Edition 5 , 2005 .

[3]  Grzegorz Czajkowski Application isolation in the JavaTM Virtual Machine , 2000, OOPSLA.

[4]  J. Eliot B. Moss,et al.  Mark-copy: fast copying GC with less space overhead , 2003, OOPSLA '03.

[5]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

[6]  Rajiv Arora,et al.  Java server performance: A case study of building efficient, scalable Jvms , 2000, IBM Syst. J..

[7]  Paul R. Wilson,et al.  Non-compacting memory allocation and real-time garbage collection , 1997 .

[8]  Craig Chambers,et al.  The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages , 1992 .

[9]  Laurent Daynès,et al.  A Multi-User Virtual Machine , 2003, USENIX Annual Technical Conference, General Track.

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

[11]  David S. Munro,et al.  Garbage collecting the world: one car at a time , 1997, OOPSLA '97.

[12]  Darko Stefanovic,et al.  A comparative performance evaluation of write barrier implementation , 1992, OOPSLA.

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

[14]  Erez Petrank,et al.  Mostly concurrent garbage collection revisited , 2003, OOPSLA '03.

[15]  Laurent Daynès,et al.  Sharing the Runtime Representation of Classes Across Class Loaders , 2005, ECOOP.

[16]  Bjarne Steensgaard,et al.  Thread-specific heaps for multi-threaded programs , 2000, ISMM '00.

[17]  Antony L. Hosking,et al.  Remembered sets can also play cards , 1999 .

[18]  Urs Hölzle,et al.  A Fast Write Barrier for Generational Garbage Collectors , 1993 .

[19]  Erez Petrank,et al.  Thread-local heaps for Java , 2002, ISMM '02.

[20]  Grzegorz Czajkowski,et al.  Application isolation in the Java Virtual Machine , 2000, OOPSLA '00.

[21]  Erez Petrank,et al.  Combining card marking with remembered sets: how to save scanning time , 1998, ISMM '98.

[22]  David Grove,et al.  Fast and Efficient Partial Code Reordering : Taking Advantage of Dynamic Recompilation , 2006 .

[23]  David Ungar Generation scavenging: a nondisruptive high performance storage reclamation algorithm , 1984 .

[24]  F. Lockwood Morris,et al.  A time- and space-efficient garbage compaction algorithm , 1978, CACM.

[25]  Wilson C. Hsieh,et al.  The KaffeOS Java runtime system , 2005, TOPL.

[26]  Darko Stefanovic,et al.  A comparative performance evaluation of write barrier implementation , 1992, OOPSLA '92.

[27]  Cliff Click,et al.  The java hotspot TM server compiler , 2001 .

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