QEMU 5.2 przybywa z ulepszeniami dla RISC-V, zmianą kompilatora i nie tylko

QEMU

Została wydana wersja QEMU 5.2, która zawiera ponad 3200 zmian wprowadzonych przez 216 programistów , w tym obsługę migracji na żywo dla RISC-V, eksperymentalną obsługę hiperwizora RISC-V, obsługę większej liczby płyt i wiele więcej.

Dla tych, którzy nie znają QEMU – jest to emulator umożliwiający uruchomienie programu stworzonego dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze , np. uruchomienie aplikacji ARM na komputerze zgodnym z architekturą x86.

W trybie wirtualizacji w QEMU wydajność działania kodu w izolowanym środowisku jest zbliżona do systemu sprzętowego dzięki bezpośredniemu wykonywaniu instrukcji na procesorze i wykorzystaniu hiperwizora Xen lub modułu KVM.

Główne nowości QEMU 5.2

Zmienił się system kompilacji; kompilacja QEMU wymaga teraz zainstalowania pakietu narzędzi Ninja.

Dodano obsługę sterownika urządzenia blokowego umożliwiającą wykorzystanie procesu qemu-storage-daemon w tle jako zaplecza dla vhost-user-blk, a także nowe polecenie QMP „block-export-add”, które zastępuje polecenie „nbd-server-add” i zapewnia obsługę „qemu-storage-daemon”.

W obrazach qcow2 dodano obsługę rozszerzonych rejestrów L2, co umożliwia alokację przestrzeni przez niekompletne grupy (podklastry). Aby włączyć rejestr L2 podczas tworzenia obrazu, należy określić opcję „extended_l2 = on”.

Na uwagę zasługuje również ulepszone wsparcie dla qemu jako klienta NBD, ponieważ zmniejsza ono liczbę sytuacji powodujących przekroczenie limitu czasu podczas wymiany danych przez sieć, co powoduje blokowanie gości. Qemu-nbd umożliwia określenie wielu opcji „-B name”, aby określić wiele brudnych map bitowych jednocześnie.

Kolejną ważną zmianą jest nowy, wysokowydajny tryb migracji z szyfrowanym transferem danych za pomocą TLS i multifd. Domyślny limit przepustowości migracji został zwiększony do 1 Gb/s.

Dodano parametr migracji „block-bitmap-mapping”, który umożliwia bardziej szczegółową kontrolę nad tym, które mapy bitowe są przesyłane podczas migracji. Parametr ten działa nawet wtedy, gdy nazwy hostów różnią się od nazw hostów źródłowych po stronie odbiorczej.

Ponadto dodano nowe wywołania „calc-dirty-rate” i „query-dirty-rate” w celu przewidywania częstotliwości aktualizacji podczas migracji, biorąc pod uwagę obciążenie związane z operacjami w pamięci RAM.

Znajdziemy tam również wsparcie dla płyt mp2-an386, mp2-an500, raspi3ap (Raspberry Pi 3 model A+), raspi0 (Raspberry Pi Zero), raspi1ap (Raspberry Pi A+) i npcm750-evb/quanta-gsj.

W przypadku architektury AArch32 zaimplementowano obsługę rozszerzeń ARMv8.2 FEAT_FP16 (punkt flotacji o średniej precyzji).

Na koniec wspomniano o nowych opcjach virtiofsd, które umożliwiają sterowanie renderowaniem rozszerzonych nazw atrybutów xattr w systemie gościa, oddzielne łączenie partycji z różnymi punktami montowania w systemie hosta, a także określanie mechanizmu izolacji piaskownicy, który jest alternatywą dla pivot_root.

Oraz wsparcie migracji na żywo do emulatora architektury RISC-V, a także eksperymentalne wsparcie hiperwizora dla RISC-V zaktualizowanego do wersji 0.6.1. Dodano obsługę gniazd NUMA w systemach virt/Spike.

Inne istotne zmiany w tej nowej wersji obejmują:

  • Polecenia guest-get-devices, guest-get-disks i guest-ssh- {get, add-remove} -authorized-keys zostały dodane do agenta gościa QEMU (qemu-ga).
  • Dodano obsługę rozliczania opartego na czasie kvm-steal.
  • Emulator architektury HPPA obsługuje uruchamianie NetBSD i bardzo starych dystrybucji Linuksa, takich jak Debian 0.5 i 0.6.1.
  • Emulator architektury PowerPC ma ulepszoną obsługę odstępów zdefiniowanych przez użytkownika dla topologii NUMA.
  • Emulator architektury s390 dla KVM dodał obsługę instrukcji diagnostycznych 0x318.
  • Klasyczny generator kodu TCG (Tiny Code Generator) implementuje obsługę dodatkowych instrukcji z14.
  • Na urządzeniach vfio-pci zamiast emulowanych funkcji podawane są informacje o rzeczywistych funkcjach komputera.
  • Emulator architektury Xtensa dodaje obsługę koprocesora DFPU z opkodami zmiennoprzecinkowymi o pojedynczej i podwójnej precyzji.

Dodaj jako preferowane źródło w Google