Zaprezentowano wydanie projektu QEMU 10.0.0. Emulator QEMU umożliwia uruchomienie programu, stworzonego dla jednej platformy sprzętowej, na systemie o całkowicie innej architekturze, na przykład uruchomienie aplikacji dla ARM na komputerze zgodnym z x86. W trybie wirtualizacji w QEMU wydajność wykonania kodu w izolowanym środowisku jest zbliżona do systemu sprzętowego dzięki bezpośredniemu wykonaniu instrukcji na CPU oraz wykorzystaniu hipernadzorcy Xen lub modułu KVM w Linuxie, lub modułu NVMM w NetBSD.
Początkowo projekt został stworzony przez Fabrice'a Bellarda z celem umożliwienia uruchamiania skompilowanych dla platformy x86 plików wykonywalnych Linuxa na architekturach różniących się od x86. W ciągu lat rozwoju dodano wsparcie dla pełnej emulacji dla 14 architektur sprzętowych, a liczba emulowanych urządzeń sprzętowych przekroczyła 400. Przy przygotowaniu wersji 10.0 wprowadzono ponad 2800 zmian od 211 deweloperów.
Kluczowe ulepszenia dodane w QEMU 10.0:
- W sterowniku virtio-scsi, który zapewnia wirtualny kontroler SCSI (SCSI Host Bus Adapter) dla maszyn wirtualnych, dodano wsparcie dla wielopoziomowego systemu kolejek (multiqueue), co pozwala na podział kolejek dla różnych urządzeń blokowych w celu zapewnienia równoległego dostępu na systemach wielordzeniowych (różne kolejki jednego nośnika mogą być przetwarzane przez różne wątki wejścia/wyjścia). W porównaniu do sterownika wirtualnego urządzenia blokowego (virtio-blk) wirtualny kontroler SCSI nieco ustępuje pod względem wydajności, ale umożliwia korzystanie z ponad 28 dysków.
- W VFIO (Virtual Function I/O) poprawiono wsparcie dla przełączania IGD (Integrated Graphics Device) dla zintegrowanych GPU wykorzystywanych w 11 (Rocket Lake) i 12 (Alder Lake) generacjach procesorów Intel. Dodano wsparcie dla starszych GPU ATI (x550). Wdrażane jest podstawowe wsparcie dla PCI PM (Power Management).
- Znacząco przerobiono i rozszerzono dokumentację do protokołu QMP (QEMU Machine Protocol), który pozwala aplikacjom zarządzać QEMU.
- Dodano tryb Live-migracji „cpr-transfer” (CheckPoint and Restart), który pozwala na przeniesienie systemu gościa do nowego egzemplarza QEMU uruchomionego na tym samym hoście. Tryb minimalizuje czas wstrzymania dzięki temu, że pamięć systemu gościa jest odzwierciedlana w wirtualnej przestrzeni adresowej nowego QEMU bez kopiowania zawartości.
- Dodano urządzenie graficzne ‘apple-gfx-pci’ i ‘apple-gfx-mmio’, które wykorzystują framework ParavirtualizedGraphics dostarczany w macOS do przyspieszania grafiki w systemach gościnnych. Pierwszy sterownik przeznaczony jest do urządzeń x86-64, a drugi - ARM64.
- W emulatorze architektury x86 dodano wsparcie dla modeli procesorów Intel Xeon Clearwater Forest i Sierra Forest v2. Przyspieszono emulację instrukcji do manipulacji danymi tekstowymi.
- W emulatorze architektury ARM dodano wsparcie dla płyt NPCM8445 Evaluation i i.MX 8M Plus EVK. Wprowadzono emulację rozszerzeń FEAT_AFP, FEAT_RPRES i FEAT_XS, a także fizycznych i wirtualnych zegarów EL2. Wsparcie dla CPU Arm PXA2xx oraz emulacja instrukcji iwMMXt zostało uznane za przestarzałe.
- W emulatorze architektury RISC-V dodano emulację płyt Microblaze V, CPU Ascalon i CPU RV64 Xiangshan Nanhu. Wprowadzono wsparcie dla rozszerzeń zestawu instrukcji ‘svukte’, ‘ssstateen’, ‘smrnmi’, ‘smdbltrp’/’ssdbltrp’, ‘supm’, ‘sspm’, a także tagów translacji IOMMU i urządzeń riscv-iommu-sys.
- W emulatorze architektury HPPA zapewniono emulację płyt Diva GSP BMC. Zaktualizowano firmware SeaBIOS-hppa do wersji 18. Zwiększono szybkość translacji. Ulepszono kod do resetowania wirtualnego CPU. Na systemach 64-bitowych zapewniono emulację konfiguracji z pamięcią do 256 GB.
- W emulatorze architektury LoongArch dodano wsparcie dla gorącego podłączania CPU. Zrealizowano parawirtualizowany IPI (inter-processor interrupt). Zapewniono śledzenie czasu oczekiwania na udostępnienie zasobów przez hypervisor. KVMDodano wsparcie dla wirtualnego routingu zewnętrznych przerwań (extioi).
- W emulatorze architektury s390x dodano wsparcie dla 17. generacji CPU mainframe i zrealizowano wsparcie dla virtio-mem. Dla zwiększenia wydajności dodano możliwość współdziałania z urządzeniami PCI z pominięciem IOMMU.
Źródło: opennet.ru
