Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Waste not, want not: resource-based garbage collection in a shared environment

Published: 04 June 2011 Publication History
  • Get Citation Alerts
  • Abstract

    To achieve optimal performance, garbage-collected applications must balance the sizes of their heaps dynamically. Sizing the heap too small can reduce throughput by increasing the number of garbage collections that must be performed. Too large a heap, however, can cause the system to page and drag down the overall throughput. In today's multicore, multiprocessor machines, multiple garbage-collected applications may run simultaneously. As a result, each virtual machine (VM) must adjust its memory demands to reflect not only the behavior of the application it is running, but also the behavior of the peer applications running on the system.
    We present a memory management system that enables VMs to react to memory demands dynamically. Our approach allows the applications' heaps to remain small enough to avoid the negative impacts of paging, while still taking advantage of any memory that is available within the system. This memory manager, which we call Poor Richard's Memory Manager, focuses on optimizing overall system performance by allowing applications to share data and make system-wide decisions. We describe the design of our memory management system, show how it can be added to existing VMs with little effort, and document that it has almost no impact on performance when memory is plentiful. Using both homogenous and heterogenous Java workloads, we then show that Poor Richard's memory manager improves average performance by up to a factor 5.5 when the system is paging. We further show that this result is not specific to any garbage collection algorithm, but that this improvement is observed for every garbage collector on which we test it. We finally demonstrate the versatility of our memory manager by using it to improve the performance of a conservative whole-heap garbage collector used in executing .Net applications.

    References

    [1]
    Bug ID: 4694058 Allow JRE to return unused memory to the system heap. Available at http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4694058.
    [2]
    Garbage collector ergonomics. Available at http://download.oracle.com/javase/6/docs/technotes/guides/vm/gc-ergonomics.html.
    [3]
    getrusage(3c) - solaris man page. Available at http://download.oracle.com/docs/cd/E19963-01/821-1465/getrusage-3c/index.html.
    [4]
    proc(5) - process info pseudo-filesystem - Linux man page. Available at http://linux.die.net/man/5/proc.
    [5]
    Tuning the memory management system. Available at http://download.oracle.com/docs/cd/E15289_01/doc.40/e15060/memman.htm#i1092162.
    [6]
    R. Alonso and A. W. Appel. An advisor for flexible working sets. In Proceedings of the 1990 Joint International Conference on Measurement and Modeling of Computer Systems, pages 153--162, Boulder, CO, May 1990.
    [7]
    E. Andreasson, F. Hoffmann, and O. Lindholm. To collect or not to collect? Machine learning for memory management. In JVM '02: Proceedings of the Java Virtual Machine Research and Technology Symposium, pages 27--39, August 2002.
    [8]
    A. W. Appel. Simple generational garbage collection and fast allocation. Software: Practice and Experience, 19(2):171--183, 1989.
    [9]
    D. F. Bacon, P. Cheng, and V. T. Rajan. A real-time garbage collecor with low overhead and consistent utilization. In Thirtieth Annual ACM Symposium on Principles of Programming Languages, volume 38(1), pages 285--298, New Orleans, LA, Jan. 2003.
    [10]
    H. D. Baecker. Garbage collection for virtual memory computer systems. Communications of the ACM, 15(11):981--986, Nov. 1972.
    [11]
    H. G. Baker. List processing in real-time on a serial computer. Communications of the ACM, 21(4):280--294, 1978.
    [12]
    P. B. Bishop. Computer Systems with a Very Large Address Space and Garbage Collection. PhD thesis, MIT Laboratory for Computer Science, Cambridge, MA, May 1977.
    [13]
    S. M. Blackburn, P. Cheng, and K. S. McKinley. Myths and reality: The performance impact of garbage collection. In Proceedings of the 2004 Joint International Conference on Measurement and Modeling of Computer Systems, volume 32(1), pages 25--36, June 2004.
    [14]
    S. M. Blackburn, P. Cheng, and K. S. McKinley. Oil and water? high performance garbage collection in Java with MMTk. In Proceedings of the 26th International Conference on Software Engineering, pages 137--146, Edinburgh, Scotland, May 2004.
    [15]
    S. M. Blackburn, R. Garner, C. Hoffmann, A. M. Khang, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, B. Moss, A. Phansalkar, D. Stefanović, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages and Applications, volume 41(10), pages 169--190, Oct. 2006.
    [16]
    S. M. Blackburn and K. 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, volume 43(6), pages 22--32, Tucson, AZ, 2008.
    [17]
    D. G. Bobrow and D. L. Murphy. Structure of a LISP system using two-level storage. Communications of the ACM, 10(3):155--159, Mar. 1967.
    [18]
    D. G. Bobrow and D. L. Murphy. A note on the efficiency of a LISP computation in a paged machine. Communications of the ACM, 11(8):558--560, Aug. 1968.
    [19]
    H.-J. Boehm and M. Weiser. Garbage collection in an uncooperative environment. Software: Practice and Experience, 18(9):807--820, Sept. 1988.
    [20]
    D. Buytaert, K. Venstermans, L. Eeckhout, and K. D. Bosschere. GCH: Hints for triggering garbage collections. In Transactions on High-Performance Embedded Architectures and Compilers I, pages 74--94. 2007.
    [21]
    F. Chen, S. Jiang, and X. Zhang. CLOCK-Pro: an effective improvement of the CLOCK replacement. In Proceedings of USENIX Annual Technical Conference, 2005.
    [22]
    C. J. Cheney. A non-recursive list compacting algorithm. Communications of the ACM, 13(11):677--678, Nov. 1970.
    [23]
    C. Ding, C. Zhang, X. Shen, and M. Ogihara. Gated memory control for memory monitoring, leak detection and garbage collection. In Proceedings of the ACM SIGPLAN Workshop on Memory System Performance, pages 62--67, Chicago, IL, June 2005.
    [24]
    L. Eeckhout, A. Georges, and K. D. Bosschere. How Java programs interact with virtual machines at the microarchitectural level. In Proceedings of the 18th ACM Conference on Object-Oriented Programming, Systems, Languages, & Applications, volume 38(11), pages 169--186, Anaheim, CA, Oct. 2003.
    [25]
    R. R. Fenichel and J. C. Yochelson. A Lisp garbage collector for virtual memory computer systems. Communications of the ACM, 12(11):611--612, Nov. 1969.
    [26]
    C. Grzegorczyk, S. Soman, C. Krintz, and R. Wolski. Isla vista heap sizing: Using feedback to avoid paging. In Proceedings of the International Symposium on Code Generation and Optimization, pages 325--340, 2007.
    [27]
    M. Hertz, Y. Feng, and E. D. Berger. Garbage collection without paging. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2005), volume 40(7), pages 143--153, Chicago, IL, June 2005.
    [28]
    M. Hertz, Y. Feng, and E. D. Berger. Garbage collection without paging. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 143--153, Chicago, IL, June 2005.
    [29]
    X. Huang, S. M. Blackburn, K. S. McKinley, J. E. B. Moss, Z. Wang, and P. Cheng. The garbage collection advantage: Improving program locality. In Proceedings of the 19th ACM Conference on Object-Oriented Programming, Systems, Languages, & Applications, volume 39(11), pages 69--80, Vancouver, BC, Canada, Oct. 2004.
    [30]
    S. Jiang and X. Zhang. TPF: a dynamic system thrashing protection facility. Software Practice and Experience, 32(3), 2002.
    [31]
    H. Lieberman and C. E. Hewitt. A real-time garbage collector based on the lifetimes of objects. Communications of the ACM, 26(6):419--429, June 1983.
    [32]
    Mono Project. Mono. Available at http://www.mono-project.com/.
    [33]
    D. A. Moon. Garbage collection in a large LISP system. In Conference Record of the 1994 ACM Symposium on Lisp and Functional Programming, pages 235--245, Austin, TX, Aug. 1994.
    [34]
    J. H. Reppy. A high-performance garbage collector for Standard ML. Technical memorandum, AT&T Bell Laboratories, Murray Hill, NJ, Dec. 1993.
    [35]
    N. Sachindran and J. E. B. Moss. Mark-Copy: Fast copying GC with less space overhead. In Proceedings of the 18th ACM Conference on Object-Oriented Programming, Systems, Languages, & Applications, volume 38(11), pages 326--343, Anaheim, CA, Oct. 2003.
    [36]
    Y. Smaragdakis, S. Kaplan, and P. Wilson. The EELRU adaptive replacement algorithm. Perform. Eval., 53(2):93--123, 2003.
    [37]
    S. Soman, C. Krintz, and D. F. Bacon. Dynamic selection of application-specific garbage collectors. In Proceedings of the International Symposium on Memory Management, pages 49--60, Vancouver, BC, Canada, June 2004.
    [38]
    Standard Performance Evaluation Corporation. Specjbb2000. Available at http://www.spec.org/jbb2000/docs/userguide.html.
    [39]
    D. Ungar. Generation scavenging: A non-disruptive high performance storage reclamation algorithm. In Proceedings of the First ASM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments, volume 19(9), pages 157--167, Apr. 1984.
    [40]
    M. Wegiel and C. Krintz. XMem: type-safe, transparent, shared memory for cross-runtime communication and coordination. In Proceedings of the 2008 ACM SIGPLAN Conference on Programming Language Design and Implementation, volume 43(6), pages 327--338, Tucson, AZ, June 2008.
    [41]
    M. Wegiel and C. Krintz. Dynamic prediction of collection yield for managed runtimes. In Proceeding of the 14th international conference on Architectural support for programming languages and operating systems, volume 44(3), pages 289--300, Washington, DC, Mar. 2009.
    [42]
    Wikipedia. procfs -- Wikipedia, the free encyclopedia, 2011. {Online; accessed 1-Feb-2011}.
    [43]
    F. Xian, W. Seisa-an, and H. Jiang. MicroPhase: An approach to proactively invoking garbage collection for improved performance. In Proceedings of the 22nd ACM Conference on Object-Oriented Programming, Systems, Languages, & Applications, volume 42(10), pages 77--96, Montreal, Quebec, Canada, Oct. 2007.
    [44]
    T. Yang, E. D. Berger, S. F. Kaplan, and J. E. B. Moss. CRAMM: virtual memory support for garbage-collected applications. In Proceedings of the Symposium on Operating Systems Design and Implementation, pages 103--116, Seattle, WA, Nov. 2006.
    [45]
    T. Yang, M. Hertz, E. D. Berger, S. F. Kaplan, and J. E. B. Moss. Automatic heap sizing: taking real memory into account. In Proceedings of the International Symposium on Memory Management, pages 61--72, Vancouver, BC, Canada, June 2004.
    [46]
    C. Zhang, K. Kelsey, X. Shen, C. Ding, M. Hertz, and M. Ogihara. Program-level adaptive memory management. In Proceedings of the International Symposium on Memory Management, pages 174--183, Ottawa, ON, Canada, June 2006.
    [47]
    Y. Zhang, A. Bestavros, M. Guirguis, I. Matta, and R. West. Friendly virtual machines: leveraging a feedback-control model for application adaptation. In Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments, pages 2--12, Chicago, IL, June 2005.
    [48]
    P. Zhou, V. Pandey, J. Sundaresan, A. Raghuraman, Y. Zhou, and S. Kumar. Dynamic tracking of page miss ratio curve for memory management. In Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems, volume 39(11), pages 177--188, Boston, MA, Oct. 2004.

    Cited By

    View all
    • (2017)SmartGC: Online Memory Management Prediction for PaaS Cloud ModelsOn the Move to Meaningful Internet Systems. OTM 2017 Conferences10.1007/978-3-319-69462-7_25(370-388)Online publication date: 20-Oct-2017
    • (2016)JVM Configuration Management and Its Performance Impact for Big Data Applications2016 IEEE International Congress on Big Data (BigData Congress)10.1109/BigDataCongress.2016.64(410-417)Online publication date: Jun-2016
    • (2022)Optimal heap limits for reducing browser memory useProceedings of the ACM on Programming Languages10.1145/35633236:OOPSLA2(986-1006)Online publication date: 31-Oct-2022
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 46, Issue 11
    ISMM '11
    November 2011
    135 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2076022
    Issue’s Table of Contents
    • cover image ACM Conferences
      ISMM '11: Proceedings of the international symposium on Memory management
      June 2011
      148 pages
      ISBN:9781450302630
      DOI:10.1145/1993478
    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: 04 June 2011
    Published in SIGPLAN Volume 46, Issue 11

    Check for updates

    Author Tags

    1. multiprogramming
    2. paging
    3. poor richard's memory manager garbage collection
    4. throughput

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)8
    • Downloads (Last 6 weeks)2
    Reflects downloads up to 11 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2017)SmartGC: Online Memory Management Prediction for PaaS Cloud ModelsOn the Move to Meaningful Internet Systems. OTM 2017 Conferences10.1007/978-3-319-69462-7_25(370-388)Online publication date: 20-Oct-2017
    • (2016)JVM Configuration Management and Its Performance Impact for Big Data Applications2016 IEEE International Congress on Big Data (BigData Congress)10.1109/BigDataCongress.2016.64(410-417)Online publication date: Jun-2016
    • (2022)Optimal heap limits for reducing browser memory useProceedings of the ACM on Programming Languages10.1145/35633236:OOPSLA2(986-1006)Online publication date: 31-Oct-2022
    • (2020)Efficient nursery sizing for managed languages on multi-core processors with shared cachesProceedings of the 18th ACM/IEEE International Symposium on Code Generation and Optimization10.1145/3368826.3377908(1-15)Online publication date: 22-Feb-2020
    • (2018)Dynamic vertical memory scalability for OpenJDK cloud applicationsACM SIGPLAN Notices10.1145/3299706.321056753:5(59-70)Online publication date: 18-Jun-2018
    • (2018)Dynamic vertical memory scalability for OpenJDK cloud applicationsProceedings of the 2018 ACM SIGPLAN International Symposium on Memory Management10.1145/3210563.3210567(59-70)Online publication date: 18-Jun-2018
    • (2017)SmartGC: Online Memory Management Prediction for PaaS Cloud ModelsOn the Move to Meaningful Internet Systems. OTM 2017 Conferences10.1007/978-3-319-69462-7_25(370-388)Online publication date: 20-Oct-2017
    • (2015)The judgment of forseti: economic utility for dynamic heap sizing of multiple runtimesACM SIGPLAN Notices10.1145/2887746.275418050:11(143-156)Online publication date: 14-Jun-2015
    • (2015)Speculative Memory CheckpointingProceedings of the 16th Annual Middleware Conference10.1145/2814576.2814802(197-209)Online publication date: 24-Nov-2015
    • (2015)The judgment of forseti: economic utility for dynamic heap sizing of multiple runtimesProceedings of the 2015 International Symposium on Memory Management10.1145/2754169.2754180(143-156)Online publication date: 14-Jun-2015
    • Show More Cited By

    View Options

    Get Access

    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