Almost a year after the Multikernel project shared its Linux kernel code and submitted its first patches for review, the team has now made its Multikernel Linux tree publicly available for the first time. This release is built on Linux 7.0 and is labeled v7.0-mk2 in the project’s kernel tree. Currently, only x86_64 is officially supported.
If you haven’t heard of it, Multikernel is a new way of using Linux on big multi-core systems. Rather than one Linux kernel running everything, it lets several separate Linux kernels run side by side on the same hardware.
The main idea is simple. One Linux instance acts as the host and manages a pool of CPUs, memory, and PCI devices. It can split these resources into separate groups and start another Linux kernel in each group. Unlike virtual machines, these extra kernels don’t run on a hypervisor. Each one gets its own physical CPUs, memory, and devices, and runs right on the hardware.
Resources aren’t locked in place, either. The project says you can shut down instances, return their CPUs, memory, and devices to the host, and then start new instances with a different kernel if needed.

With this release, the project has also shared performance comparisons showing where its bare-metal approach can outperform traditional virtualization. In one set of lmbench tests, Multikernel was compared to a well-tuned KVM virtual machine. Both used the same kernel build, two CPU cores, and 1 GB of memory on a dual-socket Intel Xeon Gold 5418Y system.
The results showed almost the same memory latency and bandwidth, which makes sense given how efficient modern hardware virtualization is. The bigger differences showed up in tasks that need lots of transitions and CPU wakeups.
For example, the tests showed a two-process context switch took 1.37 microseconds with Multikernel, compared to 3.42 microseconds in the default KVM guest. Pipe latency was 3.24 microseconds versus 7.06, and Unix socket latency was 4.81 versus 7.48 microseconds.
However, the developers point out that these numbers don’t mean Multikernel is always several times faster than KVM. A lot of the difference comes from how idle virtual CPUs are managed. In the default KVM setup, waking an idle vCPU means leaving and re-entering the virtual machine. Multikernel, on the other hand, manages its physical CPU cores directly.
The downside is that these CPU cores look fully used to the host and use more power. The project measured about 19 extra watts in this setup. Giving the guest more control over CPU power management also helped latency, but still came with power and resource tradeoffs.
For this first public release, the developers say x86_64 has been tested the most. Support for other architectures may come later. The architecture-specific interfaces have already been separated with future ports in mind, but none are officially supported yet.
For additional details, see the announcement. You can find the Multikernel Linux source code on GitHub. The project also offers a getting-started guide for anyone who wants to try out the technology.
Image credits: Multikernel Project
