Toward Specialization of Memory Management in Unikernels
- Typ:Bachelorarbeit
- Datum:03.06.2020
- Betreuung:
Prof. Dr. Frank Bellosa
Dr. Marc Rittinghaus
- Bearbeitung:Hugo Lefeuvre
- Links:PDF
-
Abstract
Unikernels are standalone, single-purpose appliances assembled from user-space source code at compile time. Unikernels achieve high performance, low memory footprint, and fast boot time with a small trusted computing base. These characteristics are obtained by specializing operating system components toward the application at build time. Amongst the classical system components, the dynamic memory allocator is known to have a crucial impact on performance and its specialization potential is well recognized in the literature. In particular, it is known that allocators typically trade performance for security or memory usage for performance, and no general-purpose allocator will behave perfectly in all situations. Despite of this, unikernels do not typically offer more than a single general-purpose memory allocator.
This thesis explores the idea of leveraging memory allocators as a specialization layer in unikernels. We analyze dynamic memory allocation in unikernels, and how it can be specialized. Following this, we design, implement, and evaluate allocator specialization in Unikraft, a unikernel framework. To this end, we port several general-purpose memory allocators to Unikraft and measure the performance of off-the-shelf applications across a wide range of scenarios and key performance indicators. By specializing the allocator, we reduce the boot time of Unikraft from 7.4 ms to less than 1.5 ms for an Nginx unikernel. We show that allocator specialization can improve performance and memory footprint at moderate cost, achieving speedups of up to 12% for Redis and 26% for SQLite and reducing the memory footprint by 22% for Redis and 50% for Nginx.
BibTex:
@bachelorthesis{lefeuvre20unikernels,
author = {Hugo Lefeuvre},
title = {Toward Specialization of Memory Management in Unikernels},
type = {Bachelor Thesis},
year = 2020,
month = jun # "03",
school = {Operating Systems Group, Karlsruhe Institute of Technology (KIT), Germany}
}