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.
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.