Multikernel, vynikající nástroj pro spouštění více jader bez virtualizace

Klíčové body:
  • Vícejádrový Linux umožňuje současné spouštění nezávislých jader na holém železu.
  • Je založen na jádře Linuxu 7.0, používá CONFIG_MULTIKERNEL a aktuálně podporuje architekturu x86_64.
  • Eliminuje režijní náklady virtualizace (hypervizory KVM) a dosahuje 2,5krát rychlejšího přepínání kontextu.
  • Na rozdíl od kontejnerů instance nesdílejí jádro, což zabraňuje selháním nebo zranitelnostem, které by ovlivnily celý server.
  • Použijte nástroj Kerf spolu s moduly Lazy CMA a DAXFS k dynamické správě zdrojů a spouštění imagí Dockeru.

Vícejádrový Linux

Loni jsme zde na blogu diskutovali o návrhu od ByteDance (tvůrce TikToku) na utilitu s názvem Parker (PARTITIONED KERnel), experimentální technologii , která umožňuje současný běh více linuxových jader. A nyní, o něco více než rok a půl později, byl vydán nový veřejný nástroj z projektu s názvem „Multikernel Linux (mklinux-v7.0-mk2)“.

Tato technologie představuje specializovanou variantu linuxového jádra, která umožňuje simultánní spouštění více nezávislých instancí jádra v rámci jednoho fyzického serveru. Díky provozu přímo na holém železe tato technologie zcela eliminuje potřebu hypervizorů nebo virtualizačních vrstev a každé instanci poskytuje přímý přístup k alokované paměti, CPU a zařízením.

ByteDance-Parker-multikernel
Související článek:
Parker: Nová technologie, která umožňuje spouštět více linuxových jader bez virtualizace

Projekt , založený na nedávno vydaném jádře Linuxu 7.0, umožňuje povolit tuto funkci pomocí konfiguračního parametru CONFIG_MULTIKERNEL . Pokud je tato možnost zakázána, výsledné jádro je naprosto stejné a chová se jako standardní Linux 7.0. V současné době tato první verze (v7.0-mk2) podporuje výhradně architektury x86_64 a je navržena tak, aby překlenula rozdíly ve výkonu a zabezpečení mezi tradiční virtualizací a izolací kontejnerů.

Izolace bez postihu za výkon

Největším problémem virtualizace je „daň“ z výkonu, kterou si účtují hypervizory. Naproti tomu vícejádrový Linux eliminuje přechody při ukončení virtuálního stroje , překlad paměti druhé úrovně a režii generovanou modely zařízení.

Podle údajů o výkonu zveřejněných po testování na procesorech Xeon Gold 5418Y (Sapphire Rapids) vykazuje vícejádrový systém dramatický nárůst rychlosti provádění ve srovnání s hostovanými KVM systémy. Například přepínání kontextu mezi procesy je 2,5krát rychlejší, latence kanálu je snížena o více než polovinu (2,18x) a základní systémová volání, jako jsou operace čtení a zápisu, získají o více než 25 % rychlejší dobu odezvy.

Ve srovnání s tradičními kontejnery Docker nabízí Multikernel vynikající ochranu , protože kontejnery sdílejí stejné hostitelské jádro, takže zranitelnost na úrovni jádra, panika nebo saturace interních zámků ovlivňují všechny klienty. V ekosystému Multikernel má každé prostředí své vlastní nezávislé jádro ; to znamená, že pokud jedna instance utrpí kritickou chybu, ostatní pokračují v provozu beze změny, což zaručuje izolované prostředí ideální pro provozování všeho od webových serverů až po intenzivní úlohy trénování umělé inteligence (strojové učení) na stejném hardwaru.

Dynamické přiřazení a orchestrace s Kerfem

Vícejádrový Linux pracuje s hostitelským jádrem , které spravuje velký fond zdrojů (CPU, RAM a PCI zařízení). Jádro využívá existující stromovou strukturu zařízení (přístupnou v /sys/fs/multikernel/) a spouští „podřízená jádra“ prostřednictvím nativního subsystému kexec_file_load(). Díky možnostem hotplug v Linuxu lze tyto zdroje dynamicky přesouvat mezi instancemi bez nutnosti restartu serveru, což zajišťuje předvídatelný a v reálném čase nastavitelný výkon.

Pro orchestraci tohoto ekosystému vývojáři představili nástroj příkazového řádku Kerf . Tento nástroj spravuje celý životní cyklus instancí a spoléhá se na doplňkové moduly s otevřeným zdrojovým kódem. Jedním z nich je Lazy CMA, který alokuje souvislou fyzickou paměť za běhu bez nutnosti jakékoli konfigurace před spuštěním.

Druhým pilířem je DAXFS, modul, který umožňuje instancím sdílet souborové systémy přímo v paměti; díky tomu může Kerf spustit podřízené jádro přímo uvnitř obrazu kontejneru Docker, a to s využitím jeho souborového systému bez nutnosti emulačních vrstev a s využitím deskriptorů v paměti pro síťové propojení bez kopírování dat.

Za zmínku stojí, že tato první verze prošla intenzivními testy stability v rámci 5úrovňové stránkovací architektury a aktivního KASLR, což dokazuje, že obnova zdrojů je zcela bezpečná i v případě pádu podřízeného jádra.

Tím, že umožňuje rozdělení úloh, které kolidovaly kvůli systémovým zámkům (například velký počet procesů odpojení nebo přejmenování ve stejné mezipaměti), mezi samostatná jádra zarovnaná s fyzickými sockety procesorů, demonstruje Multikernel Linux schopnost škálovat se za hranice výkonu dané jedním monolitickým jádrem a otevírá novou éru v konsolidaci serverů a vysoce výkonném cloud computingu.

A konečně, pokud máte zájem dozvědět se více, podrobnosti naleznete na následujícím odkazu.


Přidat jako preferovaný zdroj v Googlu