2 June 2023

¿Que es NUMA?

¿Porque es importante saber como funcionan las CPUs? Actualmente, estamos acostumbrados a utilizar una computadora que puede tener dos o más procesadores. Un procesador (CPU) tiene embebidos varios núcleos (cores) y cada núcleo puede tener varios hilos (en general, dos). Hoy en día, incluso los celulares pueden tener varios hilos ejecutando tareas en paralelo. Y en los últimos años casi todo el software (incluyendo el de oficina) se desarrolla para ejecutarse en ambientes multihilo (paralelos).

Desde el punto de vista comercial, el mercado más importante de equipos con más de dos procesadores está en el segmento de los servidores. Sin embargo, en un futuro muy cercano los celulares o cualquier dispositivo tendrá más de un procesador.

¿Cómo se conectan las CPUs? Generalmente, pensamos que si compramos un equipo de cómputo con dos o más CPUs estos están pegados. Es decir, que los hilos de todos los procesadores los puedo sumar y utilizarlos indiscriminadamente. Y esto es incorrecto, los CPUs se ubican en sockets separados. Y lo más importante, se interconectan por medio de un canal de alta velocidad para simular que estan pegados.

¿Que es NUMA? Por ejemplo, la figura 1 muestra como se ve una configuración típica multiprocesador de dos sockets. Podemos comenzar notando que cada CPU tiene su espacio de memoria RAM asignada. Este detalle es muy importante, porque ya nos indica que un hilo del CPU1 tiene que usar la interconexión para acceder a un dato que estuviera alojado en el espacio de memoria del CPU2. Es decir, cada procesador tiene sus propios canales de memoria.

Por cierto esta arquitectura (configuración) de dos o más procesadores se le llama NUMA (Non-uniform memory access). En este contexto, a cada procesador se le llama NUMA node ó “encapsulado”.

¿Que tipo de interconexiones existen? Cada fabricante (AMD®, INTEL®, QUALCOM®, etc.) tiene su tecnología de interconexión. Por ejemplo, actualmente INTEL® utiliza una tecnología que se llama QPI. Por otro lado, AMD utiliza una tecnología que se nombró Infinity Fabric. Los canales de interconexión tienen un ancho de banda ó velocidad de transferencia asociado. Los fabricantes pueden medir el rendimiento de las interconexiones en unidades de GBi/segundo o transferencias/segundo.

Como saben yo no soy fan de ningún fabricante. Cada fabricante tiene sus pros y contras. Sin embargo, si que es importante tener en cuenta estas consideraciones als momento de una compra o del despliegue de un proyecto.

¿Detalles en una MotherBoard? El diseño de la Motherboard es determinante para explotar la tecnología NUMA. En el ejemplo que abordamos en la figura X se consideran dos CPUs. Sin embargo, existen configuraciones de dos, cuatro y hasta ocho CPUs conectados en una sola motherboard.

¿Cuales son las configuracions NUMA? Las interconexiones en una configuración de cuatro procesadores es mas compleja. Los CPUs pueden estar interconectados: todos contra todos, en anillo, nones y pares, etc. Y ya no hablemos de las interconexiones de ocho procesadores.

¿Donde se aplica este conocimieinto? Este tipo de arquitecturas se venden en diferentes mercados. Por ejemplo, he configurado equipos de ocho procesadores para servir bases de datos críticas. En cómputo científico hemos utilizado servidores de cuatro procesadores para realizar cálculos de estructura electrónica en diseño de moleculas de novo.

¿De que me sirve saber esto? Frecuentemente mis clientes, corren sus programas por default. Es decir ejecutan un comando y listo. Se asume que el Sistema Operativo elejirá la mejor manera de correr un programa.

¿Herramientas importantes en LINUX para considerar este Hardware?

numa.png
Figura 1. Arquitectura NUMA para 2 procesadores. Observar que el CPU1 tiene un acceso remoto al espacio de memoria del CPU2. Esto puede derivar en un cuello de botella para aplicaciones computacionales exahustivas.
tags: Computación Tecnología