ProcesadoresTutoriales

NUMA, la arquitectura de servidores para alto rendimiento en datacenters

Los sistemas NUMA eran conocidos en el mundo de servidores, el cual ha cambiado brutalmente en tan solo 10 años. Esta arquitectura fue adoptada en sistemas de alto rendimiento en los que la latencia del sistema era un factor clave.

Hablemos de diseño y arquitecturas de servidores, concretamente de la importancia de la división de memoria en almacenamiento, así como su acceso. Vamos a explicar qué son los sistemas NUMA y cómo funcionan para conocer la forma de trabajo del Acceso a la memoria no unificada.

Qué es NUMA (Non Uniform Memory Access)

sistemas numa

NUMA es una arquitectura enfocada a servidores, caracterizada por dividirse la memoria en almacenamiento estrecho y distante. Fue desarrollada en 1990 por Burruphs, Convex Computer, HISI, Silicon Graphics, EMC, SQS y Digital. Todas estas empresas acabaron en HP, Unisys, IBM e, incluso, Compaq.

El uso de la arquitectura NUMA se adoptó en sistemas similares a Linux, estando Windows NT en el objetivo. Decimos Windows NT porque en los 90 los sistemas operativos más potentes para servidores (los pocos que habían) eran Linux y Windows NT, básicamente.

Tened en cuenta que NUMA sustituía a la arquitectura SMP, caracterizada por tener un sistema en el que los accesos a la memoria se realizaban a través de un bus de memoria compartida. Al principio, funcionaba porque no había muchas CPUs, pero los tiempos avanzan y se quedó anticuada.

arquitectura SMP

Una CPU accede a la memoria a través del bus, pero cuando en la placa base hay varias CPUs, todas acceden a la memoria a través del mismo bus. Con NUMA, una CPU puede acceder a su memoria local más rápido que a la no local.

Aquí se produce un bottleneck o cuello de botella, así que NUMA es una arquitectura que elimina esa congestión o cola porque cada CPU tiene un acceso directo a los bancos de memoria a través de un bus individualizado. Aparte, hay un bus de memoria general cuyo propósito es el acceso a la memoria que está asignada a otra CPU.

Por tanto, tenemos un acceso a banco de memoria desde un bus general que usan todos los procesadores, mientras que hay otro acceso privado desde un bus privado e individualizado para cada CPU. Debéis tener en cuenta que los procesadores funcionan más rápido que la memoria que usan, por lo que es interesante limitar el número de accesos a la memoria con el fin de conseguir más rendimiento.

La tecnología y las necesidades evolucionan muy rápido, de modo que un S.O, aplicaciones o programas exigen más y más memoria. Por tanto, es necesario tener un sistema NUMA para separar la memoria de cada CPU, como para mover datos entre bancos de memoria a través de más hardware o software.

En términos de rendimiento, la diferencia entre sistemas NUMA de los que no lo son, puede suponer un impacto del doble o el triple de rendimiento. Esto lo decimos de forma genérica porque son datos extraídos de benchmarks, por lo que no es del todo fiable. Lo que sí podemos afirmar es que la diferencia de rendimiento es patente.

Ventajas y desventajas de NUMA

La primera es la escalabilidad, un aspecto muy tenido en cuenta por las empresas, siendo una de las razones por las que sustituyó a SMP. Otra de las ventajas es que reduce los cuellos de botella que se producían en SMP, y lo hace a través de la limitación de CPUs en un bus de memoria.

Los sistemas NUMA son más económicos y ofrecen un gran rendimiento, si los ponemos en contraposición de los sistemas UMA, por ejemplo. Esto es porque UMA exige la asignación de memoria a todas las CPUs de forma igualitaria, mientras que NUMA permite la interconexión a la memoria conectada a la CPU.

Como desventaja podemos destacar la latencia que se produce en la interconexión de memoria conectada a una CPU, sobre todo cuando la CPU está más lejos.

Cómo se configura un sistema NUMA

sistemas numa

Nos ha parecido interesante la idea de explicar con un ejemplo un servidor NUMA, así que vamos a partir de 2 CPUs con 16 núcleos y 128 GB de memoria RAM. Cada CPU controlará 64 GB, mientras que cada núcleo de las CPUs tendrán 4 GB asignados (128 entre 36 núcleos totales).

Diferenciaremos la memoria del nodo (8 GB) de la memoria total (128 GB), y esto lo hacemos de cara a entender el rendimiento de la máquina virtual. Cuando el tamaño de la máquina es menor o igual que el del nodo NUMA, vemos que la máquina puede mejorar el rendimiento.

Sin embargo, va a ser clave que la aplicación que usemos en la máquina virtual esté optimizada para NUMA, ¿por qué? Es necesario para dividir la máquina en nodos NUMA virtuales (vNUMA) para luego asignarse cada vNUMA a un nodo NUMA físico.

Hay que tener cuidado con aumentar la memoria física en el servidor porque hay que equilibrarla a toda la red de nodos NUMA que hay montada. Debe existir un equilibrio entre los módulos y la configuración de memoria entre los procesadores.

Mencionar que en las plataformas de servidores Intel Xeon o EPYC vemos cantidades ingentes de memoria RAM, pudiendo ver datacenters con máquinas con 512 GB de memoria RAM sin pestañear; de hecho, la configuración máxima de Windows Server 2016 es de 24 TB, habiendo variantes que soportan 256 TB.

Esto es ahora, pero dentro de varios años será superior porque DDR5 trae la configuración mínima de 32 GB por módulo, lo que aumenta una barbaridad las posibilidades de configuración. El límite de 128 GB que vemos en las plataformas de escritorio no será tan generoso, debiendo ampliarse en el futuro.

Te recomendamos las mejores memorias RAM del mercado

¿Conocíais esta arquitectura?

Ángel Aller

Graduado en Derecho y exabogado con Máster de Comercio internacional. Amante de la tecnología y geek inconformista. Leal a Alt+F4 como estilo de vida.
Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar Política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en [email protected]
Botón volver arriba