Multikernel — отличная утилита для запуска нескольких ядер без виртуализации.

Ключевые моменты:
  • Многоядерный Linux позволяет запускать независимые ядра одновременно на физическом оборудовании.
  • Основанная на ядре Linux 7.0, она использует CONFIG_MULTIKERNEL и в настоящее время поддерживает архитектуру x86_64.
  • Это устраняет накладные расходы, связанные с виртуализацией (гипервизорами KVM), и позволяет переключать контекст в 2,5 раза быстрее.
  • В отличие от контейнеров, экземпляры не используют общее ядро, что предотвращает влияние сбоев или уязвимостей на весь сервер.
  • Используйте инструмент Kerf вместе с модулями Lazy CMA и DAXFS для динамического управления ресурсами и загрузки образов Docker.

Многоядерный Linux

В прошлом году мы обсуждали в блоге предложение от ByteDance (создателя TikTok) о создании утилиты под названием Parker (PARTitioned KERnel) — экспериментальной технологии , позволяющей одновременно запускать несколько ядер Linux. И вот, спустя чуть более полутора лет, выпущена новая общедоступная утилита от этого проекта — "Multikernel Linux (mklinux-v7.0-mk2)".

Данная разработка представляет собой специализированный вариант ядра Linux, позволяющий одновременно запускать несколько независимых экземпляров ядра на одном физическом сервере. Работая непосредственно на аппаратном уровне, эта технология полностью исключает необходимость в гипервизорах или уровнях виртуализации, предоставляя каждому экземпляру прямой доступ к выделенной памяти, процессору и устройствам.

ByteDance-Parker-multikernel
Теме статьи:
Паркер: Новая технология, позволяющая запускать несколько ядер Linux без виртуализации

Основанный на недавно выпущенном ядре Linux 7.0, проект позволяет включить эту функцию с помощью параметра конфигурации CONFIG_MULTIKERNEL . Если этот параметр отключен, результирующее ядро ​​будет точно таким же и будет вести себя как стандартный Linux 7.0. В настоящее время эта первая версия (v7.0-mk2) поддерживает исключительно архитектуры x86_64 и предназначена для преодоления разрыва в производительности и безопасности между традиционной виртуализацией и изоляцией контейнеров.

Изоляция без снижения производительности.

Главная проблема виртуализации — это «налог» на производительность, взимаемый гипервизорами. В отличие от этого, многоядерный Linux устраняет переходы при завершении работы виртуальных машин , трансляцию памяти второго уровня и накладные расходы, создаваемые моделями устройств.

Согласно данным о производительности, опубликованным после тестирования на процессорах Xeon Gold 5418Y (Sapphire Rapids), многоядерная система демонстрирует значительное увеличение скорости выполнения по сравнению с гостевыми системами KVM. Например, переключение контекста между процессами происходит в 2,5 раза быстрее, задержка канала сокращается более чем вдвое (в 2,18 раза), а время отклика базовых системных вызовов, таких как операции чтения и записи, увеличивается более чем на 25%.

По сравнению с традиционными контейнерами Docker, Multikernel обеспечивает превосходную защиту, поскольку, так как контейнеры используют одно и то же ядро ​​хоста, уязвимость на уровне ядра, сбой или перегрузка внутренних блокировок затрагивают все экземпляры. В экосистеме Multikernel каждая среда имеет собственное независимое ядро ; то есть, если один экземпляр терпит критический сбой, другие продолжают работать без изменений, гарантируя изолированную среду, идеально подходящую для запуска всего, от веб-серверов до ресурсоемких задач обучения ИИ (машинного обучения) на одном и том же оборудовании.

Динамическое назначение и оркестровка с помощью Kerf

В многоядерной Linux используется ядро ​​хоста , которое управляет большим пулом ресурсов (процессорами, оперативной памятью и устройствами PCI). Используя существующую структуру дерева устройств (доступную по адресу /sys/fs/multikernel/), ядро ​​формирует этот пул и запускает «дочерние ядра» через собственную подсистему kexec_file_load(). Благодаря возможностям горячего подключения (hotplug) в Linux эти ресурсы могут динамически перемещаться между экземплярами без необходимости перезагрузки сервера, обеспечивая предсказуемую и настраиваемую в реальном времени производительность.

Для организации этой экосистемы разработчики представили инструмент командной строки Kerf . Эта утилита управляет всем жизненным циклом экземпляров, используя дополнительные модули с открытым исходным кодом. Один из них — Lazy CMA, который выделяет непрерывную физическую память во время выполнения без необходимости предварительной настройки.

Другой важный компонент — DAXFS, модуль, позволяющий экземплярам напрямую совместно использовать файловые системы в памяти; благодаря этому Kerf может загружать дочернее ядро ​​непосредственно внутри образа контейнера Docker, используя его файловую систему без необходимости в слоях эмуляции и применяя дескрипторы в памяти для сетевого соединения без копирования данных.

Стоит отметить, что этот первый релиз прошёл интенсивные тесты стабильности в условиях 5-уровневой страничной организации памяти и активного KASLR, демонстрируя, что восстановление ресурсов полностью безопасно даже при сбое дочернего ядра.

Благодаря возможности разделения рабочих нагрузок, которые конфликтуют из-за системных блокировок (например, большое количество процессов отмены или переименования в одном и том же кэше), между отдельными ядрами, синхронизированными с физическими процессорными сокетами, Multikernel Linux демонстрирует способность масштабироваться за пределы барьера производительности, накладываемого единым монолитным ядром, открывая новую эру в консолидации серверов и высокопроизводительных облачных вычислениях.

Наконец, если вас интересует более подробная информация, вы можете найти ее по следующей ссылке.


Добавить в качестве предпочтительного источника в Google