Multikernel, et utmerket verktøy for å kjøre flere kjerner uten virtualisering

Viktige punkter:
  • Multikernel Linux tillater å kjøre uavhengige kjerner samtidig på bare metal.
  • Basert på Linux 7.0-kjernen, bruker den CONFIG_MULTIKERNEL og støtter for øyeblikket x86_64-arkitekturen.
  • Det eliminerer overheaden ved virtualisering (KVM-hypervisorer), og oppnår kontekstbytter 2,5 ganger raskere.
  • I motsetning til containere deler ikke instanser kjernen, noe som forhindrer at feil eller sårbarheter påvirker hele serveren.
  • Bruk Kerf-verktøyet sammen med Lazy CMA- og DAXFS-modulene for å administrere ressurser dynamisk og starte Docker-avbildninger.

Flerkjernet Linux

I fjor diskuterte vi her på bloggen et forslag fra ByteDance (skaperen av TikTok) for et verktøy kalt Parker (PARTitioned KERnel), en eksperimentell teknologi som lar flere Linux-kjerner kjøre samtidig. Og nå, litt over halvannet år senere, har et nytt offentlig verktøy fra prosjektet, «Multikernel Linux (mklinux-v7.0-mk2)», blitt utgitt.

Denne utviklingen introduserer en spesialisert variant av Linux-kjernen som muliggjør samtidig kjøring av flere uavhengige kjerneinstanser innenfor en enkelt fysisk server. Ved å operere direkte på bare metal, eliminerer denne teknologien behovet for hypervisorer eller virtualiseringslag, og gir hver instans direkte tilgang til tildelt minne, CPU og enheter.

ByteDance-Parker-multikernel
Relatert artikkel:
Parker: Den nye teknologien som tillater kjøring av flere Linux-kjerner uten virtualisering

Basert på den nylig utgitte Linux 7.0-kjernen, tillater prosjektet aktivering av denne funksjonen via konfigurasjonsparameteren CONFIG_MULTIKERNEL . Hvis dette alternativet er deaktivert, er den resulterende kjernen nøyaktig den samme og oppfører seg som standard Linux 7.0. For øyeblikket støtter denne første versjonen (v7.0-mk2) utelukkende x86_64-arkitekturer og er designet for å bygge bro over ytelses- og sikkerhetsgapet mellom tradisjonell virtualisering og containerisolering.

Isolasjon uten prestasjonsstraff

Det største problemet med virtualisering er ytelses"skatten" som hypervisorer krever. Multikernel Linux eliminerer derimot overganger ved avslutning av virtuelle maskiner , oversettelse av minne på andre nivå og overhead generert av enhetsmodeller.

I følge ytelsesdata publisert etter testing på Xeon Gold 5418Y-prosessorer (Sapphire Rapids), viser multikernel-systemet en dramatisk økning i utførelseshastighet sammenlignet med KVM-gjester. For eksempel er kontekstbytte mellom prosesser 2,5 ganger raskere, pipe-latensen reduseres med mer enn halvparten (2,18x), og basissystemkall, som lese- og skriveoperasjoner, får mer enn 25 % bedre responstid.

Sammenlignet med tradisjonelle Docker-containere tilbyr Multikernel overlegen beskyttelse fordi, siden containerne deler samme vertskjerne, påvirker en sårbarhet på kjernenivå, panikk eller intern låsmetning alle leietakere. I Multikernel-økosystemet har hvert miljø sin egen uavhengige kjerne ; det vil si at hvis én instans opplever en kritisk feil, fortsetter de andre å operere upåvirket, noe som garanterer et isolert miljø som er ideelt for å kjøre alt fra webservere til intensive AI-opplæringsarbeidsbelastninger (maskinlæring) på samme maskinvare.

Dynamisk tildeling og orkestrering med Kerf

Multikernel Linux opererer ved hjelp av en vertskjerne som administrerer et stort utvalg av ressurser (CPU-er, RAM og PCI-enheter). Ved å bruke den eksisterende enhetstrestrukturen (tilgjengelig på /sys/fs/multikernel/), deler kjernen dette utvalget og starter "barnekjerner" via det innebygde kexec_file_load()-undersystemet. Gjennom Linux' hotplug-funksjoner kan disse ressursene flyttes dynamisk mellom instanser uten at serveren må startes på nytt, noe som sikrer forutsigbar og justerbar ytelse i sanntid.

For å orkestrere dette økosystemet har utviklerne introdusert kommandolinjeverktøyet Kerf . Dette verktøyet administrerer hele livssyklusen til instanser, og er avhengig av komplementære moduler med åpen kildekode. En av disse er Lazy CMA, som tildeler sammenhengende fysisk minne under kjøretid uten å kreve noen konfigurasjon før oppstart.

Den andre søylen er DAXFS, en modul som lar instanser dele filsystemer direkte i minnet. Takket være dette kan Kerf starte en barnekjerne direkte i et Docker-containerbilde, og dra nytte av filsystemet uten behov for emuleringslag og bruke minnebeskrivelser for nettverkstilkobling uten datakopiering.

Det er verdt å nevne at denne første utgivelsen har bestått intensive stabilitetstester under 5-nivås paging-arkitekturer og aktiv KASLR, noe som viser at ressursgjenoppretting er helt trygt selv når en underordnet kjerne krasjer.

Ved å tillate at arbeidsbelastninger som kolliderte på grunn av systemlåser (som et stort antall prosesser som kobles fra eller gir nytt navn på samme hurtigbuffer) deles over separate kjerner justert med de fysiske prosessorsokklene, demonstrerer Multikernel Linux evnen til å skalere utover ytelsesbarrieren som pålegges av en enkelt monolittisk kjerne, og åpner en ny æra innen serverkonsolidering og høyytelses skytjenester.

Til slutt, hvis du er interessert i å lære mer, kan du finne detaljene på følgende lenke.


Legg til som foretrukket kilde i Google