Tavaly javasolták a több-kernel-es architektúrát a Linux kernel-höz, hogy egy fizikai gépen több, egymástól független kernel-példány fusson párhuzamosan. A „multikernel” Linuxot futtató minden egyes kernel dedikált CPU-magokon dolgozik, miközben megosztják az alattuk lévő hardver erőforrásait. A ma megjelent Linux 7.0-mk2-ben már benne vannak a több-kernel-es működéshez szükséges kernel javítások. Az elmúlt évben több multikernel javítócsomagot is közzétettek, most pedig ezeket kényelmesen összegyűjtve, a Linux 7.0 kernel fára illesztve adták ki, hogy könnyebb legyen a tesztelés és az értékelés. Ezt tekintik a multikernel Linux fa első nyilvános kiadásának.
A Multikernel Technologies fejlesztője, Cong Wang így foglalja össze:
„Az mklinux lehetővé teszi, hogy egy gép több, egymástól független Linux kernelt futtasson egyszerre, közvetlenül a hardveren, hypervisor nélkül. A gazda kernel birtokol egy CPU-, memória- és PCI-eszköz készletet, ezt a készletet felosztja példányokra, majd minden példányba egy-egy új kernel-t indít a kexec_file_load() segítségével. Minden indított kernel natívan fut a saját CPU-in, a saját fizikai memóriáján és a saját eszközein. Nincs emuláció és nincs csapdázás; csak az osztozik, amin úgy döntesz, hogy osztozni akarsz.
A példányokat egy, a /sys/fs/multikernel/ alá írt device tree írja le, a device tree overlay-k pedig újraindítás nélkül mozgatják a memóriát, a CPU-kat és az eszközöket a készlet és a futó példányok között. Egy példány leállítható, az erőforrásai visszavehetők, majd egy másik kernel-val újraindítható.
A virtuális gépekhez képest nincs VM exit útvonal, nincs másodszintű lapozótábla és nincs device model. A konténerekhez képest pedig a példányok nem osztoznak egy közös kernel-n, így egy kernel-ban fellépő zárolás, kernelpánik vagy exploit nem ér el egy másikat.”
A mai nyilvános kiadás benchmarkokat is tartalmaz, amelyek a KVM-hez képest mutatják be a teljesítményt egy 2 magos/vCPU-s összevetésben:
Benchmark Multikernel KVM guest Ratio Null syscall 0.070 us 0.099 us 1.42x read() 0.099 us 0.124 us 1.26x write() 0.082 us 0.114 us 1.39x Signal handler install 0.123 us 0.159 us 1.29x Signal handler catch 0.770 us 0.881 us 1.14x Context switch (2 procs) 1.37 us 3.42 us 2.50x Pipe latency 3.24 us 7.06 us 2.18x AF_UNIX stream latency 4.81 us 7.48 us 1.55x fork + exit 115 us 123 us 1.07x
Készült néhány mérés egy 24 magos konfiguráción is, ahol az látszik, hogy két kernel párhuzamos futtatása előnyt jelent egyetlen kernelhez képest:
Test 1 kernel 2 kernels Ratio unlink1 300K/s 780K/s 2.60x rename1 792K/s 1.69M/s 2.14x stat2 9.42M/s 19.8M/s 2.10x open3 3.42M/s 7.41M/s 2.17x open1 9.6M/s 19.3M/s 2.02x pread4 ~5.2M/s ~10.1M/s 1.94x mmap1 9.9M/s 12.2M/s 1.23x tcp_conn1 1.81M/s 2.10M/s 1.16x getppid1 268.2M/s 267.1M/s 1.00x (control) futex4 135.5M/s 134.9M/s 1.00x (control) poll2 26.7M/s 26.5M/s 0.99x (control)
További részletek olvashatók a mai bejelentésben a Linux kernel levelezőlistán. Egyelőre nem világos, hogy a multikernel támogatás mikor és hogyan kerülhet be a mainline Linux kernel-be; ha be is kerül, valószínűleg még jó ideig várni kell rá.

