Состоялся первый публичный релиз весьма амбициозного проекта Multikernel Linux. Разработчики представили масштабную модификацию, которая позволяет запускать сразу несколько независимых экземпляров ядра на одном физическом компьютере без использования гипервизоров и классической виртуализации.
Базируется эта технология на свежем релизе Linux 7.0 и пока работает исключительно на процессорах архитектуры x86_64. Примечательно, что вся новая архитектура завязана на один единственный сборочный параметр "CONFIG_MULTIKERNEL", при отключении которого получается абсолютно стандартная операционная система без каких-либо изменений.
По задумке инженеров, новый подход должен занять идеальную нишу между легковесными контейнерами и тяжелыми виртуальными машинами. В отличие от тех же контейнеров, где все процессы крутятся на одном базовом ядре и фатальная ошибка утягивает в ребут всю систему, здесь каждое окружение получает собственное независимое ядро. Любой критический сбой, паника ядра или успешная хакерская атака останется строго внутри изолированного экземпляра. При этом система полностью лишена главного минуса традиционной виртуализации в виде программной прослойки, отъедающей внушительную часть вычислительных ресурсов.
Под капотом все устроено предельно прагматично и эффективно. Хостовое ядро выступает в роли дирижера, который нарезает доступные мощности процессора, оперативную память и устройства PCI, жестко распределяя их между параллельными ядрами. Каждому запускаемому экземпляру выдается выделенное физическое ядро CPU и собственный кусок оперативной памяти, а за всю оркестрацию без виртуализации отвечает модифицированный SMP-обработчик. Поскольку в такой схеме отсутствует стадия передачи управления виртуальным машинам и двойная трансляция адресов памяти, производительность практически не отличается от работы на голом железе. Тесты показывают, что по сравнению с популярным гипервизором KVM, скорость выполнения базовых системных вызовов в Multikernel вырастает от семи процентов до внушительных двух с половиной раз.
Linux / Линукс 🥸
