16.5.3. Configuración de NUMA en una máquina virtual
Los siguientes métodos se pueden utilizar para configurar los ajustes de acceso no uniforme a la memoria (NUMA) de una máquina virtual (VM) en un host RHEL 8.
Requisitos previos
El host es una máquina compatible con NUMA. Para detectar si es así, utilice el comando
virsh nodeinfo
y consulte la líneaNUMA cell(s)
:# virsh nodeinfo CPU model: x86_64 CPU(s): 48 CPU frequency: 1200 MHz CPU socket(s): 1 Core(s) per socket: 12 Thread(s) per core: 2 NUMA cell(s): 2 Memory size: 67012964 KiB
Si el valor de la línea es 2 o mayor, el host es compatible con NUMA.
Procedimiento
Para facilitar su uso, puede establecer la configuración NUMA de una máquina virtual utilizando utilidades y servicios automatizados. Sin embargo, es más probable que la configuración manual de NUMA produzca una mejora significativa del rendimiento.
Automatic methods
Establezca la política NUMA de la máquina virtual en
Preferred
. Por ejemplo, para hacerlo para la VM testguest5:# virt-xml testguest5 --edit --vcpus placement=auto # virt-xml testguest5 --edit --numatune mode=preferred
Activar el equilibrio automático de NUMA en el host:
# echo 1 > /proc/sys/kernel/numa_balancing
Utilice el comando
numad
para alinear automáticamente la CPU de la VM con los recursos de memoria.# numad
Manual methods
Asigne hilos específicos de vCPU a una CPU de host específica o a un rango de CPUs. Esto también es posible en hosts y máquinas virtuales que no son NUMA, y se recomienda como método seguro para mejorar el rendimiento de las vCPU.
Por ejemplo, los siguientes comandos conectan los hilos vCPU 0 a 5 de la VM testguest6 a las CPUs del host 1, 3, 5, 7, 9 y 11, respectivamente:
# virsh vcpupin testguest6 0 1 # virsh vcpupin testguest6 1 3 # virsh vcpupin testguest6 2 5 # virsh vcpupin testguest6 3 7 # virsh vcpupin testguest6 4 9 # virsh vcpupin testguest6 5 11
A continuación, puede comprobar si se ha realizado con éxito:
# virsh vcpupin testguest6 VCPU CPU Affinity ---------------------- 0 1 1 3 2 5 3 7 4 9 5 11
Después de fijar los hilos de vCPU, también puede fijar los hilos de proceso de QEMU asociados con una VM específica a una CPU de host específica o a un rango de CPUs. Por ejemplo, los siguientes comandos fijan el hilo de proceso QEMU de testguest6 a las CPUs 13 y 15, y verifican que esto se ha realizado con éxito:
# virsh emulatorpin testguest6 13,15 # virsh emulatorpin testguest6 emulator: CPU Affinity ---------------------------------- *: 13,15
Por último, también puede especificar qué nodos NUMA del host se asignarán específicamente a una determinada VM. Esto puede mejorar el uso de la memoria del host por parte de la vCPU de la VM. Por ejemplo, los siguientes comandos configuran testguest6 para que utilice los nodos NUMA del host 3 a 5, y verifican que esto fue exitoso:
# virsh numatune testguest6 --nodeset 3-5 # virsh numatune testguest6
Recursos adicionales
- Tenga en cuenta que para obtener los mejores resultados de rendimiento, se recomienda utilizar todos los métodos de ajuste manual indicados anteriormente. Para ver un ejemplo de esta configuración, consulte Sección 16.5.4, “Ejemplo de escenario de ajuste de rendimiento de vCPU”.
-
Para ver la configuración NUMA actual de tu sistema, puedes utilizar la utilidad
numastat
. Para más detalles sobre el uso denumastat
, consulte Sección 16.7, “Herramientas de supervisión del rendimiento de las máquinas virtuales”. - Actualmente no es posible realizar el ajuste de NUMA en los hosts IBM Z. Para más información, consulte Sección 4.2, “En qué se diferencia la virtualización en IBM Z de la de AMD64 e Intel 64”.