Qué es NUMA y cómo afecta al rendimiento en VMware y Proxmox

NUMA es una arquitectura clave en servidores modernos, pero mucha gente no tiene claro qué es NUMA ni cómo afecta realmente al rendimiento.

El problema es que cuando empiezan a aparecer cuellos de botella o rendimientos raros en máquinas virtuales, NUMA deja de ser teoría y pasa a importar bastante.

En este artículo te explico qué es NUMA, cómo funciona y por qué conviene tenerlo en cuenta si trabajas con virtualización.

Si te has preguntado qué es NUMA y por qué aparece tanto en VMware, Proxmox o ESXi, aquí tienes la explicación clara.

qué es numa vmware proxmox

Cuándo debes preocuparte por NUMA

En la práctica, NUMA empieza a importar cuando trabajas con:

– máquinas virtuales grandes (muchas vCPU o mucha RAM)
– bases de datos o aplicaciones intensivas en memoria
– hosts con varios sockets

Si estás en un entorno pequeño, probablemente no lo notes. Pero en cuanto escalas, NUMA puede marcar la diferencia en el rendimiento.

Problemas típicos relacionados con NUMA

Algunos problemas habituales cuando NUMA no está bien gestionado:

– máquinas virtuales con rendimiento irregular
– latencias altas sin motivo claro
– consumo de CPU elevado sin carga real
– diferencias de rendimiento entre VMs similares

En muchos casos, el problema no es la máquina virtual, sino cómo está distribuida la memoria y CPU entre nodos NUMA.

Qué es NUMA y por qué importa en virtualización

NUMA es una arquitectura de memoria en la que cada procesador o nodo tiene acceso más rápido a su memoria local que a la memoria de otros nodos del sistema.

En entornos de virtualización como VMware o Proxmox, esto puede afectar directamente al rendimiento de las máquinas virtuales si la asignación de CPU y memoria no está bien ajustada.

Qué es NUMA en VMware y Proxmox

En entornos de virtualización como VMware o Proxmox, NUMA influye directamente en cómo se asignan CPU y memoria a las máquinas virtuales.

Beneficios de NUMA

NUMA ofrece varios beneficios, particularmente para cargas de trabajo que consumen mucha memoria. Al distribuir la memoria y la potencia de procesamiento entre múltiples nodos, NUMA reduce las limitaciones del ancho de banda de la memoria y mejora el rendimiento general. Proporciona una solución rentable en comparación con la construcción de buses de datos de alta velocidad y ofrece escalabilidad para sistemas con una gran cantidad de procesadores.

Cómo gestiona ESXi NUMA

En entornos VMware, ESXi gestiona automáticamente NUMA para optimizar el rendimiento de las máquinas virtuales, aunque en algunos casos es importante entender cómo funciona internamente.

Nodos de inicio y ubicación inicial

Cuando se enciende una máquina virtual, ESXi le asigna un «nodo principal». Este nodo determina los procesadores y las asignaciones de memoria para la máquina virtual. La máquina virtual se ejecuta exclusivamente en los procesadores dentro de su nodo principal y la memoria asignada también proviene del nodo principal.

Equilibrio de carga dinámico y migración de páginas

ESXi implementa un algoritmo de reequilibrio dinámico que combina el enfoque tradicional de ubicación inicial con exámenes de carga periódicos. De forma predeterminada, cada dos segundos, el sistema evalúa las cargas de los nodos y decide si es necesario reequilibrar la carga. Este proceso implica mover máquinas virtuales de un nodo a otro para optimizar el rendimiento.

Uso compartido de páginas transparente optimizado para NUMA

Las cargas de trabajo de ESXi a menudo presentan oportunidades para compartir memoria entre máquinas virtuales. Transparent Page Sharing (TPS) es una técnica de optimización que identifica páginas de memoria duplicadas y permite que varias máquinas virtuales las compartan. Esta característica está particularmente optimizada para entornos NUMA, lo que mejora aún más la utilización y el rendimiento de la memoria.

Gestión de recursos con NUMA

Diferentes tipos de arquitectura NUMA

Las arquitecturas NUMA vienen en varias formas, incluidos sistemas tradicionales como IBM Enterprise X-Architecture y sistemas modernos con soporte NUMA integrado para procesadores Intel y AMD. La configuración de la BIOS puede activar o desactivar el comportamiento NUMA, según la configuración específica del servidor.

Activar y desactivar el comportamiento NUMA

