Спустя почти год после публикации кода и отправки первых патчей на рассмотрение команда разработчиков проекта Multikernel открыла доступ к своему дереву ядра Multikernel Linux. Данный релиз базируется на версии Linux 7.0 и получил маркировку v7.0-mk2 в репозитории проекта. На данный момент официальная поддержка реализована исключительно для аппаратной архитектуры x86_64.

Технология Multikernel предлагает иной подход к использованию операционной системы Linux на мощных многоядерных серверных системах. Вместо запуска единого ядра, управляющего всеми ресурсами оборудования, разработчики предлагают одновременный запуск нескольких независимых ядер Linux на одном физическом сервере. Главная идея заключается в том, что один экземпляр выступает в роли хоста и управляет общим пулом центральных процессоров, оперативной памяти и устройств PCI. Хост может разделять эти ресурсы на изолированные группы и запускать отдельное ядро Linux для каждой из них.
Особенности работы без гипервизора
В отличие от традиционных виртуальных машин, дополнительные ядра в архитектуре Multikernel работают не под управлением гипервизора, а функционируют напрямую «на железе». Каждое такое ядро получает в свое распоряжение выделенные физические процессоры, память и периферийные устройства. При этом системные ресурсы не фиксируются навсегда. Разработчики отмечают возможность останавливать запущенные экземпляры, возвращать их процессоры, оперативную память и устройства обратно хосту, а затем запускать новые инстансы с другим программным окружением ядра при необходимости.
Результаты тестов производительности
Одновременно с релизом проекта авторы опубликовали результаты сравнительного тестирования, демонстрирующие преимущества такого подхода по сравнению с традиционной виртуализацией. В ходе тестов lmbench система Multikernel сопоставлялась с оптимизированной виртуальной машиной KVM. Обе конфигурации использовали одинаковую сборку ядра, два процессорных ядра и 1 гигабайт оперативной памяти на двухпроцессорном сервере на базе Intel Xeon Gold 5418Y.
Тестирование показало сопоставимую задержку памяти и пропускную способность, что обусловлено высокой эффективностью современной аппаратной виртуализации. Однако значительные различия были зафиксированы в сценариях, требующих частых переключений контекста и пробуждения процессора. Например, двухпроцессорный переключатель контекста в Multikernel занял 1.37 микросекунды против 3.42 микросекунды у стандартного гостя KVM. Задержка передачи данных через каналы составила 3.24 микросекунды против 7.06, а для сокетов Unix показатель зафиксирован на отметке 4.81 микросекунды по сравнению с 7.48 микросекундами.
Нюансы энергопотребления и планы развития
Создатели проекта подчеркивают, что полученные цифры не означают кратного превосходства Multikernel над KVM во всех сценариях. Разница во многом объясняется спецификой управления простаивающими виртуальными процессорами. В классической среде KVM пробуждение простаивающего виртуального процессора требует выхода из виртуальной машины и возврата в нее. В то же время Multikernel напрямую управляет физическими ядрами процессора.
Обратной стороной такого подхода становится повышенное энергопотребление. Данные ядра выглядят полностью загруженными для хоста, что приводит к дополнительным затратам энергии. В ходе замеров проект зафиксировал прирост примерно на 19 ватт в данной конфигурации. Предоставление гостевой системе более широких возможностей управления питанием процессора помогло улучшить показатели задержки, но также потребовало компромиссов в плане производительности и энергоэффективности.
В текущем первом публичном релизе наиболее тщательно протестирована поддержка архитектуры x86_64. В дальнейшем разработчики планируют добавить поддержку других процессорных архитектур. Интерфейсы, зависящие от конкретной архитектуры, уже выделены в коде с расчетом на будущие порты, однако официально они пока не поддерживаются. Исходный код Multikernel Linux доступен на платформе GitHub, а для разработчиков подготовлена инструкция по первому запуску.






