Servicios Linux

Principal
Quienes somos
Servicios
Beowulf
Soporte a profesionales
Clientes
Contáctenos

Clusters Beowulf

Construir un cluster beowulf es mucho más que apilar un montón de equipos, cada uno con su disco duro y copia del sistema operativo, y unirlos mediante una red Ethernet.

En la compra de un cluster beowulf es necesario tener en cuenta distintos factores:

  • Procesador a elegir: Pentium IV, Athlon 32, Athlon 64, Itanium
  • Cantidad de memoria por nodo
  • Tecnología de interconexión: Ethernet, Dolphin o Myrinet
  • Compiladores: GNU, Intel, Portland Group, Absoft...
  • Máquinas con o sin disco
  • Sistema operativo: Parches para el kernel, uso de Kerberos, NIS, LDAP...
  • Costes de paralelización del código.

Procesadores

Adquirir el último procesador del mercado puede que proporcione la mayor potencia, pero no la mejor relación precio/potencia, y puesto que vamos a poner muchos procesadores estaremos más interesados en la potencia por Euro que en la potencia por procesador.

Las relación precio/potencia va a depender de varios factores particulares de cada aplicación, como por ejemplo:

  • Tamaño característico de los bloques de memoria: Si el procesador trabaja normalmente con la caché, puede que no afecte demasiado el ancho de banda con la memoria principal. En ocasiones el tamaño de la caché puede ser determinante, pero en otras no influye en absoluto (por ejemplo, una aplicación puede necesitar 256KB de caché, y rendirá igual con 512KB que con 1MB)
  • Uso de la FPU: Dependiendo del uso que haga de la FPU la presencia de unidades en paralelo puede incrementar el rendimiento o no.
  • Compiladores: Ciertos compiladores mejoran el rendimiento en unos procesadores y en otros no, pero en ocasiones la aplicación estará escrita para un compilador y no podremos cambiarlo. La elección del compilador en muchas ocasiones condiciona la elección de procesador.
  • Necesidades de RAM: En ocasiones la necesidad de manejar grandes cantidades de RAM nos limitará la capacidad para elegir procesador.
En general la única forma de elegir el mejor procesador es el benchmarking sobre nuestra propia aplicación.

Memoria por nodo

En ocasiones se afirma que la elección de la memoria no es importante puesto que esta es muy barata... esto es cierto hasta cierta cantidad de memoria por nodo.

Hay aplicaciones que están limitadas sólo por la capacidad de cálculo de la CPU, y basta con poner 1GB de RAM por nodo (que normalmente representa un 20% del coste del resto del nodo) para cubrir nuestras necesidades. Pero en otras ocasiones la aplicación está limitada por la cantidad de RAM disponible.

Cuando superamos 2GB por nodo el coste de la memoria puede llegar a suponer más del 50% del coste total del cluster. En estos casos un análisis cuidadoso de las necesidades de RAM por nodo y del número de nodos es determinante en la rentabilidad del cluster.

Tecnologías de interconexión

La mayor parte de los Beowulf instalados utilizan Ethernet 1Gb como tecnología de interconexión, tiene un buen ancho de banda y, sobre todo, es barata: en un cluster con otro tipo de conexiones, la red puede llegar a suponer el 50% del coste.

El problema con la tecnología Ethernet es su pobre latencia. En muchas ocasiones podremos paralelizar nuestra aplicación de forma que no dependa de la latencia de la conexión y utilizar Ethernet, pero en otros casos la latencia del medio será determinante en el rendimiento de nuestra aplicación y deberemos utilizar tecnologías de baja latencia.

Las consideraciones para saber si una aplicación requerirá tecnología de baja latencia o no son, fundamentalmente, de caracter numérico. Normalmente la resolución de métodos implícitos requerirá conexiones de baja latencia o modificaciones profundas de la aplicación.

El personal de Servicios Linux tiene una amplia experiencia, no sólo en sistemas, sino también en métodos numéricos, por lo que podrá ayudarle a decidir cuando necesitará conexiones de baja latencia o a reescribir sus aplicaciones para no necesitarlas.

Compiladores

Actualmente se utilizan fundamentalmente dos compiladores en Cluster Beowulf: GNU e Intel.

El compilador de Intel mejora notablemente el rendimiento, tanto en procesadores Intel como en procesadores AMD, y proporciona soporte para C, C++ y Fortran.

