Vorig jaar bespraken we hier op de blog een voorstel van ByteDance (de maker van TikTok) voor een hulpprogramma genaamd Parker (PARTitioned KERnel), een experimentele technologie waarmee meerdere Linux-kernels tegelijkertijd kunnen draaien. En nu, iets meer dan anderhalf jaar later, is er een nieuw publiek beschikbaar hulpprogramma van het project, "Multikernel Linux (mklinux-v7.0-mk2)".
Deze ontwikkeling introduceert een gespecialiseerde variant van de Linux-kernel die de gelijktijdige uitvoering van meerdere onafhankelijke kernel-instanties binnen één fysieke server mogelijk maakt. Doordat deze technologie direct op de hardware werkt, is er geen behoefte meer aan hypervisors of virtualisatielagen. Elke instantie krijgt daardoor directe toegang tot het toegewezen geheugen, de CPU en de apparaten.
Gebaseerd op de recent uitgebrachte Linux 7.0-kernel, maakt het project het mogelijk om deze functie in te schakelen via de configuratieparameter CONFIG_MULTIKERNEL . Als deze optie is uitgeschakeld, is de resulterende kernel exact hetzelfde en gedraagt ​​zich als standaard Linux 7.0. Momenteel ondersteunt deze eerste versie (v7.0-mk2) uitsluitend x86_64-architecturen en is ontworpen om de prestatie- en beveiligingskloof tussen traditionele virtualisatie en containerisolatie te overbruggen.
Isolatie zonder prestatieverlies
Het grootste probleem met virtualisatie is de prestatiebelasting die hypervisors met zich meebrengen. Multikernel Linux daarentegen elimineert overgangen tussen virtuele machines , vertalingen van het geheugen op het tweede niveau en de overhead die door apparaatmodellen wordt gegenereerd.
Volgens prestatiegegevens die zijn gepubliceerd na tests op Xeon Gold 5418Y-processors (Sapphire Rapids), laat het multikernelsysteem een ​​aanzienlijke toename in uitvoeringssnelheid zien in vergelijking met KVM-gasten. Zo is het wisselen tussen processen 2,5 keer sneller, is de latentie van de pijplijn met meer dan de helft verminderd (2,18x) en is de responstijd van basissysteemoproepen, zoals lees- en schrijfbewerkingen, met meer dan 25% verbeterd.
Vergeleken met traditionele Docker-containers biedt Multikernel superieure bescherming , omdat de containers dezelfde hostkernel delen. Hierdoor heeft een kwetsbaarheid op kernelniveau, een kernelpanic of een interne lock-saturatie gevolgen voor alle tenants. In het Multikernel-ecosysteem heeft elke omgeving zijn eigen onafhankelijke kernel . Dit betekent dat als één instantie een kritieke storing ondervindt, de andere ongestoord blijven functioneren. Dit garandeert een geïsoleerde omgeving die ideaal is voor het draaien van uiteenlopende taken, van webservers tot intensieve AI-trainingsworkloads (machine learning), op dezelfde hardware.
Dynamische toewijzing en orkestratie met Kerf
Multikernel Linux werkt met een hostkernel die een grote pool aan resources beheert (CPU's, RAM en PCI-apparaten). De kernel maakt gebruik van de bestaande device tree-structuur (toegankelijk via /sys/fs/multikernel/) om deze pool te verdelen en "childkernels" te starten via het native kexec_file_load() subsysteem. Dankzij de hotplug-functionaliteit van Linux kunnen deze resources dynamisch tussen instanties worden verplaatst zonder dat de server opnieuw hoeft te worden opgestart, wat zorgt voor voorspelbare en realtime aanpasbare prestaties.
Om dit ecosysteem te beheren, hebben de ontwikkelaars de Kerf-commandoregeltool geïntroduceerd . Deze tool beheert de volledige levenscyclus van instanties en maakt daarbij gebruik van complementaire open-source modules. Een daarvan is Lazy CMA, die aaneengesloten fysiek geheugen toewijst tijdens de uitvoering zonder dat er voorafgaande configuratie nodig is.
De andere pijler is DAXFS, een module waarmee instanties bestandssystemen rechtstreeks in het geheugen kunnen delen; dankzij dit kan Kerf een child-kernel rechtstreeks in een Docker-containerimage opstarten, gebruikmakend van het bestandssysteem zonder dat emulatielagen nodig zijn en door in-memory descriptors te gebruiken voor netwerkverbindingen zonder gegevens te kopiëren.
Het is vermeldenswaard dat deze eerste release intensieve stabiliteitstests heeft doorstaan ​​onder 5-level paging-architecturen en actieve KASLR, waaruit blijkt dat het herstel van resources volledig veilig is, zelfs wanneer een child-kernel crasht.
Door workloads die botsen als gevolg van systeemvergrendelingen (zoals een groot aantal ontkoppelings- of hernoemingsprocessen op dezelfde cache) te verdelen over afzonderlijke kernels die zijn afgestemd op de fysieke processoraansluitingen, demonstreert Multikernel Linux het vermogen om de prestatielimiet van een enkele monolithische kernel te overstijgen. Dit luidt een nieuw tijdperk in voor serverconsolidatie en krachtige cloudcomputing.
Als u tot slot meer wilt weten, kunt u de details vinden via de volgende link.