IncludeOS: A Minimal, Resource Efficient Unikernel for Cloud Services
📜 Abstract
The emergence of cloud computing as a ubiquitous platform for elastically scaling services has generated need and opportunity for new types of operating systems. A service that needs to be both elastic and resource efficient needs A) highly specialized components, and B) to run with minimal resource overhead. Classical general purpose operating systems designed for extensive hardware support are by design far from meeting these requirements. In this paper we present IncludeOS, a single tasking library operating system for cloud services, written from scratch in C++. Key features include: extremely small disk- and memory footprint, efficient asynchronous I/O, OS-library where only what your service needs gets included, and only one device driver by default (virtio). As a test case a bootable disk image consisting of a simple DNS server with OS included is shown to require only 158 kb of disk space and to require 5-20% less CPU-time, depending on hardware, compared to the same binary running on Linux.
✨ Summary
Paper summary
The paper introduces IncludeOS, a C++ library operating system designed to run a single cloud service directly on virtualized x86 hardware. Instead of booting a general-purpose operating system and then launching an application, IncludeOS links only the operating-system functionality required by the service into one bootable image. Its design emphasizes minimal resource usage, asynchronous I/O, compile-time composition, modular networking components, and support for the virtio device model. The system follows a “zero-overhead” principle: unused operating-system functionality should not be included in the resulting image.
The prototype evaluation used a DNS service. The resulting bootable image required approximately 158 KB of disk space and used 5–20% less CPU time than the same binary running on Linux, depending on the hardware configuration. The paper also reports substantially lower memory requirements than conventional virtual machines and an approximately 0.3-second boot time for a minimal IncludeOS instance. At publication time, the implementation was incomplete in areas including full TCP and IPv6 support, filesystems, 64-bit support, and multicore execution.
Influence and subsequent use
Subsequent work explicitly extended or evaluated IncludeOS. A 2017 paper developed multicore support for IncludeOS, building on its minimal event-driven architecture. The PHP2Uni project used IncludeOS as a target platform for compiling PHP applications into unikernels. Later research evaluated IncludeOS for firewall-based network functions and for function execution in serverless computing. Security research also used IncludeOS as a case study, identifying limitations in protections such as ASLR, W^X, stack canaries, and memory-integrity defenses. (researchgate.net)
The IncludeOS project continued as open-source software and documented support for cloud and virtualized environments, with later project materials reporting smaller images and faster boot times than those described in the original paper. The available evidence indicates influence primarily through continued research, prototyping, and evaluation of unikernel-based cloud and network services; the search did not establish broad commercial deployment attributable to this paper. (includeos.org)