CRAMM: virtual memory support for garbage-collected applications

Existing virtual memory systems usually work well with applications written in C and C++, but they do not provide adequate support for garbage-collected applications. The performance of garbage-collected applications is sensitive to heap size. Larger heaps reduce the frequency of garbage collections, making them run several times faster. However, if the heap is too large to fit in the available RAM, garbage collection can trigger thrashing. Existing Java virtual machines attempt to adapt their application heap sizes to fit in RAM, but suffer performance degradations of up to 94% when subjected to bursts of memory pressure. We present CRAMM (Cooperative Robust Automatic Memory Management), a system that solves these problems. CRAMM consists of two parts: (1) a new virtual memory system that collects detailed reference information for (2) an analytical model tailored to the underlying garbage collection algorithm. The CRAMM virtual memory system tracks recent reference behavior with low overhead. The CRAMM heap sizing model uses this information to compute a heap size that maximizes throughput while minimizing paging. We present extensive empirical results demonstrating CRAMM's ability to maintain high performance in the face of changing application and system load.

[1]  John L. Hennessy,et al.  WSCLOCK—a simple and effective algorithm for virtual memory management , 1981, SOSP.

[2]  David A. Padua,et al.  Calculating stack distances efficiently , 2002, MSP/ISMM.

[3]  Lyle A. McGeoch,et al.  Adaptive caching for demand prepaging , 2002, ISMM '02.

[4]  Emery D. Berger,et al.  Garbage collection without paging , 2005, PLDI '05.

[5]  Andrew W. Appel,et al.  Simple generational garbage collection and fast allocation , 1989, Softw. Pract. Exp..

[6]  Chang Li,et al.  Controlling garbage collection and heap growth to reduce the execution time of Java applications , 2006, ACM Trans. Program. Lang. Syst..

[7]  Stephen J. Fink,et al.  The Jalapeño virtual machine , 2000, IBM Syst. J..

[8]  Peter J. Denning,et al.  Working Sets Past and Present , 1980, IEEE Transactions on Software Engineering.

[9]  Frank Olken,et al.  Efficient methods for calculating the success function of fixed space replacement policies , 1983, Perform. Evaluation.

[10]  Perry Cheng,et al.  Oil and water? High performance garbage collection in Java with MMTk , 2004, Proceedings. 26th International Conference on Software Engineering.

[11]  Emery D. Berger,et al.  Automatic heap sizing: taking real memory into account , 2004, ISMM '04.

[12]  David A. Wood,et al.  Implementing stack simulation for highly-associative memories , 1991, SIGMETRICS '91.

[13]  Irving L. Traiger,et al.  Evaluation Techniques for Storage Hierarchies , 1970, IBM Syst. J..

[14]  L HennessyJohn,et al.  WSCLOCKa simple and effective algorithm for virtual memory management , 1981 .

[15]  Yannis Smaragdakis,et al.  The EELRU adaptive replacement algorithm , 2003, Perform. Evaluation.

[16]  Eric Cooper,et al.  Improving the performance of SML garbage collection using application-specific virtual memory management , 1992, LFP '92.

[17]  Amer Diwan,et al.  The DaCapo benchmarks: java benchmarking development and analysis , 2006, OOPSLA '06.

[18]  Vincent J. Kruskal,et al.  LRU Stack Processing , 1975, IBM J. Res. Dev..

[19]  Wesley W. Chu,et al.  The page fault frequency replacement algorithm , 1972, AFIPS '72 (Fall, part I).

[20]  Santosh G. Abraham,et al.  Efficient simulation of caches under optimal replacement with applications to miss characterization , 1993, SIGMETRICS '93.

[21]  Peter J. Denning,et al.  The working set model for program behavior , 1968, CACM.

[22]  Sanjeev Kumar,et al.  Dynamic tracking of page miss ratio curve for memory management , 2004, ASPLOS XI.

[23]  Domenico Ferrari,et al.  Two-Level Replacement Decisions in Paging Stores , 1983, IEEE Transactions on Computers.

[24]  Yutao Zhong,et al.  Predicting whole-program locality through reuse distance analysis , 2003, PLDI.

[25]  Jim Zelenka,et al.  Informed prefetching and caching , 1995, SOSP.

[26]  Yannis Smaragdakis,et al.  The Case for Compressed Caching in Virtual Memory Systems , 1999, USENIX Annual Technical Conference, General Track.

[27]  Andrew W. Appel,et al.  An advisor for flexible working sets , 1990, SIGMETRICS '90.

[28]  Henry G. Baker,et al.  The treadmill: real-time garbage collection without motion sickness , 1992, SIGP.