Concurrent GC leveraging transactional memory

We predict that the ever-growing number of cores on our desktops will require a re-examination of concurrent programming. Two technologies are likely to become mainstream in response: Transactional memory provides a superior programming model to traditional lock-based concurrency, while Concurrent GC can take advantage of multiple cores to eliminate perceptible pauses in desktop applications such as games or Internet telephony. This paper proposes a combination of the two technologies, producing a synergy that improves scalability while eliminating the annoyance of user-perceivable pauses. Specifically, we show how concurrent GC can share some of the mechanisms required for transactional memory. Thus as transactional memory becomes more efficient, so too will concurrent GC. We demonstrate how, using a state of the art software transactional memory system, we can build a state of the art concurrent collector. Our goal was to reduce 90% of pause times to under one millisecond. Of the remainder, we aim for 90% to be under 10ms, and90% of those left to be under 100ms. Our performance results show that we were able to achieve these targets, with pause times between one or two orders of magnitude lower than mainstream technologies.

[1]  Guy L. Steele,et al.  Multiprocessing compactifying garbage collection , 1975, CACM.

[2]  Maurice Herlihy,et al.  Lock-free garbage collection for multiprocessors , 1991, SPAA '91.

[3]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.

[4]  J. Eliot B. Moss,et al.  Sapphire: copying GC without stopping the world , 2001, JGI '01.

[5]  Bratin Saha,et al.  McRT-STM: a high performance software transactional memory system for a multi-core runtime , 2006, PPoPP '06.

[6]  David S. Munro,et al.  Starting with termination: a methodology for building distributed garbage collection algorithms , 2001, Proceedings 24th Australian Computer Science Conference. ACSC 2001.

[7]  Dan Grossman,et al.  Enforcing isolation and ordering in STM , 2007, PLDI '07.

[8]  Michael Wolf,et al.  The pauseless GC algorithm , 2005, VEE '05.

[9]  Mark Plesko,et al.  Optimizing memory transactions , 2006, PLDI '06.

[10]  J. T. Robinson,et al.  On optimistic methods for concurrency control , 1979, TODS.

[11]  Maurice Herlihy,et al.  Software transactional memory for dynamic-sized data structures , 2003, PODC '03.

[12]  Milo M. K. Martin,et al.  Deconstructing transactions: The subtleties of atomicity , 2005 .

[13]  Keir Fraser,et al.  Practical lock-freedom , 2003 .

[14]  V. T. Rajan,et al.  The Metronome: A Simpler Approach to Garbage Collection in Real-Time Systems , 2003, OTM Workshops.

[15]  Andreas Reuter,et al.  Transaction Processing: Concepts and Techniques , 1992 .

[16]  Brian T. Lewis,et al.  Compiler and runtime support for efficient software transactional memory , 2006, PLDI '06.

[17]  Leslie Lamport,et al.  On-the-fly garbage collection: an exercise in cooperation , 1975, CACM.

[18]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[19]  Thomas F. Knight An architecture for mostly functional languages , 1986, LFP '86.

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

[21]  Rodney A. Brooks,et al.  Trading data space for reduced time and code space in real-time garbage collection on stock hardware , 1984, LFP '84.

[22]  Keir Fraser,et al.  Language support for lightweight transactions , 2003, SIGP.

[23]  Virendra J. Marathe,et al.  Design tradeoffs in modern software transactional memory systems , 2004 .