После семи месяцев разработки состоялся релиз свободного гипервизора Xen 4.9. По сравнению с прошлым выпуском в Xen 4.8 внесено 1549 изменений, что на 20% больше, чем в прошлом выпуске. В создании нового выпуска приняло участие 86 разработчиков, представляющих 30 компаний (для сравнения прошлый выпуск создан силами 68 разработчиков из 25 компаний).
Ключевые изменения в Xen 4.9:
- Добавлена поддержка загрузки Xen c использованием протокола multiboot2, что позволяет организовать загрузку на платформах BIOS и EFI с использованием загрузчка GRUB2. Частично поддержка multiboot2 также реализована для загружаемых по сети прошивок (iPXE). Из достоинств применения multiboot2 отмечается возможность изменения настроек непосредственно из загрузчика и переносимость загрузочной конфигурации между разными платформами;
- Представлен новый планировщик "null", обеспечивающий минимальные накладные расходы от работы планировщика, предсказуемую производительность и уровень задержек близкий к системам, работающим без использования виртуализации, в условиях когда каждый виртуальный CPU закреплён за физическим CPU. В качестве наиболее перспективных областей применения нового планировщика отмечаются встраиваемые и автомобильные окружения;
- Полностью переработан и консолидирован интерфейс для взаимодействия между Xen и QEMU, который переведён на один универсальный гипервызов (hypercall) DMOP (Device Model Operation Hypercall), который позволяет использовать драйвер privcmd для аудита любых областей памяти QEMU и параметров, переданных в Xen через DMOP. Аудит включен в Linux-драйвере privcmd, что позволяет существенно ограничить возможности по проведению атак на гипервизор через компрометацию компонентов QEMU. Кроме того, продолжается работа над проектом по обеспечению непривилегированного запуска QEMU в Dom0;
- Для систем на базе процессоров ARM представлен новый параметр vwfi (virtual Wait For Interrupt), позволяющий выбрать метод обработки инструкций WFI. Например, указав в vwfi значение "native" можно примерно на 60% сократить задержки в обработке прерываний. Тесты на плате Xilinx Zynq Ultrascale+ MPSoC подтвердили, что уровень задержек при обработке прерывания не превышает 2 микросекунд, что очень близко к аппаратным ограничениям и достаточно для большинства встраиваемых решений;
- Реализован новый ABI для совместного использования устройств в виртуальных машинах, который хорошо подходит для некоторых применений, специфичных для встраиваемых, автомобильных и облачных систем;
- Для применения на встраиваемых и автомобильных системах добавлен виртуальный звуковой ABI, через который можно реализовать воспроизведение и запись звука, а также управление громкостью и включение/отключение источников звука.
- Добавлен виртуальный экранный ABI для сложных устройств отображения, включающих несколько фреймбуферов и дисплеев;
- Для использования сенсорных экранов в протокол работы с виртуальной клавиатурой/мышью добавлена поддержка мультитач;
- Представлен Xen-транспорт для протокола 9pfs, обеспечивающего работу с сетевой файловой системой Plan 9. Фронтэнд для 9pfs передан для включение в состав ядра Linux, а бэкенд добавлен в QEMU. 9pfs позволяет предоставить доступ к ФС из одной виртуальной машины к другой;
- Реализован PV Calls ABI, позволяющий перенаправлять POSIX-вызовы между гостевыми системами. При помощи данного ABI вызов POSIX-функции, инициированный из приложения в DomU, может быть перенаправлен и обработан на стороне Dom0. Например, обращение к сетевому сокету может быть выполнено на стороне Dom0, позволяя реализовать новую сетевую модель, естественно вписывающуюся в концепцию cloud-native приложений;
- Проведена работа по оптимизации и увеличению масштабируемости демонов Xenstored, позволяющих Dom0 и гостевым системам получить доступ к информации о конфигурации системы. Cxenstored теперь может эффективно работать на очень крупных хостах, насчитывающих более тысячи гостевых систем. Увеличена производительность обработки транзакций, снижено потребление памяти и сокращено число конфликтов транзакций. Добавлены средства для динамической отладки;
- Для систем ARM32 реализована возможность применения патчей на лету (Live Patching) без необходимости перезапуска гипервизора, а также добавлена поддержка GIC-v3 (Generic Interrupt Controller version 3);
- Для систем x86 добавлена поддержка инструкций AVX512_4VNNIW (Neural Network Instructions) и AVX512_4FMAPS (Multiply Accumulation Single Precision), которые позволяют задействовать в HVM- и PV-окружениях средства аппаратного ускорения для систем машинного обучения. В новом выпуске также внесены оптимизации в код поддержки VT-d Posted Interrupt (PI) и обработки MCE (Machine Check Exception);
- Для платформ ARM реализованы средства определения системных ошибок
(System Error Detection), применяемые при построении отказоусточнивых систем;
- Старая реализация GCOV замена на обновлённую версию, которая поддерживает большее число форматов и предоставляет унифицированный интерфейс;
- С целью повышения защиты переработан код эмуляции x86, в том числе проведён аудит безопасности на предмет наличия возможных уязвимостей, добавлена поддержка новых инструкций и создан тестовый набор для проведения fuzzing-тестирования на базе AFL;
- Обеспечена поддержка спецификации Microsoft Hyper-V Hypervisor TLFS (Top-Level Functional Specification) 5.0, что позволило организовать запуск в Xen гостевых систем Windows с производительностью на уровне Hyper-V. В разработке находится реализация запуска Hyper-V в Xen с использованием вложенной виртуализации.
|