Microsoft ha montado un ordenador con casi 1.000 núcleos: ¿cómo lo ha conseguido?
Esta misma semana Microsoft ha lanzado un nuevo blog que se enfoca en los componentes internos del núcleo de Windows, lógicamente para programadores. Pero en dicho blog se ha descubierto varias características que hasta ahora no sabíamos ni de Windows ni por parte de Intel. A través de Hari Pulapaka, gerente de programas de Windows Core, se ha mostrado una captura del administrador de tareas donde figuran 896 núcleos.
La pregunta más obvia es ¿cómo Microsoft ha hecho esto posible?
En dicha captura se aprecian 896 núcleos y 1792 hilos de procesamiento en unos espectaculares 100 procesadores a nada menos que 2.5 GHz, pero ¿cómo es esto posible en un sistema?
Partiendo de la base de que las CPUs son Intel Xeon Platinum 8180, es decir, son CPUs de 28 núcleos y 56 hilos, con una simple división obtenemos la friolera de 32 sockets como bien pone el administrador de tareas.
Si conocemos un poco el tema de los Intel Xeon sabremos que lo máximo permitido por Intel son 8 sockets, o lo que es igual, una configuración máxima de 224 núcleos y 448 hilos. Para conectar dichas CPUs en un rack de 8 sockets utiliza 3 buses QPI para interconexión interna, de manera que cada socket tenga entrada y salida con tres socket colindantes.
Esta configuración es alucinante, pero sigue sin resolver el problema de conexión entre los 32 sockets. La pregunta se responde desde la propia Intel, donde hasta ahora no había mencionado que los fabricantes de equipos y sistemas pueden encadenar varios sistemas completos de 4 u 8 sockets bajo una única interfaz.
Con CPUs Intel y bajo estos entornos se usan los carriles PCIe para realizar las interconexiones entre sockets, de forma que solo pueden darse 3 maneras de afrontar su configuración:
- Controlando el Omni-Path.
- Controlando el Infiniband.
- Usandos FPGAs custom.
El problema son los accesos a memoria RAM
Esto presenta un problema de base, si un procesador necesita memoria y tiene que saltar dos veces entres sockets para poder acceder a ella, va a generar una pérdida de latencia bastante grande y el sistema perderá rendimiento si esto se repite continuamente.
La solución a dicho problema pasa por virtualizar la memoria en SSDs de alto rendimiento y paliar el problema con una pérdida de rendimiento mínima en cuanto a latencia, hasta que el procesador pueda acceder a los registros de uno o varios módulos libres.
Por desgracia este tipo de sistemas parece que está en desuso, ya que las CPUs cada vez tienen más núcleos y no son necesarias estas barbaridades mastodónticas como las que monta Microsoft. Solo parece que algunas infraestructuras de la nube están requiriendo estas configuraciones.
De hecho y según se ve en la captura de los 896 núcleos, la virtualización está activada, por lo que es posible que esta bestia de la computación forme parte de Azure, ya que este se alquila a contratistas de defensa u otras administraciones que requieren una potencia de cómputo muy alta.
De momento Microsoft no ha revelado más información de este super cruster de sockets, pero si es capaz de hacer esto quizás tenga algo mayor escondido bajo la manga.