Subsecciones

- 5.7.1 No veo todos los nodos
- 5.7.2 FAQ de openMosix -preguntas más frecuentes-
  - 5.7.2.1 General
  - 5.7.2.2 Obteniendo, compilando, instalando y funcionando con openMosix
  - 5.7.2.3 Preguntas del kernel (núcleo)
  - 5.7.2.4 Sistema de ficheros
  - 5.7.2.5 Programando openMosix
  - 5.7.2.6 Miscelánea

# 5.7 PROBLEMAS MÁS COMUNES

## 5.7.1 No veo todos los nodos

Antes de nada deberemos asegurarnos de estar utilizando la misma versión del kernel en todas las máquinas y que todos ellos hayan estado debidamente parcheados.

Ejecute `mosmon` y pulse `t` para ver el total de nodos que están funcionando. Para ver los nodos muertos simplemente bastará con darle a la tt d y aparecerá la palabra`DEAD` sobre todos aquellos IDs que correspondan a nodos que, apareciendo en el mapa de openmosix, no se encuentran funcionales.

Si este proceso le advierte que no tiene openMosix funcionando en alguna máquina -o no aparecen todas- asegúrese de haber incluido su dirección ip en el /etc/openmosix.map (no use 127.0.0.1 ya que probablemente habrá problemas con el servidor de nombres/dhcp).

Si openMosix puede ver una máquina pero esta no recibe o envia los paquetes que debiera, entonces probablemente es que está protegida por un firewall que no deja actuar debidamente a openMosix.

Si el problema sigue sin solucionarse y se da el caso de tener varias targetas de red en cada nodo habrá que editarse el fichero /etc/hosts para tener una línea con el formato

           non-cluster_ip  cluster-hostname.cluster-domain cluster-hostname

Tendremos que configurar debidamente la tabla de enrutamiento, que podemos visualizar con

`netstat -nr`

No obstante esta tarea cae fuera del alcance de este libro.

Otros posibles problemas pueden venir por los diferentes parámetros de configuración del kernel, especialmente si usamos clusters con la opción de topología de red compleja. Con esa opción hay que vigilar de no utilizar el mismo valor que aparece en la opción de Maximum network-topology complexity support en cada nodo.

## 5.7.2 FAQ de openMosix -preguntas más frecuentes-

### 5.7.2.1 General

¿Qué es openMosix?

El sistema openMosix es una extensión del kernel del sistema operativo GNU/Linux que amplía grandemente sus posibilidades en computación paralela, a la vez que implementa una arquitectura SSI.

Está basado en el proyecto MOSIX del profesor A. Barak, pero con licencia GNU (General Public License, GPL).

¿Qué significan las siglas SSI -single system image-?

Hay muchas variedades de clusters y un cluster SSI tiene copias de un único kernel de sistema operativo en varios nodos que permiten ver el conjunto como un todo.

Esto aporta ventajas a diversos niveles, entre los cuales se cuenta una mayor facilidad de uso y transprencia frente al usuario, procesos y los propios nodos.

¿Existe una página web para openMosix?

Sí es `http://www.openmosix.org` . También está la página web del proyecto en SourceForge en `http://sourceforge.net/projects/openmosix` .

¿Hay una lista de correo para openMosix?

Sí claro, existen dos:

- Para discusiones generales está `openmosix-general@lists.sourceforge.net` , cuya página de información general es `http://lists.sourceforge.net/lists/listinfo/openmosix-general`
- Para desarrolladores úsese `openmosix-devel@lists.sourceforge.net`, cuya página de información general es `http://lists.sourceforge.net/lists/listinfo/openmosix-devel`

¿Puedo contribuir al proyecto openMosix?

¡Por supuesto! El proyecto cuenta con un gran número de contribuidores. A diferencia del sistema de mantenimiento del kernel de linux, Moshe Bar (coordinador principal de openMosix) nombra desarrolladores oficiales y les otorga a éstos la clave commit bit del directorio CVS para el código fuente de openMosix, de manera similar al sistema usado para FreeBSD.

Se están buscando programadores familiarizados con el kernel de linux para trabajar en nuevas caracterí sticas. Si usted mismo está interesado escriba a `moshe@moelabs.com` .

¿Quién posee la licencia de openMosix?

