Metis: a Smart Memory Allocator Using Historical Reclamation Information.

Shijie Xu,Qi Guo,Gerhard W. Dueck,David Bremner,Yang Wang
DOI: https://doi.org/10.1145/2843915.2843920
2015-01-01
Abstract:Dynamic memory management has received extensive attention in the last decade. Reducing memory fragmentation is a major design consideration to achieve efficient memory management. However, for some loop intensive applications (e.g., Apache HTTP and Ngnix), state-of-the-art dynamic memory allocators are not capable of reducing fragmentation efficiently due to repeatedly allocations and deallocations of objects with varying size. To address this problem, we propose a smart memory allocator, called Metis, designed for loop intensive applications. In Metis, a program's runtime is divided into two phases: profiling phase and activation phase. For the former, Metis builds a model to group historical allocation instructions, the objects created which are interconnected and likely to be reclaimed together during the same Garbage Collection (GC) cycle. For the latter, a region group (a contiguous piece of memory that can be reclaimed as a whole) is created to serve allocation instructions from one instruction group in the model. Our experiment with extended SPECjvm2008 traces shows that 79% of true fragmentation in the global heap can be reduced and a larger fraction of false fragmentation in region groups.
What problem does this paper attempt to address?