Prošle godine smo ovdje na blogu raspravljali o prijedlogu ByteDancea (tvorca TikToka) za uslužni program pod nazivom Parker (PARTITIONED KERnel), eksperimentalnu tehnologiju koja omogućava istovremeno pokretanje više Linux kernela. A sada, nešto više od godinu i po kasnije, objavljen je novi javni uslužni program iz projekta, "Multikernel Linux (mklinux-v7.0-mk2)".
Ovaj razvoj predstavlja specijaliziranu varijantu Linux kernela koja omogućava istovremeno izvršavanje više nezavisnih instanci kernela unutar jednog fizičkog servera. Radeći direktno na golom metalu, ova tehnologija potpuno eliminira potrebu za hipervizorima ili slojevima virtualizacije, dajući svakoj instanci direktan pristup dodijeljenoj memoriji, CPU-u i uređajima.
Baziran na nedavno objavljenom Linux 7.0 kernelu, projekat omogućava omogućavanje ove funkcije putem konfiguracijskog parametra CONFIG_MULTIKERNEL . Ako je ova opcija onemogućena, rezultirajući kernel je potpuno isti i ponaša se kao standardni Linux 7.0. Trenutno, ova prva verzija (v7.0-mk2) isključivo podržava x86_64 arhitekture i dizajnirana je da premosti jaz u performansama i sigurnosti između tradicionalne virtualizacije i izolacije kontejnera.
Izolacija bez penala za performanse
Najveći problem virtualizacije je "porez" na performanse koji naplaćuju hipervizori. Nasuprot tome, Multikernel Linux eliminira tranzicije izlaza iz virtuelne mašine , prevođenje memorije drugog nivoa i opterećenje generirano modelima uređaja.
Prema podacima o performansama objavljenim nakon testiranja na Xeon Gold 5418Y procesorima (Sapphire Rapids), višejezgreni sistem pokazuje dramatično povećanje brzine izvršavanja u poređenju sa KVM gostima. Na primjer, prebacivanje konteksta između procesa je 2,5 puta brže, latencija protoka je smanjena za više od polovine (2,18x), a osnovni sistemski pozivi, kao što su operacije čitanja i pisanja, dobijaju više od 25% u vremenu odziva.
U poređenju sa tradicionalnim Docker kontejnerima, Multikernel nudi superiorniju zaštitu jer, budući da kontejneri dijele isti host kernel, ranjivost na nivou kernela, panika ili zasićenje internim zaključavanjem utiču na sve zakupce. U Multikernel ekosistemu, svako okruženje ima svoj nezavisni kernel ; to jest, ako jedna instanca pretrpi kritičan kvar, ostale nastavljaju da rade nepromijenjene, garantujući izolovano okruženje idealno za pokretanje svega, od web servera do intenzivnih opterećenja obuke vještačke inteligencije (mašinsko učenje) na istom hardveru.
Dinamičko dodjeljivanje i orkestracija s Kerfom
Višejezgreni Linux radi koristeći host kernel koji upravlja velikim skupom resursa (CPU-ovi, RAM i PCI uređaji). Koristeći postojeću strukturu stabla uređaja (dostupnu na /sys/fs/multikernel/), kernel reže ovaj skup i pokreće "podjezgre" putem izvornog kexec_file_load() podsistema. Kroz Linuxove mogućnosti hotplug-a, ovi resursi se mogu dinamički premještati između instanci bez potrebe za ponovnim pokretanjem servera, osiguravajući predvidljive i prilagodljive performanse u realnom vremenu.
Da bi orkestrirali ovaj ekosistem, programeri su uveli alat za komandnu liniju Kerf . Ovaj uslužni program upravlja cijelim životnim ciklusom instanci, oslanjajući se na komplementarne module otvorenog koda. Jedan od njih je Lazy CMA, koji dodjeljuje kontinuiranu fizičku memoriju za vrijeme izvođenja bez potrebe za bilo kakvom konfiguracijom prije pokretanja.
Drugi stub je DAXFS, modul koji omogućava instancama da dijele datotečne sisteme direktno u memoriji; zahvaljujući tome, Kerf može pokrenuti podređeni kernel direktno unutar slike Docker kontejnera, koristeći prednosti njegovog datotečnog sistema bez potrebe za slojevima emulacije i koristeći deskriptore u memoriji za mrežno povezivanje bez kopiranja podataka.
Vrijedi spomenuti da je ovo prvo izdanje prošlo intenzivne testove stabilnosti pod arhitekturama straničenja na 5 nivoa i aktivnim KASLR-om, pokazujući da je oporavak resursa potpuno siguran čak i kada se podređeni kernel sruši.
Omogućavanjem da se radna opterećenja koja su se kolidirala zbog sistemskih zaključavanja (kao što je veliki broj procesa odvezivanja ili preimenovanja na istoj keš memoriji) podijele na odvojene kernele usklađene sa fizičkim procesorskim socketima, Multikernel Linux demonstrira sposobnost skaliranja izvan barijere performansi koju nameće jedan monolitni kernel, otvarajući novu eru u konsolidaciji servera i visokoperformansnom računarstvu u oblaku.
Konačno, ako ste zainteresirani da saznate više, detalje možete pronaći na sljedećem linku.