Multikernel, egy kiváló segédprogram több kernel virtualizáció nélküli futtatásához

Főbb pontok:
  • A többmagos Linux lehetővé teszi a független kernelek egyidejű futtatását csupasz fémen.
  • A Linux 7.0 kernelre épül, CONFIG_MULTIKERNEL-t használ, és jelenleg az x86_64 architektúrát támogatja.
  • Kiküszöböli a virtualizáció (KVM hipervizorok) terhelését, és 2,5-szer gyorsabb kontextusváltást tesz lehetővé.
  • A konténerekkel ellentétben a példányok nem osztják meg a kernelt, így megakadályozzák, hogy a hibák vagy sebezhetőségek a teljes szervert érintsék.
  • A Kerf eszközt a Lazy CMA és a DAXFS modulokkal együtt használhatja az erőforrások dinamikus kezeléséhez és a Docker-lemezképek indításához.

Többmagos Linux

Tavaly itt a blogon megvitattuk a ByteDance (a TikTok készítője) javaslatát egy Parker (PARTITIONED KERnel) nevű segédprogramra , amely egy kísérleti technológia , amely lehetővé teszi több Linux kernel egyidejű futtatását. És most, kicsit több mint másfél évvel később, megjelent a projekt új nyilvános segédprogramja, a "Multikernel Linux (mklinux-v7.0-mk2)".

Ez a fejlesztés a Linux kernel egy specializált változatát vezeti be, amely lehetővé teszi több független kernel példány egyidejű végrehajtását egyetlen fizikai szerveren belül. Azáltal, hogy közvetlenül a csupasz fémen működik, ez a technológia teljesen kiküszöböli a hipervizorok vagy virtualizációs rétegek szükségességét, és minden példány közvetlen hozzáférést biztosít a lefoglalt memóriához, CPU-hoz és eszközökhöz.

ByteDance-Parker-multikernel
Kapcsolódó cikk:
Parker: Az új technológia, amely lehetővé teszi több Linux kernel futtatását virtualizáció nélkül

A nemrég kiadott Linux 7.0 kernel alapján a projekt lehetővé teszi ennek a funkciónak az engedélyezését a CONFIG_MULTIKERNEL konfigurációs paraméteren keresztül . Ha ez az opció le van tiltva, az eredményül kapott kernel pontosan ugyanaz lesz, és úgy viselkedik, mint a standard Linux 7.0. Jelenleg ez az első verzió (v7.0-mk2) kizárólag az x86_64 architektúrákat támogatja , és úgy tervezték, hogy áthidalja a teljesítménybeli és biztonsági rést a hagyományos virtualizáció és a konténer izoláció között.

Izoláció teljesítménybeli hátrány nélkül

A virtualizáció legnagyobb problémája a hipervizorok által felszámított teljesítmény"adó". Ezzel szemben a Multikernel Linux kiküszöböli a virtuális gép kilépési átmeneteit , a második szintű memóriafordítást és az eszközmodellek által generált többletterhelést.

A Xeon Gold 5418Y processzorokon (Sapphire Rapids) végzett tesztelés után közzétett teljesítményadatok szerint a többmagos rendszer drámai végrehajtási sebességnövekedést mutat a KVM vendégrendszerekhez képest. Például a folyamatok közötti kontextusváltás 2,5-szer gyorsabb, a pipe késleltetése több mint a felére (2,18-szor) csökken, és az alap rendszerhívások, például az olvasási és írási műveletek válaszideje több mint 25%-kal javul.

A hagyományos Docker konténerekkel összehasonlítva a Multikernel kiváló védelmet nyújt , mivel a konténerek ugyanazt a gazdagépet használják, így a kernel szintű sebezhetőség, pánik vagy belső zárolási telítettség minden bérlőt érint. A Multikernel ökoszisztémában minden környezetnek megvan a saját független kernele ; azaz ha az egyik példány kritikus hibát szenved, a többi érintetlenül tovább működik, így egy elszigetelt környezetet biztosítva, amely ideális minden futtatásához a webszerverektől kezdve az intenzív mesterséges intelligencia betanítási munkaterhelésekig (gépi tanulás) ugyanazon a hardveren.

Dinamikus hozzárendelés és vezénylés Kerf segítségével

A Multikernel Linux egy gazdagép-kernellel működik , amely nagyszámú erőforrást (CPU-kat, RAM-ot és PCI-eszközöket) kezel . A meglévő eszközfa-struktúrát (elérhető a /sys/fs/multikernel/ címen) felhasználva a kernel feldarabolja ezt a készletet, és elindítja a „gyermek kernelt” a natív kexec_file_load() alrendszeren keresztül. A Linux hotplug képességeinek köszönhetően ezek az erőforrások dinamikusan áthelyezhetők a példányok között anélkül, hogy a szervert újra kellene indítani, biztosítva a kiszámítható és valós időben állítható teljesítményt.

Ennek az ökoszisztémának a összehangolására a fejlesztők bevezették a Kerf parancssori eszközt . Ez a segédprogram a példányok teljes életciklusát kezeli, kiegészítő nyílt forráskódú modulokra támaszkodva. Ezek egyike a Lazy CMA, amely futásidejű, összefüggő fizikai memóriát foglal le anélkül, hogy bármilyen rendszerindítás előtti konfigurációt igényelne.

A másik pillér a DAXFS, egy modul, amely lehetővé teszi a példányok számára a fájlrendszerek közvetlen megosztását a memóriában; ennek köszönhetően a Kerf közvetlenül egy Docker konténerképen belül indíthat egy gyermek kernelt, kihasználva annak fájlrendszerét emulációs rétegek nélkül, és memórián belüli leírókat használva a hálózati összekapcsoláshoz adatmásolás nélkül.

Érdemes megemlíteni, hogy ez az első kiadás intenzív stabilitási teszteken esett át 5-szintű lapozó architektúrák és aktív KASLR alatt, ami azt bizonyítja, hogy az erőforrás-helyreállítás teljesen biztonságos még akkor is, ha egy gyermek kernel összeomlik.

Azzal, hogy lehetővé teszi a rendszerzárak (például ugyanazon a gyorsítótáron lévő nagyszámú leválasztási vagy átnevezési folyamat) miatt ütköző munkaterhelések felosztását a fizikai processzorfoglalatokhoz igazított különálló kernelek között, a Multikernel Linux demonstrálja az egyetlen monolitikus kernel által előírt teljesítménykorláton túli skálázhatóságot, új korszakot nyitva a szerverkonszolidációban és a nagy teljesítményű felhőalapú számítástechnikában.

Végül, ha további részletekre vagy kíváncsi, a következő linken megtalálod a részleteket.


Hozzáadás előnyben részesített forrásként a Google-ben