Solo5: Building a Unikernel Base From Scratch
Unikernels offer an exciting opportunity to rethink kernel design choices and experiment with new low-level features that may affect the performance and security of applications in the cloud and ultimately change the way they are used. This talk is about my experience building Solo5, an open-source kernel library that runs directly on virtual hardware, at the lowest layer of a unikernel. The goal of Solo5 is to better understand the effect of the lowest layer of a unikernel on its behavior (e.g., performance), bring MirageOS to more hypervisors, and also provide a platform for further experimentation with unikernel architectures. Many of the most popular Unikernels (including MirageOS and ClickOS) rely on Xen Project's Mini-OS as a thin kernel library between the (para)virtual hardware and the rest of the unikernel. These unikernels are reported to have impressive performance, especially boot time (~20ms), which challenges traditional notions of the cost of virtualization. With Solo5, we first ask the question: what role does Mini-OS (or paravirtualization) play in achieving this performance? Like Mini-OS, Solo5 is a thin kernel library. Unlike Mini-OS, Solo5 runs on fully virtualized hardware rather than paravirtualized hardware. In particular, Solo5 runs on KVM/QEMU (or other x86_64 virtualization environments that expose virtio devices). It currently supports MirageOS unikernels and therefore can can be thought of as an alternative to Xen Project's Mini-OS that runs underneath OCaml in a typical MirageOS stack. Solo5 is very much a work in progress. I will describe some of the interesting directions going forward, show a demo of a MirageOS/Solo5 unikernel running on KVM/QEMU, and detail the steps for others to get involved and try it out!