It was just a few days ago that a multi-kernel architecture was proposed for the Linux kernel. Separate from that proposal from Multikernel Technologies, it turns out Bytedance has been working on their own similar solution called Parker. Today Bytedance lifted the lid on Parker as their solution for running multiple kernels simultaneously on the same hardware/system.
Bytedance’s Parker allows for multiple Linux kernels to run simultaneously on a single machine without relying on KVM or other virtualization. Parker leverages partitioning the CPU cores, memory, and devices for a partitioning-aware Linux kernel. Bytedance acknowledged in the proposal that its similar in some aspects to the recent Multikernel RFC but the design and implementation are comletely different.
Today’s Parker announcement further describes of their multiple kernel design approach:
“Each kernel instance can have the same image, but the initial kernel, or Boot Kernel, controls the hardware allocation and partition. All other kernels are secondary kernel, or Application Kernel, touch their own assigned CPU/Memory/IO devices.
The primary use case in mind for parker is on the machines with high core counts, where scalability concerns may arise. Once started, there is no communication between kernel instances. In other words, they share nothing thus improve scalability. Each kernel needs its own (PCIe) devices for IO, such as NVMe or NICs.
Another possible use case is for different kernel instances to have different performance tunings, CONFIG_ options, FDO/PGO according to the workload.”
It looks like several firms are now pursuing multi-kernel experiments for better dealing with today’s high core count systems. It will be interesting to see where this work leads and if any of the approaches end up evolving into a suitable design for the upstream Linux kernel.