> 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
