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

Компания Siemens представила выпуск свободного гипервизора Jailhouse 0.10, компоненты для гостевых систем которого уже включены в состав основного ядра Linux. Гипервизор поддерживает работу на системах 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 виртуальные окружения именуются «камерами» (cell). Внутри камеры система выглядит как однопроцессорный сервер, показывающий производительность близкую к производительности выделенного ядра CPU. В камере может быть запущено окружение произвольной операционной системы, урезанные окружения для запуска одного приложения и специально подготовленные отдельные приложения, предназначенные для решения задач реального времени. Конфигурация задаётся в .cell-файлах, определяющих выделяемые окружению CPU, регионы памяти и порты ввода/вывода.

0_1384888400.png

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

  • Для защиты от атак Spectre/L1TF задействована система привязанных к CPU таблиц страниц памяти, позволяющая не допустить утечку данных из камер в момент выполнения кода гипервизора;
  • Добавлена поддержка фреймбуфера EFI, который может выступать в роли альтернативы UART;
  • Предложен новый биндинг на языке Python — «pyjailhouse», предоставляющий API для управления гипервизором;
  • Удалён код для поддержки VGA (рекомендуется использовать фреймбуфер EFI) и платформы VExpress (виртуальный ARMv7 для QEMU);
  • Команда «jailhouse hardware check» теперь не требует наличия конфигурации системы;
  • В демонстрационных окружениях (inmates) все настройки, выполняемые на этапе сборки, преобразованы в файлы конфигурации камер и runtime-параметры запуска. В обработчиках прерываний для процессоров ARM обеспечено сохранение/восстановление регистров;
  • Для платформ ARM представлена базовая поддержка SMCCC (SMC Calling Convention);
  • Добавлена поддержка более 8 ARM CPU с GICv3 (ARM Generic Interrupt Controller);

В следующем выпуске планируется появление нескольких реализаций IOMMU для ARM64, включение поддержки платы Xilinx Ultra96, стандартизация программного интерфейса для обмена данными между камерами, поддержка virtio поверх транспортов на базе разделяемой памяти.

© OpenNet