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.
|