Todo el código fuente de MOSIX está licenciado por el profesor Amnon Barak de la Hebrew University of Jerusalem. Todo el código fuente de openMosix está licensiado por Moshe Bar -residente en Tel Aviv-. El sistema openMosix no contiene ningún código fuente que no esté licenciado bajo la GPL.

¿Es openMosix una versión de MOSIX?

Originalmente openMosix era una versión de MOSIX, pero se ha desarrollado en una plataforma avanzada de clustering. Comparado con MOSIX, hay cierta cantidad de características que ya han sido agregadas:

- una versión para la arquitectura UML (linux de modo de usuario),
- nuevo y más ordenado código de migración,
- un mejor balanceador de procesos,
- reducción de latencias del kernel,
- soporte para Dolphin e IA64 (arquitectura 64-bit),
- un sistema de instalación simplificado usando paquetes RPM,
- gran cantidad de documentatción,
- y gran número de parches5.11 sobre el propio de openMosix para dotarle de mejores caracteristicas.

¿Por qué se separó openMosix de MOSIX?

La cuestión principal era que MOSIX no está licenciado bajo una licencia abierta. Esto evita que puedas ver el código fuente, que puedas desarrollar e implementar las mejoras que creas convenientes y, sobretodo, que crezca la comunidad de usuarios.

### 5.7.2.2 Obteniendo, compilando, instalando y funcionando con openMosix

¿Dónde puedo conseguir openMosix?

Los fuentes oficiales para openMosix pueden encontrarse en SourceForge 5.12. Asegúrese de leer la documentación antes de bajar los archivos para comprobar que adquiere la versión adecuada a su sistema.

¿Puedo mezclar nodos MOSIX y openMosix en el mismo cluster?

¡NO! Como en MOSIX, no es recomendado mezclar nodos porque los protocolos están ligados a cambiar sin anuncios entre versiones. Además, cada nueva versión contempla correcciones de errores anteriores que vale la pena eliminar.

¿Cómo compilar openMosix?

Primero desempaquete tanto el código fuente del kernel de linux como la distribución correspondiente de openMosix en un directorio, por ejemplo

          $ cd /usr/src
          $ tar xzvf linux-2.X.Y.tar.gz
          $ gunzip openMosix2.X.Y.gz
          $ cd linux-2.X.Y

Luego aplique los parches de openMosix al código fuente original del kernel de linux con el comando

          $ patch -p1 openMosix2.X.Y-Z

El directorio /usr/src/linux-2.X.Y contiene el código fuente del kernel 2.X.Y de linux con los parches de openMosix aplicados. Compile e instale el nuevo kernel como cualquier otro.

¿Qué son las userland-tools -herramientas de usuario-?

Las herramientas de usuario son una colección de herramientas administrativas para examinar y controlar un nodo openMosix. Son estrictamente necesarias y pueden obtenerse desdel mismo directorio donde se encuentra en parche para el kernel.

Para mayores problemas consulte la sección Las herramientas de área de usuario del capítulo 5.

### 5.7.2.3 Preguntas del kernel (núcleo)

¿Qué versiones del kernel están soportadas por openMosix?

El primer kernel kernel de linux soportado es el 2.4.17. Versiones futuras del la serie 2.4 -la serie 2.6- también van a ser soportadas por openMosix.

Transcurre poco más de una semana entre la aparicición de un nuevo kernel linux y el parche openMosix.

Estoy tratando del compilar el kernel con el parche de openMosix. ¿Qué versión de compilador debo usar?

La versión recomendada para un kernel parcheado con openMosix es la misma que para la versión del kernel linux. Por tanto la correcta compilación por parte de `gcc` es no sólo un requerimiento de openMosix, sino del kernel de linux.

He compilado el kernel de las fuentes. ¿Cómo hago para agregarlo al cargador de inicio (bootloader) (LILO, GRUB, otro)?

El kernel de openMosix es como cualquier otro kernel porque openMosix es tan solo una extensión del kernel, y va a ser tratado como un kernel estándar. Use los métodos normales del cargador de inicio para agregar un kernel.

He instalado una distribución de linux que viene con el kernel X.Y. El README de openMosix dice que no debemos mezclar kernels. ¿Significa esto que el RPM para el kernel openmosix-X.Y+1-Z no va a funcionar en mi máquina?

