Multikernel, vynikajúci nástroj na spúšťanie viacerých jadier bez virtualizácie

Kľúčové body:
  • Viacjadrový Linux umožňuje súčasné spúšťanie nezávislých jadier na holom železe.
  • Je založený na jadre Linuxu 7.0, používa CONFIG_MULTIKERNEL a momentálne podporuje architektúru x86_64.
  • Eliminuje réžiu virtualizácie (hypervízory KVM) a dosahuje 2,5-krát rýchlejšie prepínanie kontextu.
  • Na rozdiel od kontajnerov inštancie nezdieľajú jadro, čím sa zabráni zlyhaniam alebo zraniteľnostiam ovplyvniť celý server.
  • Na dynamickú správu zdrojov a spúšťanie obrazov Dockeru použite nástroj Kerf spolu s modulmi Lazy CMA a DAXFS.

Viacjadrový Linux

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.

ByteDance-Parker-multikernel
Súvisiaci článok:
Parker: Nová technológia, ktorá umožňuje spúšťať viacero linuxových jadier bez virtualizácie

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.


Pridať ako preferovaný zdroj v Google