Представлен (https://lkml.org/lkml/2017/12/28/98) свободный гипервизор Jailhouse 0.8 (https://github.com/siemens/jailhouse), развиваемый компанией 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 ) с расширениями для виртуализации. Код проекта распространяется (https://github.com/siemens/jailhouse) под лицензией GPLv2.
Гипервизор реализован в виде модуля для ядра Linux и обеспечивает виртуализацию на уровне ядра. Для управления изоляцией используются предоставляемые современными CPU аппаратные механизмы виртуализации. Отличительными особенностями Jailhouse являются легковесная реализация и ориентация на привязку виртуальных машин к фиксированному CPU, области ОЗУ и аппаратным устройствам. Такой подход позволяет на одном физическом многопроцессорном сервере обеспечить работу нескольких независимых виртуальных окружений, каждое из которых закреплено за своим процессорным ядром.При жесткой привязке к CPU накладные расходы от работы гипервизора сводятся к минимуму и существенно упрощается его реализация, так как нет необходимости выполнения сложного планировщика распределения ресурсов - выделение отдельного ядра CPU позволяет гарантировать отсутствие выполнения на данном CPU других задач. Плюсом подобного подхода является возможность обеспечить гарантированный доступ к ресурсам и предсказуемую производительность, что делает Jailhouse отличным решением для создания решений виртуализации для задач режима реального времени. Минусом является ограниченная масштабируемость, упирающаяся в число ядер CPU.
В терминологии Jailhouse виртуальные окружения именуются ячейками. Внутри ячейки система выглядит как однопроцессорный сервер, показывающий производительность близкую (https://docs.google.com/file/d/0B6HTUUWSPdd-Zl93MVhlMnRJRjg/...) к производительности выделенного ядра CPU. В ячейке может быть запущено окружение произвольной операционной системы, урезанные окружения для запуска одного приложения и специально подготовленные отдельные приложения, предназначенные для решения задач реального времени. Конфигурация задаётся в .cell-файлах (https://github.com/siemens/jailhouse/blob/master/configs/), определяющих выделяемые окружению 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, откалиброванных в корневой ячейке;
- За пределами основного репозитория развивается несколько инициатив:
продвижение (https://lkml.org/lkml/2017/11/27/125) в основной состав ядра Linux кода для поддержки некорневых ячеек для систем x86, интеграция (https://github.com/zephyrproject-rtos/zephyr/pull/4170) поддержки Jailhouse в Zephyr RTOS, создание (https://bitbucket.org/retotech/meta-jailhouse.git) сценариев использования Jailhouse в Yocto на платформе Banana Pi.
URL: https://lkml.org/lkml/2017/12/28/98
Новость: http://www.opennet.me/opennews/art.shtml?num=47822
Скорее всего в других системах при количестве ядер=1 тоже ничего не планирует.
> Intel IOMMU (VT-d) with interrupt remapping support (except when running inside QEMU)А можно пущать lxc в гипервизоре из qemu?
Зависит от того, есть у тебя компьютер или нет!
счётные палочки - это компьютер?
Siemens со времен wincc научились программировать???
Better Stuxnet support.
это пять ;)
Кстати, непонятно, как после этой истории можно смотреть на что-то с названием "сименс" без отвращения?
Девайсы с realtek уже́ все выкинули?
Можно как-то заюзать это изделие есть какие-то API или вообще как с этим жить?
> Можно как-то заюзать это изделие есть какие-то API или вообще как с этим жить?Начини с обучения пользования ссылками.
> Гипервизор реализован в виде модуля для ядра Linux и обеспечивает виртуализацию на уровне ядра.Нет. Jailhouse вообще не имеет никакого отношения к ядру Linux и при активации отбирает у него доступ ко всему. В виде модуля ядра реализован тот самый загрузчик.
угу.
а /dev/jailhouse становится сим-линком на /dev/null?
не говоря уже про всякие /dev/sda
/dev/jailhouse - это просто устройство, через которое CLI загрузчика общается с модулем. К гипервизору это не имеет особого отношения - просто менеджмент. В отличие от того же KVM, где VMEXIT'ы именно обрабатываются модулем ядра.
Другими словами, в Jailhouse Linux не выполняется в VMX root (на Intel).
И никакого /dev/sda у гипервизора, конечно, нет. Для Linux в root cell доступ до него обычно оставляют, но нет никаких проблем отрубить. После этого Linux впадет в панику, гипервизор продолжит работать. И, к примеру, выполнять тот самый Zephyr.
> при активации отбирает у него доступ ко всему.Кэп, ты сейчас расшифровал определение гипервизора ОСи.
"ориентация на привязку виртуальных машин к фиксированному CPU"
Это толком и не гипервизор. Это слегка перекормленный планировщик. В последнее время подобных расплодилось - реализация проста в дым, а хайпа вокруг гипервизоров много.
А где совместное использование CPU и GPU?
Вы собираетесь майнить на машине, которая двигает жд стрелки или поднимает-опускает стержни в реакторе?
> Вы собираетесь майнить на машине, которая двигает жд стрелки или поднимает-опускает стержни
> в реакторе?Страшно? Представь сколько криптовалюты придется выложить Рогозину прокурорам...
Зачем бы ему это делать?
Его очередь подошла садиться.
Здесь нет предмета для обсуждения. Данная Siemens технология ориентирована на real-time. Хотя 99% пищуших здесь"профессионалов" понятия об этом не имеют.
Профик, код видел?
spin_lock(&cell->mmio_region_lock);
...
/*
* If this CPU is last, make sure everything was committed before we
* signal the other CPUs spinning on initialized_cpus that they can
* continue.
*/memory_barrier();
...
spin_unlock(&cell->mmio_region_lock);
Как думашь, "make sure", "that they can continue" это реалтаймовые термины?
Ожидание сброса кэша внутри блокировки на SMP бурбуляторе (особо x86) это да, реалтаймней не придумашь.
> Как думашь, "make sure", "that they can continue" это реалтаймовые термины?
> Ожидание сброса кэша внутри блокировки на SMP бурбуляторе (особо x86) это да,
> реалтаймней не придумашь.это мягкое, либеральное реальное время
> это мягкое, либеральное:D
Android?
Что вы за люди такие. Ну спросите у мастеров зачем биндят процессы к конкретному цпу, зачем пишут свою реализацию сетевого стека под linux и прочее. В принципе самому не сложно понять.
Здесь почти правильно высказались, такой дизайн нужен для среднего между реалтаймом и обычной работой с планировщиком и мультиядрами. Да, ни туда ни сюда.