> Hola gente, estoy tratando de ponerme a ver sobre clustering pero no
> se cual es "la opción correcta" quiero ver algo que posea Alta
> disponibilidad y balanceo de carga, leyendo un poco de aquí y de alla
> vi que openmosix hace estas dos cosas, pero el proyecto parece "medio
> muerto[1]" conviene usar este o alguien me recomienda otro?.
> 

Para responder a tu pregunta tengo que saber :

1) Ya tenés un software preparado para correr en clusters ?
2) Vás a escribir software para correr en clusters ?

Dependiendo de tus respuesta, las mías van a ser :

1) Si ya tenés software para correr en cluster, seguramente en el manual dirá 
qué clase de cluster usar.
2) Si vás a escribir software, lo mejor es empezar haciendo pruebas con 
software escrito para correr en openmosix.

De los programas que vienen listos para correr en clusters, conozco e instalé 
el wien97 y el wien2k (también instalé varias versiones de gaussian, pero no 
recuerdo cómo implementaba el cálculo en cluster) Estos programas usan las 
bibliotecas MPI. Esto quiere decir que la red de máquinas pueden ser muy 
heterogénea (incluso máquinas corriendo sistemas operativos distintos). Sobre 
MPI podés empezar a leer en la wikipedia.

Para escribir software para cluster, podés tomar dos caminos :

a) Implementar los mecanismos de distribución de cálculos a través de la red.
b) Usar un sistema operativo del tipo Single System Image Clustering. Mosix y 
OpenMosix son de este tipo de sistema operativo, y el kernel es el que se 
encarga de repartir la carga.

 
La biblioteca MPI está dentro del camino a), ya que provee de una API con todos 
los mecanismos necesarios para que cada programa se comunique con los programas 
que corren en las otras máquinas. Hay que escribir muy bien el software para 
acomodar mecanismos de la biblioteca MPI. La ventaja de usar MPI es que no es 
necesario que las máquinas de este cluster tengan el mismo sistema operativo. 
El compilador Fortran de Intel ya trae todo lo necesario para crear software 
que usa MPI, y hay versiones gratis del compilador para windows y linux (aunque 
para usarlo en windows necesitás el Visual Studio...).

La gracia de un SO tipo single systema image, es que el kernel se encarga de 
repartir la carga entre máquinas, enviando cada proceso nuevo a la máquina 
menos cargada (así de simple). Entonces, para crear software que vá a correr en 
un cluster tipo single system image, tu software deberá hacer cada cálculo en 
un proceso diferente. Supongamos que necesitás hacer un cálculo sobre n 
elementos finitos. Entonces debés hacer n "forks", uno para cada cálculo. Cómo 
reunir los datos de todos los forks, es harina de otro costal. En principio si 
el cálculo devuelve un byte, se puede usar el código de retorno del proceso 
forkeado. Pero si necesitás resultados más complejos, deberías implementar 
algún mecanismo loco para reunir los datos de todos los procesos forkeados, 
como IPC o archivos de texto compartidos con NFS.


En definitiva: tu problema vá a decir cómo será tu cluster. Hasta aquí te puedo 
ayudar sin pensar mucho. Si necesitás una solución más seria y para un problema 
en concreto, de más está decir que con gusto te lo presupuesto ;)

Gustavo

pd: con los procesadores multicore, los creadores de compiladores están muy 
ocupados tratando de encontrar la forma para que el compilador distribuya el 
cálculo entre varios cores y entre varias CPU. Seguramente en unos años crear 
software para cluster será más transparente de lo que es ahora.




-- 
_______________________________________________
Surf the Web in a faster, safer and easier way:
Download Opera 9 at http://www.opera.com

Powered by Outblaze
_________________________________
Lista de correo - L U G Tucumán
http://www.lugtucuman.org.ar

Responder a