Подано реліз проекту 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.
Джерело: opennet.ru
