[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
article

A parallel, incremental and concurrent GC for servers

Published: 17 May 2002 Publication History

Abstract

Multithreaded applications with multi-gigabyte heaps running on modern servers provide new challenges for garbage collection (GC). The challenges for "server-oriented" GC include: ensuring short pause times on a multi-gigabyte heap, while minimizing throughput penalty, good scaling on multiprocessor hardware, and keeping the number of expensive multi-cycle fence instructions required by weak ordering to a minimum. We designed and implemented a fully parallel, incremental, mostly concurrent collector, which employs several novel techniques to meet these challenges. First, it combines incremental GC to ensure short pause times with concurrent low-priority background GC threads to take advantage of processor idle time. Second, it employs a low-overhead work packet mechanism to enable full parallelism among the incremental and concurrent collecting threads and ensure load balancing. Third, it reduces memory fence instructions by using batching techniques: one fence for each block of small objects allocated, one fence for each group of objects marked, and no fence at all in the write barrier. When compared to the mature well-optimized parallel stop-the-world mark-sweep collector already in the IBM JVM, our collector prototype reduces the maximum pause time from 284 ms to 101 ms, and the average pause time from 266 ms to 66 ms while only losing 10% throughput when running the SPECjbb2000 benchmark on a 256 MB heap on a 4-way 550 MHz Pentium multiprocessor.

References

[1]
Sarita V. Adve and Kourosh Gharachorloo. Shared memory consistency models: A tutorial. Research Report 95/7, Western Research Laboratory, 250 University Avenue Palo Alto, California 94301 USA, September 1995
[2]
Alain Azagury, Elliot~K. Kolodner, and Erez Petrank. A note on the implementation of replication-based garbage collection for multithreaded applications and multiprocessor environments. Parallel Processing Letters, 1999
[3]
David Bacon, Dick Attanasio, Han Lee, and Stephen Smith. Java without the coffee breaks: A nonintrusive multiprocessor garbage collector. In PLDI {30}
[4]
David F. Bacon, Ravi Konuru, Chet Murthy, and Mauricio Serrano. Thin locks: Featherweight synchronization for java. In Proceedings of SIGPLAN'98 Conference on Programming Languages Design and Implementation, ACM SIGPLAN Notices, pages 258--268, Montreal, June 1998. ACM Press
[5]
Henry G. Baker. List processing in real-time on a serial computer. Communications of the ACM, 21(4):280--94, 1978. Also AI Laboratory Working Paper 139, 1977
[6]
Ori Ben-Yitzhak, Irit Goft, Elliot~K. Kolodner, Kean Kuiper, and Victor Leikehman. An algorithm for parallel incremental compaction. In ISMM 2002 Proceedings of the Third International Symposium on Memory Management, ACM SIGPLAN Notices, Berlin, June 2002. ACM Press
[7]
Hans-Juergen Boehm, Alan~J. Demers, and Scott Shenker. Mostly parallel garbage collection. ACM SIGPLAN Notices, 26(6):157--164, 1991
[8]
Perry Cheng and Guy Belloch. A parallel, real-time garbage collector. In PLDI {30}
[9]
F. Corella, J.M. Stone, and C.M. Barton. Specification of the PowerPC shared memory architecture. Technical Report 18638, IBM Thomas J. Watson Research Center, January 1993
[10]
John DeTreville. Experience with concurrent garbage collectors for Modula-2+. Technical Report~64, DEC Systems Research Center, Palo Alto, CA, August 1990
[11]
Edsgar W. Dijkstra, Leslie Lamport, A. J. Martin, C. S. Scholten, and E. F. M. Steffens. On-the-fly garbage collection: An exercise in cooperation. Communications of the ACM, 21(11):965--975, November 1978
[12]
Robert Dimpsey, Rajiv Arora, and Kean Kuiper. Java server performance: A case study of building efficient, scalable Jvms. IBM System Journal, 39(1):151--174, 2000
[13]
Damien Doligez and Georges Gonthier. Portable, unobtrusive garbage collection for multiprocessor systems. In Conference Record of the Twenty-first Annual ACM Symposium on Principles of Programming Languages, ACM SIGPLAN Notices. ACM Press, January 1994
[14]
Damien Doligez and Xavier Leroy. A concurrent generational garbage collector for a multi-threaded implementation of ML. In Conference Record of the Twentieth Annual ACM Symposium on Principles of Programming Languages, ACM SIGPLAN Notices, pages 113--123. ACM Press, January 1993
[15]
Tamar Domani, Elliot Kolodner, and Erez Petrank. A generational on-the-fly garbage collector for Java. In Proceedings of SIGPLAN 2000 Conference on Programming Languages Design and Implementation, ACM SIGPLAN Notices, Vancouver, June 2000. ACM Press
[16]
Tamar Domani, Elliot K. Kolodner, Ethan Lewis, Elliot E. Salant, Katherine Barabash, Itai Lahan, Erez Petrank, Igor Yanover, and Yossi Levanoni. Implementing an on-the-fly garbage collector for Java. In ISMM {23}
[17]
Toshio Endo, Kenjiro Taura, and Akinori Yonezawa. A scalable mark-sweep garbage collector on large-scale shared-memory machines. In Proceedings of High Performance Computing and Networking (SC'97), 1997
[18]
Christine Flood, Dave Detlefs, Nir Shavit, and Catherine Zhang. Parallel garbage collection for shared memory multiprocessors. In Usenix Java Virtual Machine Research and Technology Symposium (JVM '01), Monterey, CA, April 2001
[19]
Richard L. Hudson and J. Eliot B. Moss. Incremental garbage collection for mature objects. In Yves Bekkers and Jacques Cohen, editors, Proceedings of International Workshop on Memory Management, volume 637 of Lecture Notes in Computer Science, University of Massachusetts, USA, 16--18~September 1992. Springer-Verlag
[20]
Richard L. Hudson and J. Eliot B. Moss. Sapphire: Copying gc without stopping the world. In ISCOPE Conference on ACM 2001 Java Grande, pages 48--57, Palo Alto CA USA, 2001. ACM Press
[21]
Z/Architecture Principles of Operation (SA22-7832-01). Appendix A, 2000. Available at www.ibm.com
[22]
IA-64 Application Developer's Architecture Guide, May 1999. Available at http://developer.intel.com/design/itanium
[23]
ISMM 2000 Proceedings of the Second International Symposium on Memory Management, volume 36(1) of ACM SIGPLAN Notices, Minneapolis, MN, October 2000. ACM Press
[24]
Bernard Lang and Francis Dupont. Incremental incrementally compacting garbage collection. In SIGPLAN'87 Symposium on Interpreters and Interpretive Techniques, volume 22(7) of ACM SIGPLAN Notices, pages 253--263. ACM Press, 1987
[25]
Yossi Levanoni and Erez Petrank. An on-the-fly reference counting garbage collector for Java. In OOPSLA {29}
[26]
Henry Lieberman and Carl E. Hewitt. A real-time garbage collector based on the lifetimes of objects. Communications of the ACM, 26(6):419--429, 1983. Also report TM--184, Laboratory for Computer Science, MIT, Cambridge, MA, July 1980 and AI Lab Memo 569, 1981
[27]
David A. Moon. Garbage collection in a large LISP system. In Guy L. Steele, editor, Conference Record of the 1984 ACM Symposium on Lisp and Functional Programming, pages 235--245, Austin, TX, August 1984. ACM Press
[28]
Scott M. Nettles and James W. O'Toole. Real-time replication-based garbage collection. In Proceedings of SIGPLAN'93 Conference on Programming Languages Design and Implementation, volume 28(6) of ACM SIGPLAN Notices, Carnegie Mellon University, USA, June 1993. ACM Press
[29]
OOPSLA'01 ACM Conference on Object-Oriented Systems, Languages and Applications, volume 36(10) of ACM SIGPLAN Notices, Tampa, FL, October 2001. ACM Press
[30]
Proceedings of SIGPLAN 2001 Conference on Programming Languages Design and Implementation, ACM SIGPLAN Notices, Snowbird, Utah, June 2001. ACM Press
[31]
Tony Printezis and David Detlefs. A generational mostly-concurrent garbage collector. In ISMM {23}
[32]
Standard Performance Evaluation Corporation. Available at www.spec.org
[33]
Guy L. Steele. Multiprocessing compactifying garbage collection. Communications of the ACM, 18(9):495--508, September 1975
[34]
Toshio Suganuma, Takeshi Ogasawara, Mikio Takeuchi, Toshiaki Yasue~Motohiro Kawahito, Kazuaki Ishizaki, Hideaki Komatsu, and Toshio Nakatani. Overview of the ibm java just-in-time compiler. IBM Systems Journal, 29(1), February 2000
[35]
Toshio Suganuma, Toshiaki Yasue, Motohiro Kawahito, Hideaki Komatsu, and Toshio Nakatani. A dynamic optimization framework for a Java Just-In-Time compiler. In OOPSLA {29}, pages 180--194
[36]
JSRs: Java Specification Requests, 2001. JSR 133: Java Memory Model and Thread Specification Revision. Available at http://jcp.org/jsr/detail/133.jsp
[37]
David M. Ungar. Generation scavenging: A non-disruptive high performance storage reclamation algorithm. ACM SIGPLAN Notices, 19(5):157--167, April 1984. Also published as ACM Software Engineering Notes 9, 3 (May 1984) --- Proceedings of the ACM/SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments, 157--167, April 1984

Cited By

View all
  • (2012)Scalable concurrent and parallel markACM SIGPLAN Notices10.1145/2426642.225900647:11(61-72)Online publication date: 15-Jun-2012
  • (2012)Scalable concurrent and parallel markProceedings of the 2012 international symposium on Memory Management10.1145/2258996.2259006(61-72)Online publication date: 15-Jun-2012
  • (2006)Controlling garbage collection and heap growth to reduce the execution time of Java applicationsACM Transactions on Programming Languages and Systems (TOPLAS)10.1145/1152649.115265228:5(908-941)Online publication date: 1-Sep-2006
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 37, Issue 5
May 2002
326 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/543552
Issue’s Table of Contents
  • cover image ACM Conferences
    PLDI '02: Proceedings of the ACM SIGPLAN 2002 conference on Programming language design and implementation
    June 2002
    338 pages
    ISBN:1581134630
    DOI:10.1145/512529
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 May 2002
Published in SIGPLAN Volume 37, Issue 5

Check for updates

Author Tags

  1. JVM
  2. Java
  3. concurrent garbage collection
  4. garbage collection
  5. incremental garbage collection
  6. weak ordering

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)21
  • Downloads (Last 6 weeks)1
Reflects downloads up to 10 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2012)Scalable concurrent and parallel markACM SIGPLAN Notices10.1145/2426642.225900647:11(61-72)Online publication date: 15-Jun-2012
  • (2012)Scalable concurrent and parallel markProceedings of the 2012 international symposium on Memory Management10.1145/2258996.2259006(61-72)Online publication date: 15-Jun-2012
  • (2006)Controlling garbage collection and heap growth to reduce the execution time of Java applicationsACM Transactions on Programming Languages and Systems (TOPLAS)10.1145/1152649.115265228:5(908-941)Online publication date: 1-Sep-2006
  • (2006)Integrating generations with advanced reference counting garbage collectorsConcurrency and Computation: Practice and Experience10.1002/cpe.100518:9(959-995)Online publication date: 12-Jan-2006
  • (2023)BestGC: An Automatic GC SelectorIEEE Access10.1109/ACCESS.2023.329439811(72357-72373)Online publication date: 2023
  • (2022)BestGC: An Automatic GC Selector SoftwareProceedings of the 19th International Conference on Managed Programming Languages and Runtimes10.1145/3546918.3560804(144-146)Online publication date: 14-Sep-2022
  • (2018)Hardware Accelerated Marking for Mark & Sweep Garbage CollectionIEICE Transactions on Information and Systems10.1587/transinf.2017EDP7163E101.D:4(1107-1115)Online publication date: 2018
  • (2016)Rust as a language for high performance GC implementationACM SIGPLAN Notices10.1145/3241624.292670751:11(89-98)Online publication date: 14-Jun-2016
  • (2016)A fully concurrent garbage collector for functional programs on multicore processorsACM SIGPLAN Notices10.1145/3022670.295194451:9(421-433)Online publication date: 4-Sep-2016
  • (2016)A fully concurrent garbage collector for functional programs on multicore processorsProceedings of the 21st ACM SIGPLAN International Conference on Functional Programming10.1145/2951913.2951944(421-433)Online publication date: 4-Sep-2016
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media