Minulý rok sme tu na blogu diskutovali o návrhu od ByteDance (tvorcu TikToku) na utilitu s názvom Parker (PARTITIONED KERnel), experimentálnu technológiu , ktorá umožňuje súčasný chod viacerých linuxových jadier. A teraz, o niečo viac ako rok a pol neskôr, bol vydaný nový verejný nástroj z projektu s názvom „Multikernel Linux (mklinux-v7.0-mk2)“.
Tento vývoj predstavuje špecializovaný variant jadra Linuxu, ktorý umožňuje simultánne spúšťanie viacerých nezávislých inštancií jadra v rámci jedného fyzického servera. Vďaka priamej prevádzke na holom stroji táto technológia úplne eliminuje potrebu hypervízorov alebo virtualizačných vrstiev a každej inštancii poskytuje priamy prístup k pridelenej pamäti, CPU a zariadeniam.
Na základe nedávno vydaného jadra Linuxu 7.0 projekt umožňuje povolenie tejto funkcie prostredníctvom konfiguračného parametra CONFIG_MULTIKERNEL . Ak je táto možnosť zakázaná, výsledné jadro je úplne rovnaké a správa sa ako štandardný Linux 7.0. V súčasnosti táto prvá verzia (v7.0-mk2) podporuje výhradne architektúry x86_64 a je navrhnutá tak, aby preklenula rozdiely vo výkone a bezpečnosti medzi tradičnou virtualizáciou a izoláciou kontajnerov.
Izolácia bez zníženia výkonu
Najväčším problémom virtualizácie je „daň“ z výkonu, ktorú si účtujú hypervízory. Naproti tomu viacjadrový Linux eliminuje prechody pri ukončení virtuálneho stroja , preklad pamäte druhej úrovne a réžiu generovanú modelmi zariadení.
Podľa údajov o výkone publikovaných po testovaní na procesoroch Xeon Gold 5418Y (Sapphire Rapids) vykazuje viacjadrový systém dramatický nárast rýchlosti vykonávania v porovnaní s hosťujúcimi systémami KVM. Napríklad prepínanie kontextu medzi procesmi je 2,5-krát rýchlejšie, latencia kanála je znížená o viac ako polovicu (2,18x) a základné systémové volania, ako sú operácie čítania a zápisu, získavajú o viac ako 25 % rýchlejší čas odozvy.
V porovnaní s tradičnými kontajnermi Docker ponúka Multikernel vynikajúcu ochranu , pretože kontajnery zdieľajú rovnaké hostiteľské jadro, zraniteľnosť na úrovni jadra, panika alebo saturácia interných zámkov ovplyvňujú všetkých používateľov. V ekosystéme Multikernel má každé prostredie svoje vlastné nezávislé jadro ; to znamená, že ak jedna inštancia utrpí kritickú poruchu, ostatné pokračujú v prevádzke bez vplyvu, čo zaručuje izolované prostredie ideálne na spustenie všetkého od webových serverov až po intenzívne tréningové úlohy umelej inteligencie (strojové učenie) na rovnakom hardvéri.
Dynamické priradenie a orchestrácia s funkciou Kerf
Viacjadrový Linux funguje s použitím hostiteľského jadra , ktoré spravuje veľký pool zdrojov (CPU, RAM a PCI zariadenia). Využíva existujúcu stromovú štruktúru zariadení (prístupnú na /sys/fs/multikernel/), jadro vytvorí tento pool a spustí „podradené jadrá“ prostredníctvom natívneho subsystému kexec_file_load(). Vďaka funkciám hotplug v Linuxe je možné tieto zdroje dynamicky presúvať medzi inštanciami bez nutnosti reštartu servera, čo zaisťuje predvídateľný a v reálnom čase nastaviteľný výkon.
Na zorganizovanie tohto ekosystému vývojári predstavili nástroj príkazového riadka Kerf . Tento nástroj spravuje celý životný cyklus inštancií a spolieha sa na doplnkové moduly s otvoreným zdrojovým kódom. Jedným z nich je Lazy CMA, ktorý alokuje súvislú fyzickú pamäť za behu bez nutnosti akejkoľvek konfigurácie pred spustením.
Druhým pilierom je DAXFS, modul, ktorý umožňuje inštanciám zdieľať súborové systémy priamo v pamäti; vďaka tomu môže Kerf spustiť podradené jadro priamo vo vnútri obrazu kontajnera Docker, pričom využíva jeho súborový systém bez potreby emulačných vrstiev a používa deskriptory v pamäti pre sieťové prepojenie bez kopírovania údajov.
Za zmienku stojí, že toto prvé vydanie prešlo intenzívnymi testami stability v 5-úrovňových stránkovacích architektúrach a aktívnom KASLR, čo dokazuje, že obnova zdrojov je úplne bezpečná aj v prípade pádu podradeného jadra.
Umožnením rozdelenia pracovných zaťažení, ktoré kolidovali kvôli systémovým zámkom (napríklad veľký počet procesov odpojenia alebo premenovania v tej istej vyrovnávacej pamäti), medzi samostatné jadrá zarovnané s fyzickými socketmi procesorov, Multikernel Linux demonštruje schopnosť škálovať sa za hranice výkonnostnej bariéry, ktorú predstavuje jedno monolitické jadro, a otvára tak novú éru v konsolidácii serverov a vysokovýkonných cloudových výpočtoch.
Na záver, ak máte záujem dozvedieť sa viac, podrobnosti nájdete na nasledujúcom odkaze.