Для обсуждения разработчиками ядра Linux предложена серия патчей, разработанных проектом Multikernel. Это решение ранее перевели в категорию открытого ПО и оно начало развиваться совместно с сообществом.
По информации OpenNET, решение Multikernel позволяет на одном физическом компьютере выполнять несколько независимых экземпляров ядра Linux, которые имеют прямой доступ к аппаратным ресурсам и могут использоваться для запуска нескольких изолированных системных окружений.
Проект Multikernel создан компанией Multikernel Technologies, основанной и возглавляемой Конгом Вангом (Cong Wang), сопровождающим в ядре Linux подсистему управления трафиком (TC, Traffic Control).
Для запуска и управления ядрами в Multikernel предложен усовершенствованный вызов kexec, который в отличие от классического kexec не ограничивается заменой работающего ядра и позволяет запускать дополнительные экземпляры ядра, выполняемые параллельно. Для мониторинга и отладки запущенных экземпляров ядра реализован интерфейс «/proc/multikernel», а для обмена сообщениями между ядрами и координации работы предложен коммуникационный фреймворк Multikernel IPI.
Решение Multikernel преподносится как новая архитектура изоляции, занимающая нишу между виртуализацией при помощи гипервизора и контейнерной изоляцией на базе общего ядра. В отличие от виртуализации Multikernel не требует использования гипервизора, упрощает создание окружений для изолированного запуска отдельных приложений и позволяет добиться высокой производительности без накладных расходов на виртуализацию. В отличие от контейнеров проект Multikernel обеспечивает высокий уровень изоляции и позволяет использовать отдельное ядро в каждом изолированном окружении.
Производительность при использовании Multikernel оценивается как близкая к производительности выполнения на отдельном оборудовании. Подобного удалось добиться за счёт исключения свойственных виртуализации накладных расходов, возникающих из‑за обработчиков передачи управления между виртуальными машинами (VM exit), трансляции IOMMU и вмешательства гипервизора в выполнение привилегированных операций. В Multikernel поддерживается динамическое выделение ресурсов запускаемым окружениям и обеспечение предсказуемой производительности.
Одновременное выполнение в Multikernel нескольких ядер осуществляется без виртуализации, используя SMP‑обработчик, распределяющий доступные CPU между экземплярами ядер Linux. Каждый экземпляр ядра Linux закреплён за одним или несколькими ядрами CPU, выделенными для его выполнения, при совместном использовании остальных аппаратных ресурсов.
Основные достоинства проекта Multikernel:
улучшенная изоляция от сбоев в работе выполняемых окружений;
повышенная безопасность за счёт разделения на уровне ядра;
более эффективное использование ресурсов по сравнению с традиционными виртуальными машинами на базе гипервизоров, таких как KVM и Xen;
потенциальна возможность обновления ядра без остановки работы при использовании механизма KHO (Kernel Hand Over);
поддержка интеграции со стандартными облачными инфраструктурами и возможность прозрачного перехода с традиционных систем виртуализации и контейнерной изоляции;
полная совместимость с существующими приложениями и системными интерфейсами Linux. Multikernel лишь точечно изменяет ядро, сохраняя полную совместимость на уровне API.
Источник: habr.com