  This paper presents Unikernel Linux (UKL), a path toward integrating
unikernel optimization techniques in Linux, a general purpose operating system.
UKL adds a configuration option to Linux allowing for a single, optimized
process to link with the kernel directly, and run at supervisor privilege. This
UKL process does not require application source code modification, only a
re-link with our, slightly modified, Linux kernel and glibc. Unmodified
applications show modest performance gains out of the box, and developers can
further optimize applications for more significant gains (e.g. 26% throughput
improvement for Redis). UKL retains support for co-running multiple user level
processes capable of communicating with the UKL process using standard IPC. UKL
preserves Linux's battle-tested codebase, community, and ecosystem of tools,
applications, and hardware support. UKL runs both on bare-metal and virtual
servers and supports multi-core execution. The changes to the Linux kernel are
modest (1250 LOC).
