Multikernel, een uitstekend hulpprogramma voor het uitvoeren van meerdere kernels zonder virtualisatie.

Belangrijkste punten:
  • Multikernel Linux maakt het mogelijk om onafhankelijke kernels gelijktijdig op de hardware uit te voeren.
  • Gebaseerd op de Linux 7.0-kernel, maakt het gebruik van CONFIG_MULTIKERNEL en ondersteunt het momenteel de x86_64-architectuur.
  • Het elimineert de overhead van virtualisatie (KVM-hypervisors), waardoor contextwisselingen 2,5 keer sneller verlopen.
  • In tegenstelling tot containers delen instanties de kernel niet, waardoor storingen of kwetsbaarheden de hele server niet kunnen beïnvloeden.
  • Gebruik de Kerf-tool in combinatie met de Lazy CMA- en DAXFS-modules om resources dynamisch te beheren en Docker-images op te starten.

Multikernel Linux

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.

ByteDance-Parker-multikernel
Gerelateerd artikel:
Parker: De nieuwe technologie die het mogelijk maakt om meerdere Linux-kernels te draaien zonder virtualisatie

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.


Voeg dit toe als voorkeursbron in Google.