Доступен (https://lkml.org/lkml/2017/1/9/119) выпуск свободного гипервизора Jailhouse 0.6 (https://github.com/siemens/jailhouse), развиваемого компанией Siemens. Это третий (https://github.com/siemens/jailhouse/releases) выпуск за время существования проекта. Код проекта распространяется (https://github.com/siemens/jailhouse) под лицензией 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 виртуальные окружения именуются ячейками. Внутри ячейки система выглядит как однопроцессорный сервер, показывающий производительность близкую (https://docs.google.com/file/d/0B6HTUUWSPdd-Zl93MVhlMnRJRjg/...) к производительности выделенного ядра CPU. В ячейке может быть запущено окружение произвольной операционной системы, урезанные окружения для запуска одного приложения и специально подготовленные отдельные приложения, предназначенные для решения задач реального времени. Конфигурация задаётся в .cell-файлах (https://github.com/siemens/jailhouse/blob/master/config/), определяющих выделяемые окружению 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), улучшение документации и автоматизация тестирования работы на поддерживаемых устройствах.
URL: https://lkml.org/lkml/2017/1/9/119
Новость: http://www.opennet.dev/opennews/art.shtml?num=45829