A locality-improving dynamic memory allocator

In general-purpose applications, most data is dynamically allocated. The memory manager therefore plays a crucial role in application performance by determining the spatial locality of heap objects. Previous general-purpose allocators have focused on reducing fragmentation, while most locality-improving allocators have either focused on improving the locality of the allocator (not the application), or required programmer hints or profiling to guide object placement. We present a high-performance memory allocator called Vam that transparently improves both cache-level and page-level locality of the application while achieving low fragmentation. Over a range of large-footprint benchmarks, Vam improves application performance by an average of 4%-8% versus the Lea (Linux) and FreeBSD allocators. When memory is scarce, Vam improves application performance by up to 2X compared to the FreeBSD allocator, and by over 10X compared to the Lea allocator.

[1]  Kathryn S. McKinley,et al.  Reconsidering custom memory allocation , 2002, OOPSLA '02.

[2]  Hans-Juergen Boehm,et al.  Garbage collection in an uncooperative environment , 1988, Softw. Pract. Exp..

[3]  Dirk Grunwald,et al.  Improving the cache locality of memory allocation , 1993, PLDI '93.

[4]  Kathryn S. McKinley,et al.  Composing high-performance memory allocators , 2001, PLDI '01.

[5]  Paul R. Wilson,et al.  Dynamic Storage Allocation: A Survey and Critical Review , 1995, IWMM.

[6]  François Bodin,et al.  Improving cache behavior of dynamically allocated data structures , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

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

[8]  Yannis Smaragdakis,et al.  Flexible reference trace reduction for VM simulations , 2003, TOMC.

[9]  James R. Larus,et al.  Cache-conscious structure layout , 1999, PLDI '99.

[10]  R WilsonPaul,et al.  The memory fragmentation problem , 1998 .

[11]  Matthew L. Seidl,et al.  Segregating heap objects by reference behavior and lifetime , 1998, ASPLOS VIII.

[12]  Poul-Henning Kamp malloc(3) Revisited , 1998, USENIX Annual Technical Conference.

[13]  Ping Wang,et al.  OSF/1 Virtual Memory Improvements , 1991, USENIX MACH Symposium.

[14]  Paul R. Wilson,et al.  Non-compacting memory allocation and real-time garbage collection , 1997 .

[15]  Matthew L. Seidl,et al.  Implementing heap‐object behavior prediction efficiently and effectively , 2001, Softw. Pract. Exp..

[16]  Paul R. Wilson,et al.  The memory fragmentation problem: solved? , 1998, ISMM '98.

[17]  Benjamin G. Zorn,et al.  Implemting heap-object behavior prediction efficiently and effectively , 2001 .

[18]  V. T. Rajan,et al.  A real-time garbage collector with low overhead and consistent utilization , 2003, POPL '03.

[19]  V. T. Rajan,et al.  Controlling fragmentation and space consumption in the metronome, a real-time garbage collector for Java , 2003, LCTES '03.

[20]  Kathryn S. McKinley,et al.  Hoard: a scalable memory allocator for multithreaded applications , 2000, SIGP.

[21]  David R. Hanson A portable storage management system for the icon programming language , 1980, Softw. Pract. Exp..

[22]  Benjamin G. Zorn,et al.  Using lifetime predictors to improve memory allocation performance , 1993, PLDI '93.