Представлен первый публичный выпуск проекта Multikernel Linux (mklinux-v7.0-mk2), развивающего вариант ядра Linux, дополненный возможностью выполнения нескольких независимых экземпляров ядра на одном физическом компьютере без использования гипервизора и виртуализации. Каждый экземпляр ядра имеет прямой доступ к аппаратным ресурсам и может использоваться для запуска отдельных изолированных системных окружений. Первый выпуск основан на ядре Linux 7.0 и содержит сборочную настройку «CONFIG_MULTIKERNEL», при отключении которой ядро становится полностью аналогично штатному ядру 7.0. Из архитектур CPU пока поддерживается только x86_64.
Multikernel преподносится как новый механизм изоляции, занимающий нишу между виртуализацией при помощи гипервизора и контейнерной изоляцией на базе общего ядра. В отличие от виртуализации Multikernel не требует использования гипервизора, упрощает создание окружений для изолированного запуска отдельных приложений и позволяет добиться высокой производительности без накладных расходов на виртуализацию. В отличие от контейнеров Multikernel обеспечивает высокий уровень изоляции и позволяет использовать отдельное ядро в каждом изолированном окружении, аварийное завершение или эксплуатация уязвимости в котором не затрагивает другие окружения.

Хостовое ядро обеспечивает распределение имеющихся CPU, памяти и PCI-устройств между параллельно работающими дополнительными экземплярами ядра. Каждый экземпляр выполняется на отдельном выделенном ядре CPU, работает с закреплёнными за ним устройствами и имеет доступ к выделенной области физической памяти. Одновременное выполнение нескольких ядер осуществляется без виртуализации, используя SMP-обработчик, распределяющий доступные CPU. Поддерживается динамическое выделение ресурсов запускаемым окружениям и обеспечение предсказуемой производительности.
Благодаря исключению свойственных виртуализации накладных расходов, производительность при использовании Multikernel оценивается как близкая к производительности выполнения на отдельном оборудовании. При использовании Multikernel отсутствует стадия передачи управления между виртуальными машинами (VM exit), не используются страницы памяти второго уровня, отдельная модель устройств и трансляция IOMMU. При сравнении с гипервизором KVM при использовании Multikernel отмечается повышение производительности различных системных вызовов и функций от 1.07 до 2.5 раз (fork + exit — 1.07x, write() — 1.39x, AF_UNIX — 1.55x, Pipe — 2.18x, переключение контекста — 2.50x), пропускная способность и задержки при работе с памятью находятся на одном уровне.

Mənbə: opennet.ru