En la configuración de la BIOS, los administradores pueden activar o desactivar el comportamiento NUMA según sus requisitos específicos. Por ejemplo, los servidores HP Proliant basados en AMD Opteron permiten la desactivación de NUMA habilitando el entrelazado de nodos en la BIOS. Cuando se activa NUMA, la BIOS genera una tabla de asignación de recursos del sistema (SRAT) utilizada por ESXi para optimizaciones.

Modificación del comportamiento de optimización de NUMA

ESXi brinda a los administradores control sobre la ubicación de NUMA a través de varias opciones. Estas opciones incluyen Afinidad de nodo NUMA, Afinidad de CPU y Afinidad de memoria. Los administradores pueden especificar los nodos en los que se debe programar una máquina virtual, limitar las CPU virtuales a procesadores específicos o asignar memoria solo en nodos designados.

Exposición de la topología NUMA virtual

En entornos con máquinas virtuales grandes, la topología NUMA virtual permite al sistema operativo invitado aprovechar mejor los recursos del host y mejorar el rendimiento.

Rendimiento mejorado con sistema operativo invitado y optimizaciones de aplicaciones

vSphere admite la exposición de la topología NUMA virtual a sistemas operativos invitados, lo que les permite optimizar el rendimiento en función de consideraciones NUMA. Esta mejora facilita una mejor utilización de los recursos de hardware y mejora el rendimiento de las aplicaciones en entornos virtualizados.

Requisitos de hardware y software

La topología NUMA virtual está disponible para máquinas virtuales de versión 8 de hardware y se activa de forma predeterminada cuando la cantidad de CPU virtuales excede ocho. Proporciona una característica poderosa para optimizar el rendimiento en cargas de trabajo con uso intensivo de memoria.

Activación de la topología NUMA virtual

Cuando se enciende una máquina virtual activada por NUMA, su topología NUMA virtual se basa en la topología NUMA del host físico subyacente. Una vez inicializada, la topología NUMA virtual permanece sin cambios a menos que se modifique el recuento de vCPU de la máquina virtual. Es importante tener en cuenta que la topología NUMA virtual no considera la memoria configurada para una máquina virtual.

Influencia del recuento de CPU virtual en la topología NUMA virtual

La topología NUMA virtual no se ve influenciada por la cantidad de sockets o núcleos virtuales por socket configurado para una máquina virtual. Sin embargo, las opciones de configuración avanzadas permiten influir manualmente sobre la topología NUMA virtual, lo que proporciona un mayor control sobre la asignación de recursos y las optimizaciones del rendimiento.

Anulación de la topología NUMA virtual

En algunos escenarios concretos, puede ser necesario ajustar manualmente el comportamiento de NUMA para optimizar el rendimiento de ciertas cargas de trabajo.

Configuración manual de controles NUMA virtuales

En determinados escenarios, es posible que necesitemos anular la topología NUMA virtual para cumplir requisitos específicos. ESXi permite la configuración manual de controles NUMA virtuales, lo que nos permite ajustar la asignación de recursos y optimizar el rendimiento en función de las características de la carga de trabajo.

Impacto en el desempeño y la asignación de recursos

Es importante considerar el impacto de la colocación manual de NUMA en los algoritmos de administración de recursos de ESXi. La colocación manual puede interferir con la distribución justa de los recursos del procesador en todo el sistema, lo que podría provocar desequilibrios de recursos. Debemos evaluar cuidadosamente su carga de trabajo y las características del sistema antes de anular la topología NUMA virtual.

Especificación de controles NUMA

Afinidad del nodo NUMA

Configurar NUMA Node Affinity nos permite programar una máquina virtual solo en nodos específicos, lo que limita la asignación de CPU virtuales y memoria a esos nodos. Este control aún permite la administración de NUMA pero restringe la máquina virtual a los nodos designados.

Afinidad de CPU

CPU Affinity es otro control NUMA que limita una máquina virtual para usar solo los procesadores especificados en la afinidad. Al asociar CPU virtuales con procesadores específicos, podemos evitar la migración de CPU entre nodos NUMA, mejorando el rendimiento de las aplicaciones y la asignación de recursos.

Afinidad de memoria

Memory Affinity especifica que todas las asignaciones de memoria futuras en una máquina virtual deben usar páginas asociadas con nodos NUMA específicos. Este control manual de afinidad de memoria mejora la asignación y el acceso a la memoria, lo que garantiza un rendimiento óptimo para cargas de trabajo con uso intensivo de memoria.

Gestión de máquinas virtuales con CPU y afinidades de memoria

Cuando se establecen afinidades de CPU o memoria, NUMA deja de administrar una máquina virtual. Si se requiere administración de NUMA, podemos eliminar las restricciones de afinidad de memoria y CPU, lo que permite a ESXi optimizar la asignación de recursos en función de consideraciones de NUMA.

