Представлен релиз проекта QEMU 10.0.0. В качестве эмулятора QEMU позволяет запустить программу, собранную для одной аппаратной платформы на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU производительность выполнения кода в изолированном окружении близка к аппаратной системе за счёт прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM в Linux, или модуля NVMM в NetBSD.
Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 10.0 внесено более 2800 изменений от 211 разработчиков.
Ключевые улучшения, добавленные в QEMU 10.0:
- В драйвер virtio-scsi, предоставляющий виртуальный SCSI-контроллер (SCSI Host Bus Adapter) для виртуальных машин, добавлена поддержка многоуровневой системы очередей (multiqueue), позволяющей разделить очереди для разных блочных устройств для обеспечения многопоточного доступа на многоядерных системах (разные очереди одного накопителя могут обрабатываться разными потоками ввода/вывода). По сравнению с драйвером виртуального блочного устройства (virtio-blk) виртуальный SCSI-контроллер немного отстаёт по производительности, но позволяет использовать более 28 дисков.
- В VFIO (Virtual Function I/O) улучшена поддержка проброса IGD (Integrated Graphics Device) для интегрированных GPU, используемых в 11 (Rocket Lake) и 12 (Alder Lake) поколениях процессоров Intel. Добавлена поддержка старых GPU ATI (x550). Реализована базовая поддержка PCI PM (Power Management).
- Значительно переработана и расширена документация к протоколу QMP (QEMU Machine Protocol), позволяющему приложениям управлять QEMU.
- Добавлен новый режим Live-миграции “cpr-transfer” (CheckPoint and Restart), позволяющий переместить гостевую систему в новый экземпляр QEMU, запущенный на том же хосте. Режим минимизирует время приостановки за счёт того, что память гостевой системы отражается в виртуальное адресное пространство нового QEMU без копирования содержимого.
- Добавлены графические устройства ‘apple-gfx-pci’ и ‘apple-gfx-mmio’, использующие фреймворк ParavirtualizedGraphics, предоставляемый в macOS для аппаратного ускорения графики в гостевых системах. Первый драйвер предназначен для использования на устройствах x86-64, а второй – ARM64.
- В эмуляторе архитектуры x86 реализована поддержка моделей процессоров Intel Xeon Clearwater Forest и Sierra Forest v2. Ускорена эмуляция инструкций для манипуляции строковыми данными.
- В эмуляторе архитектуры ARM реализована поддержка плат NPCM8445 Evaluation и i.MX 8M Plus EVK. Добавлена эмуляция расширений FEAT_AFP, FEAT_RPRES и FEAT_XS, а также физических и виртуальных таймеров EL2. Объявлена устаревшей поддержка CPU Arm PXA2xx и эмуляция инструкций iwMMXt.
- В эмуляторе архитектуры RISC-V реализована эмуляция плат Microblaze V, CPU Ascalon и CPU RV64 Xiangshan Nanhu. Добавлена поддержка расширений архитектуры набора команд ‘svukte’, ‘ssstateen’, ‘smrnmi’, ‘smdbltrp’/’ssdbltrp’, ‘supm’, ‘sspm’, а так же тегов трансляции IOMMU и устройств riscv-iommu-sys.
- В эмуляторе архитектуры HPPA обеспечена эмуляция плат Diva GSP BMC.
До версии 18 обновлена прошивка SeaBIOS-hppa. Повышена скорость трансляции. Улучшен код для сброса виртуального CPU. На 64-разрядных системах обеспечена эмуляция конфигураций с размером памяти до 256 ГБ. - В эмуляторе архитектуры LoongArch появилась поддержка горячего подключения CPU. Реализован паравиртуализированный IPI (inter-processor interrupt). Обеспечено отслеживание времени ожидания предоставления ресурсов от гипервизора KVM. Добавлена поддержка виртуальной маршрутизации внешних прерываний (extioi).
- В эмуляторе архитектуры s390x добавлена поддержка 17 поколения CPU мэйнфреймов и реализована поддержка virtio-mem. Для повышения производительности добавлена возможность взаимодействия с PCI-устройствами в обход IOMMU.