Förra året diskuterade vi här på bloggen ett förslag från ByteDance (skaparen av TikTok) för ett verktyg som heter Parker (PARTitioned KERnel), en experimentell teknik som tillåter flera Linuxkärnor att köras samtidigt. Och nu, drygt ett och ett halvt år senare, har ett nytt publikt verktyg från projektet, "Multikernel Linux (mklinux-v7.0-mk2)", släppts.
Denna utveckling introducerar en specialiserad variant av Linuxkärnan som möjliggör samtidig exekvering av flera oberoende kärninstanser inom en enda fysisk server. Genom att fungera direkt på bare metal eliminerar denna teknik helt behovet av hypervisorer eller virtualiseringslager, vilket ger varje instans direkt åtkomst till allokerat minne, CPU och enheter.
Baserat på den nyligen släppta Linux 7.0-kärnan, tillåter projektet att den här funktionen aktiveras via konfigurationsparametern CONFIG_MULTIKERNEL . Om det här alternativet är inaktiverat är den resulterande kärnan exakt densamma och beter sig som standard Linux 7.0. För närvarande stöder den här första versionen (v7.0-mk2) exklusivt x86_64-arkitekturer och är utformad för att överbrygga prestanda- och säkerhetsgapet mellan traditionell virtualisering och containerisolering.
Isolering utan prestationsstraff
Det största problemet med virtualisering är den prestandaskatt som hypervisorer tar ut. Multikernel Linux eliminerar däremot övergångar vid utgång av virtuella maskiner , översättning av minne på andra nivån och den overhead som genereras av enhetsmodeller.
Enligt prestandadata publicerade efter tester på Xeon Gold 5418Y-processorer (Sapphire Rapids) uppvisar multikärnsystemet en dramatisk ökning av exekveringshastigheten jämfört med KVM-gäster. Till exempel är kontextväxling mellan processer 2,5 gånger snabbare, pipe-latensen minskar med mer än hälften (2,18x) och bassystemanrop, såsom läs- och skrivoperationer, får mer än 25 % ökning av svarstiden.
Jämfört med traditionella Docker-containrar erbjuder Multikernel överlägset skydd eftersom containrarna delar samma värdkärna och en sårbarhet på kärnnivå, panik eller intern låsmättnad påverkar alla hyresgäster. I Multikernel-ekosystemet har varje miljö sin egen oberoende kärna ; det vill säga om en instans drabbas av ett kritiskt fel fortsätter de andra att fungera opåverkade, vilket garanterar en isolerad miljö som är idealisk för att köra allt från webbservrar till intensiva AI-utbildningsarbetsbelastningar (maskininlärning) på samma hårdvara.
Dynamisk tilldelning och orkestrering med Kerf
Multikernel Linux använder en värdkärna som hanterar en stor pool av resurser (processorer, RAM och PCI-enheter). Genom att använda den befintliga enhetsträdstrukturen (tillgänglig på /sys/fs/multikernel/) skapar kärnan denna pool och startar "barnkärnor" via det inbyggda delsystemet kexec_file_load(). Genom Linux hotplug-funktioner kan dessa resurser flyttas dynamiskt mellan instanser utan att servern behöver startas om, vilket säkerställer förutsägbar och realtidsjusterbar prestanda.
För att orkestrera detta ekosystem har utvecklarna introducerat kommandoradsverktyget Kerf . Detta verktyg hanterar hela livscykeln för instanser och förlitar sig på kompletterande moduler med öppen källkod. En av dessa är Lazy CMA, som allokerar sammanhängande fysiskt minne vid körning utan att kräva någon konfiguration före uppstart.
Den andra pelaren är DAXFS, en modul som tillåter instanser att dela filsystem direkt i minnet; tack vare detta kan Kerf starta en underkärna direkt inuti en Docker-containeravbildning, dra nytta av dess filsystem utan behov av emuleringslager och använda minnesdeskriptorer för nätverksanslutning utan datakopiering.
Det är värt att nämna att denna första utgåva har klarat intensiva stabilitetstester under 5-nivåers paging-arkitekturer och aktiv KASLR, vilket visar att resursåterställning är helt säker även när en underordnad kärna kraschar.
Genom att tillåta arbetsbelastningar som kolliderat på grund av systemlås (som ett stort antal avkopplings- eller namnbytesprocesser på samma cache) att delas upp över separata kärnor som är anpassade till de fysiska processorsocklarna, visar Multikernel Linux möjligheten att skala bortom prestandabarriären som en enda monolitisk kärna innebär, vilket öppnar en ny era inom serverkonsolidering och högpresterande molntjänster.
Slutligen, om du är intresserad av att lära dig mer, kan du hitta detaljerna på följande länk.