QEMU 5.2 llega con mejoras para RISC-V, cambio de compilador y mas
QEMU 5.2 ya fue liberado y en esta nueva versión, en la preparación se realizaron más de 3200 cambios de 216 desarrolladores de los cuales podremos encontrar el soporte de migración en vivo para RISC-V, así como también soporte experimental para el hypervisor de RISC-V, soporte para más placas y mucho más.
Para quienes desconocen de QEMU, deben saber que es un emulador que permite ejecutar un programa creado para una plataforma de hardware en un sistema con una arquitectura completamente diferente, por ejemplo, ejecutar una aplicación para ARM en una PC compatible con x86.
En el modo de virtualización en QEMU, el rendimiento de ejecutar código en un entorno aislado está cerca del sistema de hardware debido a la ejecución directa de instrucciones en la CPU y el uso del hipervisor Xen o el módulo KVM.
Principales novedades de QEMU 5.2
El sistema de compilación ha cambiado, compilar QEMU ahora requiere que se instale el kit de herramientas ninja.
Se agregó soporte para el controlador de dispositivo de bloque para usar el proceso qemu-storage-daemon en segundo plano como backend para vhost-user-blk, asi como tambien un nuevo comando QMP ‘block-export-add’, que reemplaza el comando ‘nbd-server-add’ y brinda soporte para ‘qemu-storage-daemon’.
Para las imágenes qcow2, se ha agregado soporte para registros L2 extendidos, lo que permite que el espacio sea asignado por grupos incompletos (subclusters). Para habilitar L2 al crear una imagen, debe especificar la opción «extended_l2 = on».
También, se destaca el soporte mejorado para el uso de qemu como un cliente NBD, pues se redujo el número de situaciones que conducen a tiempos de espera cuando se intercambian datos a través de la red, lo que provoca bloqueos de invitados. Qemu-nbd proporciona la capacidad de especificar múltiples opciones de ‘-B nombre’ para especificar múltiples mapas de bits sucios a la vez.
Otro cambio importante, es el nuevo modo de migración de alto rendimiento con transferencia de datos cifrados mediante TLS y multifd. El límite de ancho de banda de migración predeterminado se ha aumentado a 1 Gbps.
Se agregó el parámetro de migración ‘block-bitmap-mapping’, que permite un control más detallado sobre qué mapas de bits se transferirán durante la migración. El parámetro funciona incluso si los nombres de host difieren de la fuente en el extremo receptor.
Además, se agregaron nuevas llamadas ‘calc-dirty-rate’ y ‘query-dirty-rate’ para predecir la tasa de actualizaciones durante la migración, teniendo en cuenta la carga asociada con las operaciones en la RAM.
También, podremos encontrar el soporte para las placas mp2-an386, mp2-an500, raspi3ap (Raspberry Pi 3 modelo A+), raspi0 (Raspberry Pi Zero), raspi1ap (Raspberry Pi A+) y npcm750-evb/quanta-gsj.
Para la arquitectura AArch32, se implementa el soporte para las extensiones ARMv8.2 FEAT_FP16 (punto flaoting de media precisión).
Finalmente también se mencionan nuevas opciones a virtiofsd para controlar la representación de los nombres de atributos xattr extendidos en el sistema invitado, la conexión separada de particiones con diferentes puntos de montaje en el sistema host y también para especificar un mecanismo de aislamiento de espacio aislado que es una alternativa a pivot_root.
Y soporte de migración en vivo al emulador de arquitectura RISC-V, así como también soporte de hipervisor experimental para RISC-V actualizado a la versión 0.6.1. Se agregó soporte para sockets NUMA en sistemas virt/Spike.
De los demás cambios que se destacan de esta nueva versión:
- Se agregaron los comandos guest-get-devices, guest-get-disks y guest-ssh- {get, add-remove} -authorized-keys al agente invitado de QEMU (qemu-ga).
- Se agregó soporte para contabilidad basada en kvm-steal-time.
- El emulador de arquitectura HPPA admite el arranque de NetBSD y distribuciones de Linux muy antiguas, como Debian 0.5 y 0.6.1.
- El emulador de arquitectura PowerPC ha mejorado la compatibilidad con el espaciado definido por el usuario para la topología NUMA.
- El emulador de arquitectura s390 para KVM agregó soporte para las instrucciones de diagnóstico 0x318.
- El generador de código clásico TCG (Tiny Code Generator) implementa soporte para instrucciones adicionales z14.
- En los dispositivos vfio-pci, se proporciona información sobre la funcionalidad del equipo real en lugar de las características emuladas.
- El emulador de arquitectura Xtensa agrega soporte para el coprocesador DFPU con códigos de operación de punto flotante de precisión simple y doble.