Popcorn: a replicated-kernel OS based on LinuxAntonio Barbalace (firstname.lastname@example.org)
In the recent years, the number of CPUs per platform has continuously increased, and this has affected almost all segments of the computer market. Because of this trend, many researchers have investigated the problem of how to scale operating systems better on high core count machines. While some projects have used Linux as a vehicle for this investigation, others have proposed new OS designs. Amongst them, the replicated-kernel OS model, has gained some traction.
Although recent research has demonstrated Linux's scalability on multicores to some extent, and Linux is already running on high core count machines (e.g., SGI Altix) and accelerators (e.g. Intel XeonPhi), it is important to understand whether Linux can be used as the basic block of a replicated-kernel OS. (In the past, Linux has been used as the building block for cluster OSes such as MOSIX and Kerringhed.) A replicated-kernel does not necessarily have a networked connotation, but it was initially conceived for high core count machines. Understanding the advantages of this OS architecture on Linux -- not just from a scalability standpoint -- is important to better exploit emerging increasingly parallel hardware.
In this paper, we present Popcorn: a replicated-kernel OS based on Linux. Popcorn boots multiple Linux kernel instances on multicore hardware, one per core or group of cores, with kernel-private memory. The kernel instances directly communicate, kernel-to-kernel, in order to maintain a common OS state that is (partially) replicated over every individual kernel instance. Hardware resources (i.e., disks, network interface cards) are fully shared amongst the kernels. The kernel instances coordinate to maintain the abstraction of a single operating system (e.g., single filesystem namespaces), enabling traditional applications to run transparently over the kernels. To allow application threads to (transparently) execute over the kernels making up the OS, inter-kernel process and thread migration are introduced.
We describe Popcorn's architecture and implementation details, in particular, the modifications that we introduced in the Linux source code to add the features required by the replicated-kernel OS design. We also present preliminary results obtained with the implementation. It turns out that a replicated-kernel OS based on Linux aggregates the flexibility of a traditional single-image OS with the isolation and consolidation features of a virtual machine, but on bare metal, while being potentially more scalable on high core count machines. Popcorn is open-source and publicly available at popcornlinux.org.