Simulation of High-Performance Memory Allocators

Current general-purpose memory allocators do not provide sufficient speed or flexibility for modern high-performance applications. To optimize metrics like performance, memory usage and energy consumption, software engineers often write custom allocators from scratch, which is a difficult and error-prone process. In this paper, we present a flexible and efficient simulator to study Dynamic Memory Managers (DMMs), a composition of one or more memory allocators. This novel approach allows programmers to simulate custom and general DMMs, which can be composed without incurring any additional runtime overhead or additional programming cost. We show that this infrastructure simplifies DMM construction, mainly because the target application does not need to be compiled every time a new DMM must be evaluated. Within a search procedure, the system designer can choose the "best" allocator by simulation for a particular target application. In our evaluation, we show that our scheme will deliver better performance, less memory usage and less energy consumption than single memory allocators.

[1]  Riccardo Poli,et al.  A Field Guide to Genetic Programming , 2008 .

[2]  Michael T. Goodrich,et al.  Data structures and algorithms in C++ , 2003 .

[3]  Wei Dong,et al.  SDMA: A Simulation-Driven Dynamic Memory Allocator for Wireless Sensor Networks , 2008, 2008 Second International Conference on Sensor Technologies and Applications (sensorcomm 2008).

[4]  A. Brabazon,et al.  An Introduction to Evolutionary Computation in Finance , 2008, IEEE Computational Intelligence Magazine.

[5]  Emery D. Berger,et al.  A locality-improving dynamic memory allocator , 2005, MSP '05.

[6]  Francky Catthoor,et al.  Systematic dynamic memory management design methodology for reduced memory footprint , 2006, TODE.

[7]  A BarrettDavid,et al.  Using lifetime predictors to improve memory allocation performance , 1993 .

[8]  Dirk Grunwald,et al.  Customalloc: Efficient synthesized memory allocators , 1993, Softw. Pract. Exp..

[9]  José Ignacio Hidalgo,et al.  Improving reliability of embedded systems through dynamic memory manager optimization using grammatical evolution , 2010, GECCO '10.

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

[11]  Michael Sipser,et al.  Introduction to the Theory of Computation , 1996, SIGA.

[12]  Luca Benini,et al.  Efficient system-level prototyping of power-aware dynamic memory managers for embedded systems , 2006, Integr..

[13]  J. Morris Chang,et al.  The design and analysis of a quantitative simulator for dynamic memory management , 2004, J. Syst. Softw..

[14]  Alfred V. Aho,et al.  Data Structures and Algorithms , 1983 .

[15]  Benjamin G. Zorn,et al.  The measured cost of conservative garbage collection , 1993, Softw. Pract. Exp..

[16]  Mahmut T. Kandemir,et al.  Evaluating Integrated Hardware-Software Optimizations Using a Unified Energy Estimation Framework , 2003, IEEE Trans. Computers.

[17]  Trishul M. Chilimbi Efficient representations and abstractions for quantifying and exploiting data reference locality , 2001, PLDI '01.

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

[19]  Lawrence Rauchwerger,et al.  Two memory allocators that use hints to improve locality , 2009, ISMM '09.

[20]  J. Morris Chang,et al.  A tunable hybrid memory allocator , 2006, J. Syst. Softw..

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

[22]  José Ignacio Hidalgo,et al.  Optimization of dynamic memory managers for embedded systems using grammatical evolution , 2009, GECCO '09.

[23]  Harish Patil,et al.  Pin: building customized program analysis tools with dynamic instrumentation , 2005, PLDI '05.

[24]  Scott Meyers,et al.  More Effective C++: 35 New Ways to Improve Your Programs and Designs , 1995 .

[25]  Patricia Balbastre Betoret,et al.  A constant-time dynamic storage allocator for real-time systems , 2008, Real-Time Systems.

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

[27]  Dirk Grunwald,et al.  Quantifying Behavioral Differences Between C and C++ Programs , 1994 .

[28]  ScienceDirect Microprocessors and microsystems , 1978 .