Миналата година тук, в блога, обсъждахме предложение от ByteDance (създателят на TikTok) за помощна програма, наречена Parker (PARTITIONED KERnel), експериментална технология , която позволява едновременното изпълнение на множество Linux ядра. А сега, малко повече от година и половина по-късно, беше пусната нова публична помощна програма от проекта, „Multikernel Linux (mklinux-v7.0-mk2)“.
Тази разработка въвежда специализиран вариант на ядрото на Linux, който позволява едновременното изпълнение на множество независими екземпляри на ядрото в рамките на един физически сървър. Чрез работа директно върху „голото желязо“, тази технология напълно елиминира необходимостта от хипервизори или слоеве за виртуализация, предоставяйки на всеки екземпляр директен достъп до разпределената памет, процесор и устройства.
Базиран на наскоро издаденото ядро на Linux 7.0, проектът позволява активиране на тази функция чрез конфигурационния параметър CONFIG_MULTIKERNEL . Ако тази опция е деактивирана, полученото ядро е абсолютно същото и се държи като стандартния Linux 7.0. В момента тази първа версия (v7.0-mk2) поддържа изключително x86_64 архитектури и е проектирана да преодолее разликата в производителността и сигурността между традиционната виртуализация и изолацията на контейнери.
Изолация без наказание за изпълнение
Най -големият проблем с виртуализацията е „данъкът“ върху производителността, начисляван от хипервизорите. За разлика от това, Multikernel Linux елиминира преходите при излизане от виртуална машина , преобразуването на паметта от второ ниво и режийните разходи, генерирани от моделите на устройствата.
Според данни за производителността, публикувани след тестване на процесори Xeon Gold 5418Y (Sapphire Rapids), многоядрената система демонстрира драстично увеличение на скоростта на изпълнение в сравнение с KVM гост системи. Например, превключването на контекста между процесите е 2,5 пъти по-бързо, латентността на канала е намалена с повече от половината (2,18 пъти), а базовите системни извиквания, като операции за четене и запис, печелят повече от 25% във времето за реакция.
В сравнение с традиционните Docker контейнери, Multikernel предлага превъзходна защита , защото тъй като контейнерите споделят едно и също ядро на хоста, уязвимост на ниво ядро, паника или вътрешно заключване, пренасищане, засяга всички потребители. В екосистемата Multikernel всяка среда има свое собствено независимо ядро ; тоест, ако един екземпляр претърпи критична повреда, останалите продължават да работят незасегнати, гарантирайки изолирана среда, идеална за изпълнение на всичко - от уеб сървъри до интензивни натоварвания за обучение на изкуствен интелект (машинно обучение) на един и същ хардуер.
Динамично присвояване и оркестрация с Kerf
Многоядреният Linux работи с хост ядро , което управлява голям пул от ресурси (процесори, RAM и PCI устройства). Използвайки съществуващата дървовидна структура на устройствата (достъпна в /sys/fs/multikernel/), ядрото разделя този пул и стартира „дъщерни ядра“ чрез вградената подсистема kexec_file_load(). Чрез възможностите за hotplug на Linux, тези ресурси могат да бъдат динамично премествани между инстанции, без да е необходимо рестартиране на сървъра, осигурявайки предвидима и регулируема производителност в реално време.
За да оркестрират тази екосистема, разработчиците са въвели инструмента за команден ред Kerf . Тази помощна програма управлява целия жизнен цикъл на инстанциите, разчитайки на допълнителни модули с отворен код. Един от тях е Lazy CMA, който разпределя съседна физическа памет по време на изпълнение, без да изисква никаква конфигурация преди зареждане.
Другият стълб е DAXFS, модул, който позволява на инстанциите да споделят файлови системи директно в паметта; благодарение на това, Kerf може да стартира дъщерно ядро директно в изображение на Docker контейнер, възползвайки се от неговата файлова система без нужда от емулационни слоеве и използвайки дескриптори в паметта за мрежово свързване без копиране на данни.
Заслужава да се отбележи, че тази първа версия е преминала интензивни тестове за стабилност при 5-степенни архитектури на пейджинг и активен KASLR, демонстрирайки, че възстановяването на ресурси е напълно безопасно, дори когато дъщерно ядро се срине.
Като позволява на работните натоварвания, които са се сблъсквали поради системни заключвания (като например голям брой процеси за премахване на връзки или преименуване в един и същ кеш), да бъдат разделени между отделни ядра, подравнени с физическите сокети на процесора, Multikernel Linux демонстрира способността за мащабиране отвъд бариерата за производителност, наложена от едно монолитно ядро, откривайки нова ера в консолидацията на сървъри и високопроизводителните облачни изчисления.
И накрая, ако се интересувате да научите повече, можете да намерите подробностите на следния линк.