Представлен свободный гипервизор Jailhouse 0.8, развиваемый компанией Siemens. Гипервизор поддерживает работу на системах 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 ) с расширениями для виртуализации. Код проекта распространяется под лицензией GPLv2.

Гипервизор реализован в виде модуля для ядра Linux и обеспечивает виртуализацию на уровне ядра. Для управления изоляцией используются предоставляемые современными CPU аппаратные механизмы виртуализации. Отличительными особенностями Jailhouse являются легковесная реализация и ориентация на привязку виртуальных машин к фиксированному CPU, области ОЗУ и аппаратным устройствам. Такой подход позволяет на одном физическом многопроцессорном сервере обеспечить работу нескольких независимых виртуальных окружений, каждое из которых закреплено за своим процессорным ядром.

При жесткой привязке к CPU накладные расходы от работы гипервизора сводятся к минимуму и существенно упрощается его реализация, так как нет необходимости выполнения сложного планировщика распределения ресурсов — выделение отдельного ядра CPU позволяет гарантировать отсутствие выполнения на данном CPU других задач. Плюсом подобного подхода является возможность обеспечить гарантированный доступ к ресурсам и предсказуемую производительность, что делает Jailhouse отличным решением для создания решений виртуализации для задач режима реального времени. Минусом является ограниченная масштабируемость, упирающаяся в число ядер CPU.

В терминологии Jailhouse виртуальные окружения именуются ячейками. Внутри ячейки система выглядит как однопроцессорный сервер, показывающий производительность близкую к производительности выделенного ядра CPU. В ячейке может быть запущено окружение произвольной операционной системы, урезанные окружения для запуска одного приложения и специально подготовленные отдельные приложения, предназначенные для решения задач реального времени. Конфигурация задаётся в .cell-файлах, определяющих выделяемые окружению CPU, регионы памяти и порты ввода/вывода.

В новом выпуске:

  • Добавлена поддержка платформ Marvell ESPRESSOBin, Emtrion emCON-RZ/G1E и emCON-RZ/G1M, а также возможность работы в виртуальной машине QEMU ARM64;
  • Библиотека окружений (inmate) переведена на двойную лицензию (GPLv2 или 2-clause BSD), что позволяет использовать её с кодом любых гостевых систем;
  • Перемещаемые окружения по умолчанию теперь размещаются по адресу 0 и для систем x86;
  • В протокол взаимодействия между гипервизором и гостевым окружением добавлена опционалная возможность установки таймаута;
  • Для платформы ARM64 добавлена поддержка контроллеров прерываний на базе архитектуры GICv3, таких как ARM CoreLink GIC-500. Для ARM и ARM64 обеспечен автоматический выбор версии GIC (v2 или v3);
  • Для систем x86 включено игнорирование некорректного доступа к IOAPIC (для использования в некорневых ячейках) и налажен сброс IOAPIC при запуске и завершении работы ячейки; расширено число поддерживаемых инструкций MMIO; организован проброс в окружения частот TSC и APIC, откалиброванных в корневой ячейке;
  • За пределами основного репозитория развивается несколько инициатив:
    продвижение в основной состав ядра Linux кода для поддержки некорневых ячеек для систем x86, интеграция поддержки Jailhouse в Zephyr RTOS, создание сценариев использования Jailhouse в Yocto на платформе Banana Pi.

Поделись новостью!

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here