02.12.2021

Выпуск эмулятора QEMU 5.2


Представлен релиз проекта QEMU 5.2. В качестве эмулятора QEMU позволяет запустить программу, собранную для одной аппаратной платформы, на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU производительность выполнения кода в изолированном окружении близка к нативной системе за счёт прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.

Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 5.2 внесено более 3200 изменений от 216 разработчиков.

Ключевые улучшения, добавленные в QEMU 5.2:

  • Изменена система сборки, для компиляции QEMU теперь требуется установка инструментария ninja.
  • В драйвер блочных устройств добавлена поддержка использования фонового процесса qemu-storage-daemon в качестве бэкенда для vhost-user-blk. Добавлена новая QMP-команда ‘block-export-add’, пришедшая на смену команде ‘nbd-server-add’ и реализующая поддержку ‘qemu-storage-daemon’.
  • Для образов в формате qcow2 добавлена поддержка расширенных записей L2, допускающих выделение места неполными кластерами (subcluster). Для включения L2 при создании образа требуется указать опцию «extended_l2=on».
  • Улучшена поддержка использования qemu в качестве клиента NBD — сокращено число ситуаций, приводящих к таймаутам при обмене данными по сети, приводящим к подвисаниям гостевых систем. В qemu-nbd предоставлена возможность указания нескольких опций ‘-B name’ для задания разом нескольких dirty bitmap. Добавлена опция ‘-A’ для передачи нового контекста метаданных «qemu:allocation-depth» поверх NBD.
  • Добавлен режим высокопроизводительной миграции с шифрованием передаваемых данных при помощи TLS и multifd. Задаваемый по умолчанию лимит пропускной способности при миграции увеличен до 1Gbps.
  • Добавлен параметр миграции ‘block-bitmap-mapping’, дающий возможность более детально управлять тем, какие битмапы будут передаваться при миграции. Параметр работает даже если имена узлов отличаются от источника на принимающей стороне.
  • Разрешена миграция поверх vsock (VM Sockets) для вложенных окружений или на хост-системах с оборудованием, напоминающим vsock.
  • Добавлены новые вызовы ‘calc-dirty-rate’ и ‘query-dirty-rate’, позволяющие прогнозировать интенсивность обновлений при миграции с учётом нагрузки, связанной с операциями в ОЗУ.
  • В QEMU Guest Agent (qemu-ga) добавлены команды guest-get-devices, guest-get-disks и guest-ssh-{get,add-remove}-authorized-keys.
  • В virtiofsd добавлены новые опции для управления представлением имён расширенных атрибутов xattr в гостевой системе, раздельным подключением разделов, имеющих разные точки монтирования на хост системе, а также для задания механизма sandbox-изоляции, альтернативного pivot_root.
  • В эмуляторе архитектуры x86 добавлена опция «kvm-async-pf-int -cpu» для включения асинхронного обработчика обращений к невыделенным страницам памяти (page faults).
  • В эмулятор архитектуры RISC-V добавлена поддержка live-миграции. Экспериментальная поддержка гипервизора для RISC-V обновлена до версии 0.6.1. Добавлена поддержка NUMA-сокетов на системах с типом virt/Spike.
  • В эмулятор архитектуры ARM добавлена поддержка плат mp2-an386 (Cortex-M4 based), mp2-an500(Cortex-M7 based), raspi3ap (Raspberry Pi 3 model A+), raspi0 (Raspberry Pi Zero), raspi1ap (Raspberry Pi A+) и npcm750-evb/quanta-gsj (Nuvoton iBMC). Для архитектуры AArch32 реализована поддержка расширений ARMv8.2 FEAT_FP16 (half-precision flaoting point). Добавлена поддержка аккаунтинга на базе kvm-steal-time.
  • В эмуляторе архитектуры HPPA реализована поддержка загрузки NetBSD и очень старых дистрибутивов Linux, таких как Debian 0.5 и 0.6.1.
  • В эмуляторе архитектуры PowerPC улучшена поддержка задаваемых пользователем параметров дистанцирования для топологии NUMA.
  • В эмулятор архитектуры s390 для KVM добавлена поддержка диагностических инструкций 0x318. В классическом генераторе кода TCG (Tiny Code Generator) реализована поддержка дополнительных инструкций z14. В устройствах vfio-pci обеспечен вывод сведений о функциональности реального оборудования вместо эмулируемых характеристик.
  • В эмулятор архитектуры Xtensa добавлена поддержка сопроцессора DFPU с опкодами для операций с плавающей запятой с одинарной и двойной точностью.

Источник: https://www.opennet.ru/opennews/art.shtml?num=54225

Добавить комментарий