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ćuje istovremeni rad više Linux kernela. A sada, nešto više od godinu i pol 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ćuje istovremeno izvršavanje više neovisnih instanci kernela unutar jednog fizičkog poslužitelja. Radeći izravno na golom metalu, ova tehnologija potpuno eliminira potrebu za hipervizorima ili slojevima virtualizacije, dajući svakoj instanci izravan pristup dodijeljenoj memoriji, CPU-u i uređajima.
Na temelju nedavno objavljene Linux 7.0 kernela, projekt omogućuje omogućavanje ove značajke 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 za premošćivanje jaza u performansama i sigurnosti između tradicionalne virtualizacije i izolacije kontejnera.
Izolacija bez kazne za performanse
Najveći problem virtualizacije je "porez" na performanse koji naplaćuju hipervizori. Nasuprot tome, Multikernel Linux eliminira prijelaze izlaza virtualnih strojeva , prevođenje memorije druge razine i opterećenje generirano modelima uređaja.
Prema podacima o performansama objavljenim nakon testiranja na Xeon Gold 5418Y procesorima (Sapphire Rapids), višejezgreni sustav pokazuje dramatično povećanje brzine izvršavanja u usporedbi s KVM gostima. Na primjer, prebacivanje konteksta između procesa je 2,5 puta brže, latencija cijevi je smanjena za više od polovice (2,18x), a osnovni sistemski pozivi, poput operacija čitanja i pisanja, dobivaju više od 25% u vremenu odziva.
U usporedbi s tradicionalnim Docker kontejnerima, Multikernel nudi vrhunsku zaštitu jer, budući da kontejneri dijele istu jezgru hosta, ranjivost na razini jezgre, panika ili zasićenje unutarnjim zaključavanjem utječu na sve zakupce. U ekosustavu Multikernel, svako okruženje ima svoju neovisnu jezgru ; to jest, ako jedna instanca pretrpi kritičan kvar, ostale nastavljaju raditi nepromijenjene, jamčeći izolirano okruženje idealno za pokretanje svega, od web poslužitelja do intenzivnih opterećenja za obuku umjetne inteligencije (strojno učenje) na istom hardveru.
Dinamičko dodjeljivanje i orkestracija s Kerfom
Višejezgreni Linux radi pomoću jezgre glavnog računala koja upravlja velikim skupom resursa (CPU-ovi, RAM i PCI uređaji). Koristeći postojeću strukturu stabla uređaja (dostupnu na /sys/fs/multikernel/), jezgra stvara ovaj skup i pokreće "podjezgre" putem izvornog podsustava kexec_file_load(). Kroz Linuxove mogućnosti hotplug-a, ovi se resursi mogu dinamički premještati između instanci bez potrebe za ponovnim pokretanjem poslužitelja, osiguravajući predvidljive i prilagodljive performanse u stvarnom vremenu.
Kako bi orkestrirali ovaj ekosustav, programeri su uveli alat naredbenog retka 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 susjednu fizičku memoriju tijekom izvođenja bez potrebe za ikakvom konfiguracijom prije pokretanja.
Drugi stup je DAXFS, modul koji omogućuje instancama dijeljenje datotečnih sustava izravno u memoriji; zahvaljujući tome, Kerf može pokrenuti podređenu jezgru izravno unutar slike Docker kontejnera, iskorištavajući njegov datotečni sustav 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 5-razinskim arhitekturama straničenja i aktivnim KASLR-om, pokazujući da je oporavak resursa potpuno siguran čak i kada se podređena jezgra sruši.
Omogućavanjem da se radna opterećenja koja su se kolidirala zbog zaključavanja sustava (poput velikog broja procesa odvezivanja ili preimenovanja u istoj predmemoriji) podijele na odvojene jezgre usklađene s fizičkim utorima procesora, Multikernel Linux pokazuje sposobnost skaliranja izvan barijere performansi koju nameće jedna monolitna jezgra, otvarajući novo doba u konsolidaciji poslužitelja i visokoučinkovitom računalstvu u oblaku.
Konačno, ako ste zainteresirani saznati više, detalje možete pronaći na sljedećoj poveznici.