Portland Group vende un meritorio conjunto de compiladores que destacan por su paralelizador para sistemas SMP (es decir, paraleliza para utilizar las dos CPU de un sistema dual, pero no paraleliza para Beowulf, pese a que su publicidad sea ambigua en este aspecto)

Pese a esto hay ocasiones en que un código se ha desarrollado para un compilador y los costes de migración superan las ventajas que se pueden obtener en el cambio.

La elección de compilador está fuertemente ligada a la elección de CPU y, al igual que ésta, sólo puede realizarse mediante la juiciosa aplicación de benchmarking.

Administración del sistema operativo

La forma más habitual de construir un Beowulf es adquirir N equipos (donde N suele ser de la forma 2i), instalar N copias del sistema operativo y ponerlo en producción.

Si bien esta tecnología permite que cualquiera construya un Cluster, tiene algunos inconvenientes a medio y largo plazo:

  • Actualizaciones de software: Es necesario realizarlas N veces en lugar de una.
  • Administración de usuarios: Es necesario crear los usuarios en todos los nodos del cluster.
  • Administración del sistema: Cada vez que se modifica la configuración del sistema se debe cambiar en todos los nodos del cluster.
  • Fallos de disco: Lo que más falla en cualquier sistema informático son las partes mecánicas. Cuando tenemos muchos nodos, cada uno con su sistema operativo, los fallos de discos son constantes.

En clusters con 8 o 16 nodos, este sistema es tedioso y tendente a errores. En clusters más grandes termina siendo una pesadilla de administración, que requiere un número de horas de administrador desproporcionado, además de frecuentes y largas paradas para mantenimiento.

Servicios Linux tiene amplia experiencia en la instalación de sistemas basados en máquinas sin disco, que eliminan los fallos de los discos individuales y eliminan los problemas de administración, presentándose al administrador como un sólo sistema. En caso de requerir sistemas con disco, le aconsejaremos sobre la mejor combinación de tecnología para conseguir que administrar su Beowulf sea tan fácil como administrar una estación de trabajo.

Adaptación de códigos

Es habitual como después de realizar una importante inversión en la adquisición de un Beowulf, se descubra que los programas que se querían utilizar no funcionan.

Para evitar esto y antes de tomar una decisión de inversión en un sistema Beowulf es importante tener en cuenta que:

Las aplicaciones requieren modificaciones profundas para aprovechar la potencia de un Cluster Beowulf

Las aplicaciones deben ser paralelizadas para correr en una arquitectura de memoria distribuída. En este momento no existe en el mercado ningún sistema automático de paralelización para este tipo de arquitecturas, ni sobre ejecutables, ni sobre código fuente, además el estado de la investigación sobre el tema no permite augurar que tal sistema vaya a existir en los próximos años. Esto quiere decir que las aplicaciones deben ser adaptadas manualmente para poder aprovechar la potencia extra que proporciona un cluster. La opción de paralelización/vectorización automática de los compiladores de Cray, Convex o SGI no existe en Beowulf.

Si la finalidad del cluster es ejecutar un paquete de software comercial, deberemos asegurarnos que el fabricante puede proporcionarnos una versión adaptada a Beowulf, y deberemos tener en cuenta el coste de esta versión adaptada en el coste total del sistema.

Si por el contrario vamos a utilizar un código de cálculo del que tenemos el código fuente, deberemos tener en cuenta los costes de adaptación de dicho código, que normalmente superarán el coste del propio Cluster.

Nuestra propuesta

Servicios Linux cuenta no sólo con especialistas en sistemas sino además con personal con amplia experiencia en el diseño y construcción de códigos numéricos (elementos finitos, volúmenes finitos, espectrales...), así como en la optimización y paralelización de dichos códigos.

En Servicios Linux no vendemos hardware, nosotros le asesoraremos sobre la conveniencia de adquirir un cluster, le ayudaremos a diseñarlo y a dimensionarlo, le asesoraremos en la compra del hardware y software, le instalaremos un sistema operativo fácil y sencillo de administrar, optimizaremos el rendimiento del hardware y del SO y le entregaremos su Beowulf listo para entrar en producción.

Una vez puesto en servicio podemos paralelizar sus códigos de cálculo o enseñar a su personal las técnicas de programación necesarias. Además podremos administrar su sistema de forma remota.

transparent