Concurrency and Scalability versus Fragmentation and Compaction with Compact-fit

We study, formally and experimentally, the trade-off in temporal and spatial overhead when managing contiguous blocks of memory using the explicit, dynamic and real-time heap management system Compact-fit (CF). The key property of CF is that temporal and spatial overhead can be bounded, related, and predicted in constant time through the notion of partial and incremental compaction. Partial compaction determines the maximally tolerated degree of memory fragmentation. Incremental compaction of objects, introduced here, determines the maximal amount of memory involved in any, logically atomic, portion of a compaction operation. We explore CF's potential application space on (1) multiprocessor and multicore systems as well as on (2) memory-constrained uniprocessor systems. For (1), we argue that little or no compaction is likely to avoid the worst case in temporal as well as spatial overhead but also observe that scalability only improves by a constant factor. Scalability can be further improved significantly by reducing overall data sharing through separate instances of Compact-fit. For (2), we observe that incremental compaction can effectively trade-off throughput and memory fragmentation for lower latency.

[1]  David F. Bacon,et al.  Controlling fragmentation and space consumption in the metronome, a real-time garbage collector for Java , 2003 .

[2]  Elliot K. Kolodner,et al.  An algorithm for parallel incremental compaction , 2002, ISMM '02.

[3]  Ana Sokolova,et al.  A Compacting Real-Time Memory Management System , 2008, USENIX Annual Technical Conference.

[4]  Eran Gabber,et al.  Are Mallocs Free of Fragmentation? , 2001, USENIX Annual Technical Conference, FREENIX Track.

[5]  Ismael Ripoll,et al.  TLSF: a new dynamic memory allocator for real-time systems , 2004, Proceedings. 16th Euromicro Conference on Real-Time Systems, 2004. ECRTS 2004..

[6]  V. T. Rajan,et al.  A unified theory of garbage collection , 2004, OOPSLA '04.

[7]  C. Kirsch Hierarchical PLABs , CLABs , TLABs in Hotspot , 2011 .

[8]  Martin Schoeberl,et al.  Scheduling of hard real-time garbage collection , 2010, Real-Time Systems.

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

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

[11]  Kathryn S. McKinley,et al.  Hoard: a scalable memory allocator for multithreaded applications , 2000, SIGP.

[12]  Isabelle Puaut,et al.  Real-time performance of dynamic memory allocation algorithms , 2002, Proceedings 14th Euromicro Conference on Real-Time Systems. Euromicro RTS 2002.

[13]  Marta Z. Kwiatkowska,et al.  PRISM: Probabilistic Symbolic Model Checker , 2002, Computer Performance Evaluation / TOOLS.

[14]  Maged M. Michael Scalable lock-free dynamic memory allocation , 2004, PLDI '04.

[15]  Yoav Ossia,et al.  Mostly concurrent compaction for mark-sweep GC , 2004, ISMM '04.

[16]  Richard E. Jones,et al.  Handles revisited: optimising performance and memory costs in a real-time collector , 2011, ISMM '11.

[17]  Erez Petrank,et al.  Space overhead bounds for dynamic memory management with partial compaction , 2011, POPL '11.

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

[19]  Filip Pizlo,et al.  Stopless: a real-time garbage collector for multiprocessors , 2007, ISMM '07.

[20]  Paul R. Wilson,et al.  The memory fragmentation problem: solved? , 1998, ISMM '98.

[21]  Jan Vitek,et al.  Schism: fragmentation-tolerant real-time garbage collection , 2010, PLDI '10.

[22]  Ismael Ripoll,et al.  A comparison of memory allocators for real-time applications , 2006, JTRES '06.

[23]  Takeshi Ogasawara,et al.  An algorithm with constant execution time for dynamic storage allocation , 1995, Proceedings Second International Workshop on Real-Time Computing Systems and Applications.

[24]  Richard Jones Garbage Collection Page , 2011 .

[25]  V. T. Rajan,et al.  A real-time garbage collector with low overhead and consistent utilization , 2003, POPL '03.

[26]  D. M. Hutton,et al.  The Art of Multiprocessor Programming , 2008 .

[27]  Tomas Kalibera Replicating real-time garbage collector for Java , 2009, JTRES '09.

[28]  Victor Yodaiken,et al.  A Real-Time Linux , 2000 .

[29]  Ali-Reza Adl-Tabatabai,et al.  McRT-Malloc: a scalable transactional memory allocator , 2006, ISMM '06.

[30]  Scott A. Smolka,et al.  Composition and Behaviors of Probabilistic I/O Automata , 1994, Theor. Comput. Sci..

[31]  V. T. Rajan,et al.  A real-time garbage collector with low overhead and consistent utilization , 2003, POPL '03.

[32]  Nir Shavit,et al.  Parallel Garbage Collection for Shared Memory Multiprocessors , 2001, Java Virtual Machine Research and Technology Symposium.

[33]  Alex Garthwaite,et al.  Mostly lock-free malloc , 2002, ISMM '02.

[34]  V. T. Rajan,et al.  Controlling fragmentation and space consumption in the metronome, a real-time garbage collector for Java , 2003, LCTES '03.