Abstract
In a parallel, shared-memory, language with a garbage collected heap, it is desirable for each processor to perform minor garbage collections independently. Although obvious, it is difficult to make this idea pay off in practice, especially in languages where mutation is common. We present several techniques that substantially improve the state of the art. We describe these techniques in the context of a full-scale implementation of Haskell, and demonstrate that our local-heap collector substantially improves scaling, peak performance, and robustness.
- Todd A. Anderson. Optimizations in a private nursery-based garbage collector. In ISMM '10: Proceedings of the 2010 international symposium on Memory management, pages 21--30. ACM, 2010. Google Scholar
Digital Library
- David F. Bacon, Perry Cheng, and V. T. Rajan. A real-time garbage collector with low overhead and consistent utilization. In Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, POPL '03, pages 285--298, 2003. Google Scholar
Digital Library
- Lars Bergstrom, Mike Rainey, John Reppy, Adam Shaw, and Matthew Fluet. Lazy tree splitting. In Proceedings of the 15th ACM SIGPLAN international conference on Functional programming, ICFP '10, pages 93--104, 2010. Google Scholar
Digital Library
- Stephen M. Blackburn and Kathryn S. McKinley. Immix: a mark-region garbage collector with space efficiency, fast collection, and mutator performance. In Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation, PLDI '08, pages 22--32, 2008. Google Scholar
Digital Library
- Stephen M. Blackburn, Perry Cheng, and Kathryn S. McKinley. Myths and realities: the performance impact of garbage collection. In Proceedings of the joint international conference on Measurement and modeling of computer systems, SIGMETRICS '04/Performance '04, pages 25--36. ACM, 2004. Google Scholar
Digital Library
- Damien Doligez and Xavier Leroy. A concurrent, generational garbage collector for a multithreaded implementation of ML. In POPL '93: Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 113--123, 1993. Google Scholar
Digital Library
- Tamar Domani, Gal Goldshtein, Elliot K. Kolodner, Ethan Lewis, Erez Petrank, and Dafna Sheinwald. Thread-local heaps for java. In ISMM '02: Proceedings of the 3rd international symposium on Memory management, pages 76--87. ACM, 2002. Google Scholar
Digital Library
- Matthew Fluet, Mike Rainey, John Reppy, and Adam Shaw. Implicitly-threaded parallelism in manticore. In Proceeding of the 13th ACM SIGPLAN international conference on Functional programming, ICFP '08, pages 119--130, 2008. Google Scholar
Digital Library
- Richard Jones and Andy C. King. A fast analysis for thread-local garbage collection with dynamic class loading. In Proceedings of the Fifth IEEE International Workshop on Source Code Analysis and Manipulation, pages 129--138, Washington, DC, USA, 2005. IEEE Computer Society. Google Scholar
Digital Library
- Simon Marlow, Simon Peyton Jones, and Wolfgang Thaller. Extending the haskell foreign function interface with concurrency. In Proceedings of the 2004 ACM SIGPLAN workshop on Haskell, Haskell '04, pages 22--32, 2004. Google Scholar
Digital Library
- Simon Marlow, Alexey Rodriguez Yakushev, and Simon Peyton Jones. Faster laziness using dynamic pointer tagging. In Proceedings of the 12th ACM SIGPLAN international conference on Functional programming, ICFP '07, pages 277--288, 2007. Google Scholar
Digital Library
- Simon Marlow, Tim Harris, Roshan P. James, and Simon Peyton Jones. Parallel generational-copying garbage collection with a block-structured heap. In Proceedings of the 7th international symposium on Memory management, ISMM '08, pages 11--20. ACM, 2008. Google Scholar
Digital Library
- Simon Marlow, Simon Peyton Jones, and Satnam Singh. Runtime support for multicore haskell. In Proceedings of the 14th ACM SIGPLAN international conference on Functional programming, ICFP '09, pages 65--78, 2009. Google Scholar
Digital Library
- Pekka P. Pirinen. Barrier techniques for incremental tracing. In Proceedings of the 1st international symposium on Memory management, ISMM '98, pages 20--25. ACM, 1998. Google Scholar
Digital Library
- Bjarne Steensgaard. Thread-specific heaps for multi-threaded programs. In ISMM '00: Proceedings of the 2nd international symposium on Memory management, pages 18--24. ACM, 2000. Google Scholar
Digital Library
- Yi Zhao, Jin Shi, Kai Zheng, Haichuan Wang, Haibo Lin, and Ling Shao. Allocation wall: a limiting factor of java applications on emerging multi-core platforms. In Proceeding of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications, OOPSLA '09, pages 361--376, 2009. Google Scholar
Digital Library
Index Terms
Multicore garbage collection with local heaps
Recommendations
Multicore garbage collection with local heaps
ISMM '11: Proceedings of the international symposium on Memory managementIn a parallel, shared-memory, language with a garbage collected heap, it is desirable for each processor to perform minor garbage collections independently. Although obvious, it is difficult to make this idea pay off in practice, especially in languages ...
Concurrent, parallel, real-time garbage-collection
ISMM '10: Proceedings of the 2010 international symposium on Memory managementWith the current developments in CPU implementations, it becomes obvious that ever more parallel multicore systems will be used even in embedded controllers that require real-time guarantees. When garbage collection is used in these systems, parallel ...
Concurrent, parallel, real-time garbage-collection
ISMM '10With the current developments in CPU implementations, it becomes obvious that ever more parallel multicore systems will be used even in embedded controllers that require real-time guarantees. When garbage collection is used in these systems, parallel ...







Comments