Это похоже на виртуалки, но проще и ближе к «железу».
В Linux-ядро предложили экспериментальную поддержку «мультиядерной» архитектуры — возможности запускать сразу несколько независимых экземпляров ядра на одном физическом компьютере. Каждое ядро может быть привязано к своим выделенным CPU-ядрам, при этом совместно используя общие аппаратные ресурсы.
Такой подход даёт сразу несколько преимуществ. Он обеспечивает лучшую изоляцию между рабочими нагрузками, повышает безопасность за счёт разделения на уровне ядра, позволяет эффективнее использовать ресурсы по сравнению с классическими виртуальными машинами вроде KVM или Xen и даже теоретически открывает путь к обновлению ядра «на лету» с помощью механизма Kernel Hand Over.
Реализация основана на инфраструктуре kexec: через неё можно загружать и управлять несколькими образами ядра, назначая каждому конкретные процессорные ядра. Для обмена данными между ядрами добавлен отдельный механизм межъядерных сообщений (IPI), который позволяет им координировать работу. В наборе патчей есть и интерфейс в /proc для мониторинга активных экземпляров, и доработанный kexec с динамическим учётом загруженных образов, и x86-специфичные механизмы загрузки процессоров.
Пока это только RFC — запрос на комментарии. Авторы подчёркивают, что архитектура уже работает, но деталей предстоит доработать много. Основная цель сейчас — получить обратную связь от сообщества. Код проверялся только на машине разработчика с жёстко прописанными параметрами загрузки, поэтому нужны тесты на других платформах и конфигурациях. Использовать нововведение вне экспериментов пока категорически не рекомендуется.
Новая архитектура открывает интересные сценарии: параллельный запуск реального времени и универсального ядра на одном железе, выделение отдельных экземпляров под критически важные приложения или под специфические рабочие нагрузки. Это лишь базовый каркас, но именно на нём сообщество сможет строить собственные решения для будущих систем.