Table of Contents
Fetching ...

A methodology to automatically optimize dynamic memory managers applying grammatical evolution

José L. Risco-Martín, J. Manuel Colmenar, J. Ignacio Hidalgo, Juan Lanchares, Josefa Díaz

TL;DR

This paper presents a novel way to automatically generate custom dynamic memory managers optimizing both performance and memory usage of the target application, and achieves important improvements when its results are compared to five different general-purposeynamic memory managers.

Abstract

Modern consumer devices must execute multimedia applications that exhibit high resource utilization. In order to efficiently execute these applications, the dynamic memory subsystem needs to be optimized. This complex task can be tackled in two complementary ways: optimizing the application source code or designing custom dynamic memory management mechanisms. Currently, the first approach has been well established, and several automatic methodologies have been proposed. Regarding the second approach, software engineers often write custom dynamic memory managers from scratch, which is a difficult and error-prone work. This paper presents a novel way to automatically generate custom dynamic memory managers optimizing both performance and memory usage of the target application. The design space is pruned using grammatical evolution converging to the best dynamic memory manager implementation for the target application. Our methodology achieves important improvements (62.55\% and 30.62\% better on average in performance and memory usage, respectively) when its results are compared to five different general-purpose dynamic memory managers.

A methodology to automatically optimize dynamic memory managers applying grammatical evolution

TL;DR

This paper presents a novel way to automatically generate custom dynamic memory managers optimizing both performance and memory usage of the target application, and achieves important improvements when its results are compared to five different general-purposeynamic memory managers.

Abstract

Modern consumer devices must execute multimedia applications that exhibit high resource utilization. In order to efficiently execute these applications, the dynamic memory subsystem needs to be optimized. This complex task can be tackled in two complementary ways: optimizing the application source code or designing custom dynamic memory management mechanisms. Currently, the first approach has been well established, and several automatic methodologies have been proposed. Regarding the second approach, software engineers often write custom dynamic memory managers from scratch, which is a difficult and error-prone work. This paper presents a novel way to automatically generate custom dynamic memory managers optimizing both performance and memory usage of the target application. The design space is pruned using grammatical evolution converging to the best dynamic memory manager implementation for the target application. Our methodology achieves important improvements (62.55\% and 30.62\% better on average in performance and memory usage, respectively) when its results are compared to five different general-purpose dynamic memory managers.
Paper Structure (21 sections, 1 equation, 10 figures, 10 tables)

This paper contains 21 sections, 1 equation, 10 figures, 10 tables.

Figures (10)

  • Figure 1: DMMs optimization flow. In the first phase, we generate an initial profiling of the de/allocation pattern. In the second phase, we automatically analyze the profiling report to generate the final grammar. Finally, in the third phase an exploration of the design space of DMMs implementation is performed using GE.
  • Figure 2: Classification of memory allocators.
  • Figure 3: Grammar file generated with the DealII profiling report. More than 200 block sizes have been omitted for simplicity. The only differences between grammar files generated for different benchmarks are both the Size and MaxSize non-terminals.
  • Figure 4: A GE individual's genome.
  • Figure 5: Global fitness $F$, execution time $\frac{T}{T_\mathrm{KNG}}$ and memory usage $\frac{M}{M_\mathrm{LEA}}$ for the six benchmarks managed by six DMMs.
  • ...and 5 more figures