Optimización del rendimiento con ubicación explícita

En determinados escenarios, ajustar manualmente la ubicación de CPU y memoria puede mejorar el rendimiento de las máquinas virtuales.

Cargas de trabajo que consumen mucha memoria y grandes conjuntos de datos

Para máquinas virtuales que ejecutan cargas de trabajo con uso intensivo de memoria, como bases de datos en memoria o aplicaciones informáticas científicas con grandes conjuntos de datos, la ubicación explícita de la CPU y la memoria puede optimizar el rendimiento. Al especificar las ubicaciones de NUMA manualmente, podemos garantizar una utilización eficiente de los recursos y maximizar el rendimiento de las aplicaciones.

Cargas de trabajo simples e inmutables

En escenarios en los que se sabe que la carga de trabajo del sistema es simple e invariable, la optimización manual de las ubicaciones de NUMA puede resultar beneficiosa. Por ejemplo, un sistema de ocho procesadores que ejecuta ocho máquinas virtuales con cargas de trabajo similares se puede optimizar fácilmente asignando explícitamente afinidades de CPU y memoria.

Consideraciones para la colocación manual de NUMA

Impacto en los algoritmos de gestión de recursos de ESXi

Es fundamental considerar las implicaciones de la colocación manual de NUMA en los algoritmos de administración de recursos de ESXi. Al colocar manualmente máquinas virtuales con cargas de trabajo intensivas en procesadores en nodos específicos y dejar otros escasamente poblados, pueden ocurrir desequilibrios de recursos que afectan el rendimiento general del sistema.

Equilibrio de recursos del procesador entre nodos

Al colocar manualmente máquinas virtuales con controles NUMA, debemos garantizar una distribución justa de los recursos del procesador entre los nodos. Los desequilibrios en la asignación del procesador pueden provocar un rendimiento y una utilización de recursos subóptimos. La planificación y evaluación cuidadosas de las características de la carga de trabajo son esenciales para lograr un rendimiento óptimo.

Fijar CPU virtuales a procesadores fijos

Mejora del rendimiento de las aplicaciones con afinidad de CPU

Para mejorar el rendimiento de las aplicaciones que se ejecutan en máquinas virtuales, podemos anclar CPU virtuales a procesadores fijos. Al evitar la migración de la CPU entre nodos NUMA, la afinidad de la CPU garantiza un acceso constante a los recursos del procesador, optimizando el rendimiento de las aplicaciones y reduciendo la latencia potencial.

Asociación de memoria con nodos NUMA específicos

Mejora de la asignación de memoria con afinidad de memoria

Al asociar asignaciones de memoria con nodos NUMA específicos, podemos mejorar la asignación de memoria y los patrones de acceso. La afinidad de la memoria garantiza que las páginas de memoria se asignen desde nodos designados, lo que reduce la latencia y mejora el rendimiento general de la memoria.

Restringir la programación del nodo NUMA

Especificación de afinidad de nodo NUMA para máquinas virtuales

Con la afinidad de nodos NUMA, podemos asociar nodos NUMA específicos con máquinas virtuales, lo que limita la programación de CPU virtuales y memoria para esos nodos. Este control proporciona un control detallado sobre la asignación de recursos y puede optimizar el rendimiento para cargas de trabajo específicas.

Gestión eficaz con restricciones de afinidad de memoria y CPU

Al especificar afinidades de CPU o memoria para máquinas virtuales, la administración de NUMA sigue siendo efectiva. Sin embargo, las CPU virtuales solo se pueden programar en los nodos especificados en la afinidad del nodo NUMA, y la memoria solo se puede obtener de los nodos designados. La eliminación de las restricciones de afinidad de memoria y CPU permite a ESXi administrar dinámicamente NUMA para una asignación óptima de recursos.

Conclusión

NUMA es una tecnología que mejora el rendimiento de las máquinas virtuales optimizando el acceso a memoria en servidores modernos. Entender cómo funciona y cómo lo gestiona ESXi permite ajustar mejor los recursos y evitar problemas de rendimiento en entornos virtualizados.

Ejemplo práctico

Imagina un servidor con 2 sockets y varias máquinas virtuales.

Si una VM usa CPU de un nodo pero memoria de otro, el acceso será más lento.

Esto puede provocar pérdida de rendimiento aunque tengas recursos suficientes.

Por eso es importante entender cómo NUMA distribuye CPU y memoria en el host.

Documentación oficial de VMware sobre NUMA

Échale un ojo a este articulo de RVtools que también nos ayuda con los rendimientos

Espero que os sirva

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *