Zaprezentowano wydanie projektu QEMU 10.0.0. Jako emulator QEMU pozwala na uruchomienie programu skompilowanego dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, np. uruchomienie aplikacji ARM na komputerze PC zgodnym z x86. W trybie wirtualizacji w QEMU wydajność wykonywania kodu w izolowanym środowisku jest zbliżona do systemu sprzętowego ze względu na bezpośrednie wykonywanie instrukcji na procesorze i wykorzystanie hiperwizora Xen lub modułu KVM w systemie Linux lub modułu NVMM w systemie Linux NetBSD.
Projekt został pierwotnie stworzony przez Fabrice'a Bellarda, aby umożliwić uruchamianie plików wykonywalnych Linuksa zbudowanych dla platformy x86 na architekturach innych niż x86. Przez lata rozwoju dodano pełną obsługę emulacji dla 14 architektur sprzętowych, liczba emulowanych urządzeń sprzętowych przekroczyła 400. W ramach przygotowań do wersji 10.0 dokonano ponad 2800 zmian od 211 programistów.
Kluczowe ulepszenia dodane w QEMU 10.0:
- Sterownik virtio-scsi zapewnia wirtualny kontroler SCSI (karta hosta SCSI) dla maszyna wirtualnaDodano obsługę wielopoziomowego systemu kolejkowania (multiqueue), umożliwiającą rozdzielenie kolejek dla różnych urządzeń blokowych w celu obsługi dostępu wielowątkowego w systemach wielordzeniowych (różne kolejki dla jednego dysku mogą być przetwarzane przez różne wątki wejścia/wyjścia). W porównaniu ze sterownikiem wirtualnego urządzenia blokowego (virtio-blk), wirtualny kontroler SCSI jest nieco wolniejszy pod względem wydajności, ale pozwala na obsługę ponad 28 dysków.
- Technologia VFIO (Virtual Function I/O) zapewnia ulepszoną obsługę przejścia IGD (Integrated Graphics Device) dla zintegrowanych układów GPU stosowanych w procesorach Intel 11. (Rocket Lake) i 12. (Alder Lake) generacji. Dodano obsługę starszych procesorów graficznych ATI (x550). Wprowadzono podstawowe wsparcie dla PCI PM (Power Management).
- Dokumentacja protokołu QEMU Machine Protocol (QMP), który umożliwia aplikacjom sterowanie QEMU, została znacząco zmieniona i rozszerzona.
- Dodano nowy tryb migracji na żywo „cpr-transfer” (CheckPoint i ponowne uruchomienie), umożliwiający przeniesienie systemu gościa do nowej instancji QEMU uruchomionej na tym samym hoście. Tryb ten minimalizuje czas zawieszenia poprzez mapowanie pamięci systemu gościa w nowej wirtualnej przestrzeni adresowej QEMU bez kopiowania zawartości.
- Dodano urządzenia graficzne „apple-gfx-pci” i „apple-gfx-mmio”, które wykorzystują infrastrukturę ParavirtualizedGraphics udostępnioną w systemie macOS w celu sprzętowego przyspieszenia grafiki w systemach gości. Pierwszy sterownik przeznaczony jest do użytku w urządzeniach x86-64, drugi zaś do ARM64.
- Emulator architektury x86 obsługuje teraz modele procesorów Intel Xeon Clearwater Forest i Sierra Forest v2. Przyspieszono emulację instrukcji manipulacji danymi łańcuchowymi.
- Emulator architektury ARM obsługuje teraz płyty ewaluacyjne NPCM8445 i i.MX 8M Plus EVK. Dodano emulację rozszerzeń FEAT_AFP, FEAT_RPRES i FEAT_XS, a także fizycznych i wirtualnych timerów EL2. Wycofano obsługę procesorów Arm PXA2xx i emulacji instrukcji iwMMXt.
- Emulator architektury RISC-V umożliwia emulację płyt Microblaze V, procesorów Ascalon i RV64 Xiangshan Nanhu. Dodano obsługę rozszerzeń architektury zestawu poleceń „svukte”, „ssstateen”, „smrnmi”, „smdbltrp”/„ssdbltrp”, „supm”, „sspm”, a także znaczników translacji IOMMU i urządzeń riscv-iommu-sys.
- Emulator architektury HPPA umożliwia emulację płyt Diva GSP BMC. Oprogramowanie układowe SeaBIOS-hppa zostało zaktualizowane do wersji 18. Zwiększono prędkość transmisji. Ulepszony kod resetowania wirtualnego procesora. W systemach 64-bitowych zapewniona jest emulacja konfiguracji z rozmiarem pamięci do 256 GB.
- Emulator architektury LoongArch obsługuje teraz podłączanie procesora na gorąco. Zaimplementowano parawirtualizowany interfejs IPI (inter-processor interrupt). Zaimplementowano śledzenie limitu czasu alokacji zasobów hypervisora. KVMDodano obsługę wirtualnego routingu przerwań zewnętrznych (extioi).
- Emulator architektury s390x dodaje obsługę procesorów mainframe 17. generacji i implementuje obsługę virtio-mem. Aby poprawić wydajność, dodano możliwość interakcji z urządzeniami PCI z pominięciem modułu IOMMU.
Źródło: opennet.ru
