skip to main content
research-article

Multicore garbage collection with local heaps

Published:04 June 2011Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Multicore garbage collection with local heaps

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in

Full Access

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader
About Cookies On This Site

We use cookies to ensure that we give you the best experience on our website.

Learn more

Got it!