No. Cuando se dice que no se deben mezclar versiones de kernels se refiere a los parches de openMosix. Mientras todas las máquinas usen las mismas versiones del kernel de openMosix no habrá problemas.

Nótese que con versión nos referimos al número de versión de openMosix; esto implica que se pueden mezclar kernels de openMosix que son para diferentes arquitecturas de hardware. Por ejemplo, instalando el kernel openmosix-2.4.18-4 se pueden usar tanto el RPM openmosix-2.4.18-4-i686 en una máquina con Pentium II y el kernel openmosix-2.4.18-4-athlon en una máquina con un procesador Athlon.

### 5.7.2.4 Sistema de ficheros

¿Cuál es la diferencia entre MFS y DFSA, y por qué me conviene tener DFSA?

DFSA es el acrónimo de Direct File System Access (acceso directo al sistema de archivos) y es una optimización. Permite que procesos remotos ejecuten llamadas de sistema localmente en vez de mandarlas al nodo local, factor que mejora sustancialmente el rendimiento de sistemas SSI. MFS significa Mosix File System (sistema de archivos Mosix) y permite que todos los nodos en un cluster tengan acceso al sistema de archivos de todos los otros nodos. DFSA se ejecuta encima de un sistema de archivos de cluster, en este caso MFS.

¿Qué es MFS, cómo lo uso, y dónde lo consigo?

El sistema de archivos de openMosix (MFS) es la implementación de MFS en openMosix (véase la pregunta anterior para detalles acerca de MFS). El soporte para el tipo `mfs` se adquiere con la configuración de un kernel openMosix con la opción MFS (viene estándar con los archivos RPM). Si ud. instala su propio kernel, le sugerimos que también use la opción DFSA (vea la pregunta anterior para detalles acerca de DFSA). El uso y la administración de MFS es muy similar a NFS, pero MFS provee ciertas ventajas sobre NFS como

- consistencia de cache
- timestamp
- link consistency

### 5.7.2.5 Programando openMosix

En general, ¿cómo escribo un programa que utilice openMosix?

Escriba sus programas de manera normal. Cualquier proceso que sea creado es un candidato a ser migrado a otro nodo.

Un consejo para poder aprovechar al máximo la tecnología que openMosix pone a su alcance sería servirse de la sentencia fork() de UNIX. Como se ha comentado en este documento, openMosix hereda de MOSIX el fork-and-forget que realiza la migración automática de cualquier nuevo proceso -siempre que se mejore el rendimiento del cluster-.

¿Es posible escribir programas para openMosix con Perl?

Evidentemente sí . Ud. deberá usar `Parallel::ForkManager`, disponible en CPAN.

### 5.7.2.6 Miscelánea

Estoy recibiendo un mensaje que advierte de

        setpe the supplied table is well-formatted,
        but my IP address (127.0.0.1) is not there!

Se deberá modificar el archivo /etc/hosts, donde se debe aparecer una línea similar a

          127.0.0.1 localhost

para que todo funcione correctamente. Por ejemplo

          192.168.10.250  hostname.domain.com
          127.0.0.1       localhost

Quiero instalar openMosix en mi máquina, pero temo que es demasiado lenta.

El proyecto opeMosix no se desentiende de la filosofía de linux frente al hardware antiguo. Cualquier máquina puede beneficiarse con el uso de openMosix mientras sea del x586 compatible

El cluster puede ser heterogéneo, es decir, ni siquiera hace falta tener todas las máquinas del mismo tipo.

¿Bajo qué condiciones se puede usar VMware con openMosix?

Si se desea ejecutar VMware en una máquina con openMosix instalado para aprovechar la capacidad de computación de las máquinas remotas, no hay problema. Por otro lado, ud. no podrá correr openMosix dentro de sesiones de VMware y dejar que las sesiones balanceen su carga porque VMware tiene un defecto en su emulación de Pentium que causa que VMware (no openMosix) falle cuando un proceso migre.

¿Qué arquitecturas aparte de x86 (por ejemplo SPARC, AXP, PPC) son soportadas por openMosix?

Por el momento openMosix solo corre en x86.

¿Existe una utilidad paralela de `make` para openMosix similar a `MPmake`?

Se puede compilar usando el `make` de gcc con la opción `-j`. Así por ejemplo

       make -j 10

ejecuta make con 10 procesos en paralelo.