MTM2: Scalable Memory Management for Multi-tasking Managed Runtime Environments

Multi-tasking, managed runtime environments (MREs) for modern type-safe, object-oriented programming languages enable isolated, concurrent execution of multiple applications within a single operating system process. Multi-tasking MREs can potentially extract high-performance on desktop and hand-held systems through aggressive sharing of classes and compiled code, and by exploiting high-level dynamic program information. We investigate the performance of a state-of-the-art multi-taking MRE for concurrent program execution. We find that due to limited support for multi-tasking and performance isolation in the memory management subsystem, multi-tasking performs poorly compared to a production-quality, single-tasking MRE. We present MTM2: a comprehensive memory management system for concurrent multi-tasking. MTM2facilitates performance isolation and efficient heap space usage through on-demand allocation of application-private regions. MTM2mitigates fragmentation using a novel hybrid garbage collector that combines mark-sweep with opportunistic copying. Our evaluation shows that MTM2improves overall performance, scalability, and footprint for concurrent workloads over state-of-the-art, multi- and single-tasking MREs.

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

[2]  Kathryn S. McKinley,et al.  In or out?: putting write barriers in their place , 2002, ISMM '02.

[3]  Andrew Kennedy,et al.  Combining Generics, Pre-compilation and Sharing Between Software-Based Processes , 2004 .

[4]  Richard E. Jones,et al.  A fast analysis for thread-local garbage collection with dynamic class loading , 2005, Fifth IEEE International Workshop on Source Code Analysis and Manipulation (SCAM'05).

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

[6]  Erez Petrank,et al.  The Compressor: concurrent, incremental, and parallel compaction , 2006, PLDI '06.

[7]  Emery D. Berger,et al.  MC2: high-performance garbage collection for memory-constrained environments , 2004, OOPSLA.

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

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

[10]  J. Eliot B. Moss,et al.  Incremental Collection of Mature Objects , 1992, IWMM.

[11]  Bernard Lang,et al.  Incremental incrementally compacting garbage collection , 1987, PLDI.

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

[13]  Antony L. Hosking,et al.  Reducing generational copy reserve overhead with fallback compaction , 2006, ISMM '06.

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

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

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

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

[18]  D. B. Davis,et al.  Sun Microsystems Inc. , 1993 .

[19]  David Dice,et al.  Supporting per-processor local-allocation buffers using lightweight user-level preemption notification , 2005, VEE '05.

[20]  Nathaniel Nystrom,et al.  Code Sharing among Virtual Machines , 2002, ECOOP.

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

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

[23]  Chandra Krintz,et al.  Task-aware garbage collection in a multi-tasking virtual machine , 2006, ISMM '06.