Компания Siemens выпустила гипервизор Jailhouse 0.6

Доступен выпуск свободного гипервизора Jailhouse 0.6, развиваемого компанией Siemens. Это третий выпуск за время существования проекта. Код проекта распространяется под лицензией GPLv2. Гипервизор поддерживает работу на системах x86_64 с расширениями VMX+EPT или SVM+NPT (AMD-V), а также на процессорах ARMv7 (Banana Pi, NVIDIA Jetson TK1, Versatile Express с Cortex-A15 или A7) и ARMv8/ARM64 (AMD Seattle, LeMaker HiKey, NVIDIA Jetson TX1, Xilinx ZCU102 ) с расширениями для виртуализации.
Организация взаимодействия с операционной системой в Jailhouse напоминает KVM, Jailhouse также обеспечивает виртуализацию на уровне ядра Linux, но отличается от KVM более легковесной реализацией и ориентацией на привязку виртуальных машин к фиксированному CPU, области ОЗУ и аппаратным устройствам. Такой поход позволяет на одном физическом многопроцессорном сервере обеспечить работу нескольких независимых виртуальных окружений, каждое из которых закреплено за своим процессорным ядром.
При жесткой привязке к CPU накладные расходы от работы гипервизора сводятся к минимуму и существенно упрощается его реализация, так как нет необходимости выполнения сложного планировщика распределения ресурсов - выделение отдельного ядра CPU позволяет гарантировать отсутствие выполнения на данном CPU других задач. Плюсом подобного подхода является возможность обеспечить гарантированный доступ к ресурсам и предсказуемую производительность, что делает Jailhouse отличным решением для создания решений виртуализации для задач режима реального времени. Минусом является ограниченная масштабируемость, упирающаяся в число ядер CPU.
В терминологии Jailhouse виртуальные окружения именуются ячейками. Внутри ячейки система выглядит как однопроцессорный сервер, показывающий производительность близкую к производительности выделенного ядра CPU. В ячейке может быть запущено окружение произвольной операционной системы, урезанные окружения для запуска одного приложения и специально подготовленные отдельные приложения, предназначенные для решения задач реального времени. Конфигурация задается в.cell-файлах, определяющих выделяемые окружению CPU, регионы памяти и порты ввода/вывода. Для управления изоляцией используются предоставляемые современными CPU аппаратные механизмы виртуализации. Гипервизор реализован в виде модуля для ядра Linux.
В новом выпуске:
- Переработана и доведена до готовности к применению поддержка процессоров ARMv7;
- Добавлена поддержка архитектуры ARMv8 и следующих плат на ее основе: AMD Seattle / SoftIron Overdrive 3000, LeMaker HiKey, NVIDIA Jetson TX1 и Xilinx ZCU102;
- Поддержка загрузки нескольких экземпляров Linux, в однопроцессорном или многопроцессорном режимах (SMP), на всех поддерживаемых аппаратных архитектурах;
- Расширены средства обеспечения связи между ячейками, в том числе добавлен драйвер с реализацией виртуального сетевого протокола, работающий на всех поддерживаемых архитектурах;
- Внесена большая порция улучшений, связанных с работой на системах x86: Добавлена поддержка AMD IOMMU и технологии управления L3-кэшем Intel (Intel Cache Allocation Technology). Реализована поддержка новых процессоров Intel, включая SoC Apollo Lake;
- Поддержка субстраничных регионов MMIO (sub-page region).
В будущем планируется обеспечить регулярное формирование релизов (прошлая версия была выпущена в мае 2015 года), которые отныне будут развиваться в рамках трехмесячного цикла разработки. Из планов по развитию функциональности отмечается переработка устройства для взаимодействия между ячейками (ivshmem 2.0), улучшение документации и автоматизация тестирования работы на поддерживаемых устройствах.