OpenMosix (openmosix.sourceforge.net) es un parche para el kernel Linux que permite a varias máquinas actuar como un sistema multiprocesador grande. Lo que hace OpenMosix es balancear la carga de trabajo entre todos los nodos que forman el cluster: migra los procesos, independientemente de en qué nodo se han originado, al nodo con menos carga de trabajo.
Su mayor ventaja es que las aplicaciones no tienen que estar programadas específicamente para OpenMosix ya que trabaja con aplicaciones normales (no paralelizadas), siendo su funcionamiento transparente al usuario. Pero tiene una limitación: sólo migra procesos que no usen memoria compartida, por lo que no migra procesos multi-hilo.
OpenMosix está formado por los siguientes componentes:
- un parche para el kernel Linux.
- herramientas para la línea de comandos y para el entorno gráfico.
- el script de inicio /etc/init.d/openmosix.
Ahora las malas noticias
La última versión estable de OpenMosix es para el kernel 2.4.26 y por el momento no habrá versión para el kernel 2.6 (la versión beta en desarrollo llegó hasta el kernel 2.6.15), ya que el 15/07/2007 OpenMosix comunicaba su cierre y no se sabe si el proyecto continuará con otro nombre (Simple Openmosix 2.6, sourceforge.net/projects/om-2-6/).
Recursos
- OpenMosix HOWTO: howto.x-tend.be/openMosix-HOWTO/
Instalar OpenMosix
- Instalar el kernel OpenMosix: descargamos el parche de la web de OpenMosix (openMosix-2.4.26-1.gz) y se lo aplicamos a las fuentes del kernel (que debe ser un kernel "vanilla"), configuramos en el kernel las opciones de OpenMosix con menuconfig, compilamos el kernel y lo instalamos, añadiendo una entrada para el nuevo kernel en el GRUB. Y reiniciamos el sistema.
- Directorio /mfs: OpenMosix utiliza el sistema de archivos compartidos MFS que permite acceder
a los filesystem de todos los nodos, necesario para que los procesos puedan migrar (evita que los procesos vuelvan
al nodo de origen cada vez que hacen una E/S). Para usar MFS crearemos en cada nodo el directorio /mfs
y añadiremos una entrada a /etc/fstab para montarlo al iniciar:
# File_system Mount_point Type Options Dump Pass mfs /mfs mfs dfsa=1 0 0
- Configuración de los nodos: ya no es necesario editar el archivo /etc/openmosix.map para definir los nodos del cluster. Las herramientas de usuario disponen del demonio de autodescubrimiento omdiscd que automáticamente descubre todos los nodos en la red.
- Iniciar OpenMosix
Para activar la funcionalidad de openMosix en el kernel e iniciar el demonio de autodescubrimiento omdiscd ejecutaremos el comando:
# /etc/init.d/openmosix start
Manejar OpenMosix
- Herramientas de usuario de OpenMosix para la línea de comandos
Las herramientas de usuario de openMosix (OpenMosixTools, paquete openmosix-user) son una serie de comandos que permiten administrar openMosix desde una consola. Algunos de ellos son:
- mosmon: monitoriza los nodos: uso de CPU, memoria usada, etc.
- mtop: top para openMosix, muestra en qué nodo corre cada proceso.
- mps: ps para openMosix, muestra el número del nodo.
- mosctl whois: con mosctl whois <node_number> veremos la IP o el nombre del nodo.
- Herramientas gráficas de openMosix
Para administar openMosix desde el entorno gráfico usaremos OpenMosixView (openmosixview.com, paquete openmosixview), un frontal para las OpenMosixTools. Para lanzar OpenMosixView ejecutaremos el comando:
# openmosixview
OpenMosixView monitoriza la carga de cada nodo:
Nos permite administrar los nodos:
Gestionar los procesos:
Migrar procesos manualmente a otros nodos:
Manejar procesos remotos:
Visualizar gráficamente la carga de cada nodo:
Incluso administrar procesos arrastrándolos (drag and drop):
Ejemplos con OpenMosix
- Prueba simple: los de OpenMosix dicen que la manera más sencilla de probarlo es crear el
script test_mosix, cuyo contenido es:
awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}' &
Y lanzarlo con el comando:
$ for i in `ls /etc/` ; do ./test_mosix ; done
Con mosmon podremos ver cómo migran los procesos a otros nodos:
Para matar todos los procesos awk:
$ pkill awk
- Prueba de stress OpenMosixTest (openmosixview.com/omtest/, paquete openmosixtest): sirve para determinar si el cluster funciona correctamente y cómo responde bajo carga, generando
al finalizar un informe con los resultados. Para ejecutarlo:
$ ./start_openMosix_test.sh
- Ejemplo con Blender: veamos cómo renderizar una escena de Blender aprovechando OpenMosix.
Blender corre como un único proceso por lo que OpenMosix poco puede hacer, como mucho migrarlo a otra
máquina. Pero si dividimos el trabajo en varios procesos (tantos como nodos) sí podremos
aprovechar nuestro cluster openMosix.
- Descargamos la escena de Blender blacksmith.tgz y la descomprimimos.
– Abrimos /blacksmith/blacksmith.blend, seleccionamos la escena 04_06 y configuramos el render a 640×480 y formato .jpg.
– Descargamos el script de Marc O. Gloor render.gz que será el encargado de dividir el trabajo en tantos procesos como nodos. Lo descomprimimos en el directorio /blacksmith y le damos permisos de ejecución. Para ejecutarlo (4 nodos, 230 imágenes):$ ./render blacksmith.blend 1 231 4
- Cuando termine tendremos 230 .jpg que podremos convertir en vídeo con mencoder:
$ mencoder "mf://*.jpg" -mf fps=12 -o blacksmith.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800
- Ejemplo con KPovModeler y POV-Ray: partimos de una serie de escenas de POV-Ray
(.pov) que constituyan una animación, creadas con KPovModeler. Para que openMosix haga
su trabajo lanzaremos un proceso por cada imagen .jpg a generar.
- Utilizaremos el script makemovie.tar.gz (incluye varias escenas .pov de ejemplo).
– Lo descomprimimos en el directorio /makemovie y le damos permisos de ejecución.
– Para ejecutarlo el comando es:$ ./makemovie pov-tut
- El script lanza una instancia de POV-Ray por cada escena .pov a renderizar, crea las imágenes .ppm, las convierte a .jpg y genera con ellas un vídeo .avi.
Ejemplos con OpenMosix
- Prueba simple: los de OpenMosix dicen que la manera más sencilla de probarlo es crear el
script test_mosix, cuyo contenido es:
awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}' &
Y lanzarlo con el comando:
$ for i in `ls /etc/` ; do ./test_mosix ; done
Con mosmon podremos ver cómo migran los procesos a otros nodos:
Para matar todos los procesos awk:
$ pkill awk
- Prueba de stress OpenMosixTest (openmosixview.com/omtest/, paquete openmosixtest): sirve para determinar si el cluster funciona correctamente y cómo responde bajo carga, generando
al finalizar un informe con los resultados. Para ejecutarlo:
$ ./start_openMosix_test.sh
- Ejemplo con Blender: veamos cómo renderizar una escena de Blender aprovechando OpenMosix.
Blender corre como un único proceso por lo que OpenMosix poco puede hacer, como mucho migrarlo a otra
máquina. Pero si dividimos el trabajo en varios procesos (tantos como nodos) sí podremos
aprovechar nuestro cluster openMosix.
- Descargamos la escena de Blender blacksmith.tgz y la descomprimimos.
– Abrimos /blacksmith/blacksmith.blend, seleccionamos la escena 04_06 y configuramos el render a 640×480 y formato .jpg.
– Descargamos el script de Marc O. Gloor render.gz que será el encargado de dividir el trabajo en tantos procesos como nodos. Lo descomprimimos en el directorio /blacksmith y le damos permisos de ejecución. Para ejecutarlo (4 nodos, 230 imágenes):$ ./render blacksmith.blend 1 231 4
- Cuando termine tendremos 230 .jpg que podremos convertir en vídeo con mencoder:
$ mencoder "mf://*.jpg" -mf fps=12 -o blacksmith.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800
- Ejemplo con KPovModeler y POV-Ray: partimos de una serie de escenas de POV-Ray
(.pov) que constituyan una animación, creadas con KPovModeler. Para que openMosix haga
su trabajo lanzaremos un proceso por cada imagen .jpg a generar.
- Utilizaremos el script makemovie.tar.gz (incluye varias escenas .pov de ejemplo).
– Lo descomprimimos en el directorio /makemovie y le damos permisos de ejecución.
– Para ejecutarlo el comando es:$ ./makemovie pov-tut
- El script lanza una instancia de POV-Ray por cada escena .pov a renderizar, crea las imágenes .ppm, las convierte a .jpg y genera con ellas un vídeo .avi.
en que distribucion se tiene que hacer???
eduardo, utiliza un live-CD, el proyecto OpenMosix está semi-abandonado. Necesitarás un live-CD en cada máquina, claro.
Tengo una maquina con xubuntu 8.04 y quisiera instalarle openmosix pero como requiere el kernel, no se si pueda hacer esto, instalar openmosix en una maquina con xubuntu?
“Necesitarás un live-CD en cada máquina, claro.”
Si lo haces con un live cd de Dynebolic, puedes hacer un “docking” (http://dynebolic.org/manual/x181.htm) y así usar solo un live cd :-)
Es mucho mejor que un live cd, recordad que se puede poner un servidor PEX ( pre boot execution ) y todas las demas maquinas arrancan con la tarjeta de red, es decir, el sservidor openmosix, pasara la imagen del kernel a todas las maquinas de la red que arranquen desde su targeta.
Sin necesidad ni de cd ni de disco duro… una maravilla para quien tenga una red ultra rapida de fibra optica, es un poco lento para las maquinas que tengan 100 mbit, con una de 1 gbit o 10 gbit no pude probarlo…
mi tesis de grado es montar un cluster open mosix, llevo varios meses intentandolo y no lo he podido hacer. Tendo instalado en mi portatil Debian 5.0 kenel 2.6.26-2-686 y quiero instalar el kernel openmosix pero la version de este es 2.4.20, ¿si lo puedo hacer o necesito instalar una version de linux con un kernel mas abajo??.
Hola, tengo una gran duda que necesito muy urgente…
He leido que con el live cd es sencillo instalar, es asi?
Tengo una web que crecera espectacularmente de anuncios patrocinados, y la voy a poner online pero necesito montar el tema del balanceador de carga, pense en ultramonkey por el tema que es el servidor maestro quien lleva las conexiones existentes (el usuario final no perderia las conexiones, sesiones), en cambio con openmoxis no se si servira…
Quiero que si un usuario tiene una session lo haga siempre el mismo equipo aunque tenga que delegar funciones en otro menos descargado pero que lleve las sessiones, ya que la web tiene seccion logado y si cada vez que accede al cluster lo coge uno distinto no funcionaria la web
Espero que me comprendan, otra pregunta, ¿en todos los equipos tendria xampp, es eso problema?
Espero su respuesta, es muy importante
Hola Alberto Romero, actualmente estoy desarrollando mi trabajo de grado orientado a un cluster HA.
Me gustaria compartir conocimientos.
escribeme a [email protected]
Salu2
Hola,
Ya instale el openmosix y tengo una simulacion en blender, pero necesito saber como instalo blender ya que el kernel para esta version de openmosix me dice que no la acepta, laversion de blender que utilizo es la 2.58.