Unikernels allow applications to be deployed in a highly optimized manner with numerous use cases for the cloud, such as function-as-a-service. An application running in a unikernel does not have to incur the overhead of context switches, the entire software stack has a smaller size, and the deployment is easier in comparison to conventional kernels. However, unikernels have never been fully adopted due to a number of roadblocks; for example, the lack of standardized implementations and maintainability issues. This project explores how the Linux code base can be used to build a new unikernel and solve these problems.
Unikernels are showing increasing promise as a new operating system model for cloud applications that enables deep per-application optimization, with one of the leading efforts being the EbbRT unikernel from Jonathan Appavoo’s group in computer science. A major concern about the unikernel model is that all of today’s unikernels are reliant on almost untested software, throwing away the value of the battle tested Linux code base and requiring a fundamentally new community, resulting in huge maintainability challenges to a company that wants to support them. Forking the Linux source code to create a unikernel is also not acceptable, since the internal interfaces of Linux are continuously changing, and it would be a maintainability nightmare.
This project attempts to solve these problems by exploring a number of research questions which will have a major impact on open source. In particular:
- Can we rapidly create a set of changes to Linux to create a unikernel that can be accepted by the upstream community?
- Can the unikernel functionality co-exist in the same source code tree as regular Linux?
- How much of the EbbRT advantages for per-application optimization can be integrated into such a project?
Collaboration with Red Hat
In discussions with Red Hat, it was clear that our visions for future of unikernels coincided, and it made perfect sense to have a collaboration in this area. Since this project is based on Linux kernel, it is open source by default so that the community can contribute and maintain the project. Working with Red Hat allows mentorship by experienced members of the community who have worked on numerous projects that are now part of the upstream code. The team is leveraging the expertise provided by Red Hat to create a unikernel with minimal changes to the Linux code base.
- Ali Raza
- Ulrich Drepper
- Larry Woodman
- Richard Jones
- Orran Krieger
- Jonathan Appavoo
- EbbRT team, including James Cadden and Tommy Unger
- Ali Raza, Parul Sohal, James Cadden, Jonathan Appavoo, Ulrich Drepper, Richard Jones, Orran Krieger, Renato Mancuso, and Larry Woodman. 2019. Unikernels: The Next Stage of Linux’s Dominance. In Workshop on Hot Topics in Operating Systems (HotOS ’19), May 13–15, 2019, Bertinoro, Italy. ACM, New York, NY, USA, 7 pages. https://doi.org/10.1145/3317550.3321445