- Estréllate y Arde - https://www.estrellateyarde.org -

Clusters OpenMosix en Linux

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

Instalar OpenMosix

  1. 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.
  2. 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
  3. 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.
  4. 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

  1. 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.
  2. 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:

    OpenMosixView

    Nos permite administrar los nodos:

    OpenMosixView nodos

    Gestionar los procesos:

    OpenMosixView procesos

    Migrar procesos manualmente a otros nodos:

    OpenMosixView migrar manualmente

    Manejar procesos remotos:

    OpenMosixView procesos remotos

    Visualizar gráficamente la carga de cada nodo:

    OpenMosixView graficos

    Incluso administrar procesos arrastrándolos (drag and drop):

    OpenMosixView drag and drop

Ejemplos

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

    OpenMosix mosmon

    Para matar todos los procesos awk:

    $ pkill awk
  2. 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
  3. 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 640x480 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
  4. 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.

OpenMosix en live-CD

Podemos disponer de un cluster OpenMosix al instante si utilizamos un live-CD que tenga esa funcionalidad: sólo tendremos que bootear las máquinas desde el CD y conseguiremos un cluster funcionando. Hay varios live-CD que nos permiten hacerlo, veamos algunos:

  1. Cluster Knoppix (clusterknoppix.sw.be)

    Cluster Knoppix

  2. BCCD (Bootable Cluster CD, bccd.cs.uni.edu)

    Bootable Cluster CD

  3. Quantian (dirk.eddelbuettel.com/quantian.html)

    Quantian


Article printed from Estréllate y Arde: https://www.estrellateyarde.org

URL to article: https://www.estrellateyarde.org/discover/cluster-openmosix-en-linux

Copyright © 2010 Estrellate y Arde