Multikernel, un utilitar excelent pentru rularea mai multor kerneluri fără virtualizare

Puncte cheie:
  • Linux multikernel permite rularea simultană a kernelurilor independente pe bare metal.
  • Bazat pe kernelul Linux 7.0, folosește CONFIG_MULTIKERNEL și suportă în prezent arhitectura x86_64.
  • Elimină costurile suplimentare ale virtualizării (hipervizoare KVM), realizând schimbări de context de 2,5 ori mai rapide.
  • Spre deosebire de containere, instanțele nu partajează kernelul, prevenind ca erorile sau vulnerabilitățile să afecteze întregul server.
  • Folosește instrumentul Kerf împreună cu modulele Lazy CMA și DAXFS pentru a gestiona dinamic resursele și a porni imagini Docker.

Linux multikernel

Anul trecut am discutat aici pe blog o propunere a ByteDance (creatorul TikTok) pentru un utilitar numit Parker (PARTitioned KERnel), o tehnologie experimentală ce permite rularea simultană a mai multor kerneluri Linux. Iar acum, puțin peste un an și jumătate mai târziu, a fost lansat un nou utilitar public din cadrul proiectului, „Multikernel Linux (mklinux-v7.0-mk2)”.

Această dezvoltare introduce o variantă specializată a kernelului Linux care permite executarea simultană a mai multor instanțe independente de kernel pe un singur server fizic. Prin operarea directă pe serverul bare metal, această tehnologie elimină complet necesitatea hipervizorilor sau a straturilor de virtualizare, acordând fiecărei instanțe acces direct la memoria, procesorul și dispozitivele alocate.

ByteDance-Parker-multikernel
Articol asociat:
Parker: Noua tehnologie care permite rularea mai multor kerneluri Linux fără virtualizare

Bazat pe kernelul Linux 7.0 lansat recent, proiectul permite activarea acestei funcții prin intermediul parametrului de configurare CONFIG_MULTIKERNEL . Dacă această opțiune este dezactivată, kernelul rezultat este exact același și se comportă ca Linux 7.0 standard. În prezent, această primă versiune (v7.0-mk2) acceptă exclusiv arhitecturi x86_64 și este concepută pentru a reduce decalajul de performanță și securitate dintre virtualizarea tradițională și izolarea containerelor.

Izolare fără penalizări de performanță

Cea mai mare problemă a virtualizării este „taxa” de performanță percepută de hipervizori. În schimb, Linux cu kernel multiplu elimină tranzițiile de ieșire din mașinile virtuale , traducerea memoriei de nivel secund și costurile suplimentare generate de modelele de dispozitive.

Conform datelor de performanță publicate după testarea procesoarelor Xeon Gold 5418Y (Sapphire Rapids), sistemul multikernel demonstrează o creștere dramatică a vitezei de execuție în comparație cu sistemele KVM. De exemplu, schimbarea contextului între procese este de 2,5 ori mai rapidă, latența pipe-urilor este redusă cu mai mult de jumătate (2,18x), iar apelurile de sistem de bază, cum ar fi operațiunile de citire și scriere, câștigă peste 25% în timpul de răspuns.

Comparativ cu containerele Docker tradiționale, Multikernel oferă o protecție superioară deoarece, din moment ce containerele partajează același kernel gazdă, o vulnerabilitate la nivel de kernel, o panică sau o saturație de blocare internă afectează toate entitatile găzduite. În ecosistemul Multikernel, fiecare mediu are propriul kernel independent ; adică, dacă o instanță suferă o eroare critică, celelalte continuă să funcționeze neafectate, garantând un mediu izolat ideal pentru rularea a tot felul de sarcini, de la servere web la sarcini de lucru intensive de antrenament AI (machine learning) pe același hardware.

Atribuire și orchestrare dinamică cu Kerf

Linux multikernel funcționează folosind un kernel gazdă care gestionează o multitudine de resurse (procesoare, RAM și dispozitive PCI). Utilizând structura arborescentă a dispozitivelor existentă (accesibilă la /sys/fs/multikernel/), kernelul definește această multitudine și lansează „nuclee copil” prin intermediul subsistemului nativ kexec_file_load(). Prin capacitățile hotplug ale Linux, aceste resurse pot fi mutate dinamic între instanțe fără a fi necesară o repornire a serverului, asigurând performanțe previzibile și ajustabile în timp real.

Pentru a orchestra acest ecosistem, dezvoltatorii au introdus instrumentul de linie de comandă Kerf . Acest utilitar gestionează întregul ciclu de viață al instanțelor, bazându-se pe module open-source complementare. Unul dintre acestea este Lazy CMA, care alocă memorie fizică contiguă la momentul execuției, fără a necesita nicio configurare pre-pornire.

Celălalt pilon este DAXFS, un modul care permite instanțelor să partajeze sisteme de fișiere direct în memorie; datorită acestui fapt, Kerf poate porni un kernel copil direct în interiorul unei imagini de container Docker, profitând de sistemul său de fișiere fără a fi nevoie de straturi de emulare și utilizând descriptori în memorie pentru interconectarea rețelei fără copierea datelor.

Merită menționat faptul că această primă versiune a trecut teste intensive de stabilitate sub arhitecturi de paginare pe 5 niveluri și KASLR activ, demonstrând că recuperarea resurselor este complet sigură chiar și atunci când un kernel copil se blochează.

Permițând ca sarcinile de lucru care au intrat în coliziune din cauza blocărilor de sistem (cum ar fi un număr mare de procese de deconectare sau redenumire pe aceeași memorie cache) să fie împărțite în kernel-uri separate aliniate cu socket-urile fizice ale procesorului, Multikernel Linux demonstrează capacitatea de a scala dincolo de bariera de performanță impusă de un singur kernel monolitic, deschizând o nouă eră în consolidarea serverelor și cloud computing de înaltă performanță.

În final, dacă sunteți interesați să aflați mai multe, puteți găsi detalii la linkul următor.


Adăugați ca sursă preferată în Google