Subsecciones

5.4 ADMINISTRACIÓN DEL CLUSTER

El mantenimiento de un sistema resulta incluso más delicado y costoso (en tiempo) que su correcta instalación. En este capítulo se tomará contacto con todas las herramientas con las que cuenta openMosix para poder gestionar tu sistema.

La recomendación que lanzamos desde este manual es que pruebes con ellas para conocer exactamente la respuesta de tu cluster, ya que más tarde puede facilitarte la detección de errores o configuraciones poco adecuadas.

5.4.1 Administración básica

openMosix proporciona como principal ventaja la migración de procesos hacia aplicaciones HPC. El adminsitrador puede configurar el cluster utilizando las herramientas de área de usuario de openMosix (openMosix-user-space-tools5.6) o editando la interfície que encontraremos en /proc/hpc y que será descrita con más detalle seguidamente.

5.4.2 Configuración

Los valores en los ficheros del directorio /proc/hpc/admin presentan la configuración actual del cluster. El administrador del mismo puede configurar estos valores para cambiar la configuración en tiempo de ejecución, tal como se muestra en las tablas.


Tabla: Administración: Binarios en /proc/hpc/admin
echo 1 $ >$ /proc/hpc/admin/block bloquea la llegada de procesos remotos
echo 1 $ >$ /proc/hpc/admin/bring lleva todos los procesos a su nodo raíz

Tabla: Administración: Cambiando los parámetros en /proc/hpc
config el fichero de configuración principal (escrito por la utilidad setpe)
block permite/prohíbe la llegada de procesos remotos
bring lleva todos los procesos a su nodo raíz
dfsalinks lista los actuales enlaces DFSA
expel envía los procesos huésped a su nodo raíz
gateways numero máximo de gateways
lstay los procesos locales se suspenderan
mospe contiene el ID de nuestro nodo openMosix
nomfs activa/desactiva MFS
overheads para ajustes
quiet detiene la obtención de información sobre la carga del sistema
decay-interval intérvalo para recoger información sobre la carga
slow-decay por defecto 975
fast-decay por defecto 926
speed velocidad relativa a un PIII/1GHz
stay activa/desactiva el proceso de migrado automático



Tabla: Administración: Información de los otros nodos
clear resetea las estadísticas
cpujob informa a openMosix que el proceso está ligado al procesador
iojob informa a openMosix que el proceso está ligado a la E/S
slow informa a openMosix que actualice las estdísticas más lentamente
fast informa a openMosix que actualice las estdísticas más rápidamente

Tabla: Administración: Escribiendo un '1' en /proc/hpc/decay
/proc/[PID]/cantmove razón por la cual el proceso ha sido migrado
/proc/[PID]/goto a qué nodo el proceso podrá migrar
/proc/[PID]/lock si el proceso se ve bloquead en su nodo raíz
/proc/[PID]/nmigs el numero de veces que el proceso ha migrado
/proc/[PID]/where donde el proceso se encuentra siendo computado actualmente
/proc/[PID]/migrate same as goto remote processes
/proc/hpc/remote/from el nodo raíz del proceso
/proc/hpc/remote/identity información adicional del proceso
/proc/hpc/remote/statm estadística de memoria del proceso
/proc/hpc/remote/stats estadística del procesador del proceso

Tabla: Administración: Información adicional sobre los procesos locales
/proc/hpc/nodes/[openMosix_ID]/CPUs el número de CPUs que posee el nodo
/proc/hpc/nodes/[openMosix_ID]/load la carga de openMosix en este nodo
/proc/hpc/nodes/[openMosix_ID]/mem memoria disponible para openMosix
/proc/hpc/nodes/[openMosix_ID]/rmem memoria disponible para Linux
/proc/hpc/nodes/[openMosix_ID]/speed velocidad del nodo relativa a un PIII/1GHz
/proc/hpc/nodes/[openMosix_ID]/status estado del nodo
/proc/hpc/nodes/[openMosix_ID]/tmem memoria disponible
/proc/hpc/nodes/[openMosix_ID]/util utilización del nodo


5.4.3 Las herramientas de área de usuario

Estas herramientas permitirán un fácil manejo del cluster openMosix. Seguidamente se enumeran con todos sus parámetros.

migrate [PID] [openMosix_ID] envia una petición de migrado del proceso identificado con el ID, al nodo que indiquemos..

mon es un monitor de los daemons basado en el terminal y da información relevante sobre el estado actual que puede ser visualizada en diagramas de barras.

mosctl es la principal utilidad para la configuración de openMosix. Su sintaxis es:

mosctl  [stay|nostay]
       [block|noblock]
       [quiet|noquiet]
       [nomfs|mfs]
       [expel|bring]
       [gettune|getyard|getdecay]


\begin{table}\fi
\par
\end{table}

        mosct whois [openMosix_ID|IP-address|hostname]
        mosct [getload|getspeed|status|isup|getmem|getfree|getutil] [openMosix_ID]
        mosctl setyard [Processor-Type|openMosix_ID||this]
        mosctlsetspeed interger-value
        mosctlsetdecay interval [slow fast]


Tabla: Administración: Parámetros adicionales para mosrun
stay desactiva la migración automática
nostay migración automática (defecto)
lstay local processes should stay
nolstay los procesos locales podran migrar
block bloquea la llegada de otros procesos
noblock permite la llegada de procesos
quiet desactiva la posibildiad de dar información sobre la carga del nodo
noquiet activa la posibildiad de dar información sobre la carga del nodo
nomfs desactiva MFS
mfs activa MFS
expel envía fuera del nodo los procesos que han llegado previamente
bring traerá todos los procesos migrados hacia su nodo raíz
gettune muestra el parámetro de overhead
getyard muestra la utilización actual de Yardstick
getdecay muestra el estado del parámetro decay
whois nos muestra el openMosix-ID, la dirección IP y los nombres de host del cluster
getload muestra la carga (openMosix-)
getspeed muestra la velocidad (openMosix-)
status muestra el estado y la configuración actual
isup nos informa de si un nodo está funcionando o no (ping openMosix)
getmem muestra la memoria lógica libre
getfree muestra la memoria física libre
getutil muestra la utilización del nodo
setyard establece un nuevo valor para Yardstick
setspeed establece un nuevo valor para la velocidad (openMosix-)
setdecay establece un nuevo valor para el intervalo del decay

Con mosrun ejecutaremos un comando especialemte configurado en un nodo establecido.
Su sintaxis: mosrun [-h|openMosix_ID| list_of_openMosix_IDs] command [arguments]

El comando mosrun puede ser ejecutado con diversas opciones. Para evitar complicaciones innecesarias viene con ciertas pre-configuraciones para ejecutar las tareas con configuraciones especiales de openMosix.

Tabla: Administración: Parámetros de mosctl con más detalle
nomig runs a command which process(es) won't migrate
runhome ejecuta un comando bloqueado en el nodo raíz
runon ejecutará un comando el cuál será directamente migrado y bloqueado a cierto nodo
cpujob informa a openMosix que el proceso está ligado a la CPU
iojob informa a openMosix que el proceso está ligado a la E/S
nodecay ejecuta un comando e informa al cluster de no refrescar las estadisticas de carga
slowdecay ejecuta un comando con intervalo de decay grande para acumular en las estadísticas
fastdecay ejecuta un comando con intervalo de decay pequeño para acumular en las estadísticas



\begin{table}\fi
\par
\end{table}

setpe es una utilidad de configuración manual del nodo sintaxis:

        setpe   -w -f   [hpc_map]
        setpe   -r [-f  [hpc_map]]
        setpe   -off

-w lee la configuración de openMosix desde un fichero (normalmente /etc/hpc.map).

-r escribe la configuración actual de openMosix en un fichero (normalmente /etc/hpc.map).

-off desactiva la configuración actual del cluster.

tune es una utilidad de calibración y optimización de openMosix (para más información recurra a las páginas man de tune).

Existen utilidades adicionales a la interfície de /proc y a las línias de comandos. Por ejemplo existen unos parches para ps y para top (llamados mps y mtop) los cuales muestran adicionalmente el ID de nuestro nodo openMosix en una columna. Esta posibilidad es interesante para encontrar dónde ha migrado un cierto proceso.

Para clusters pequeños pueden sernos muy útiles las utilidades de openMosixView, una GUI para las tareas de administración más comunes y que más adelante se detalla en un capítulo.

5.4.4 Detección automática de nodos

El demonio de auto-detección de nodos, omdiscd, proporciona un camino automático para la configuración de nuestro cluster openMosix. Con él podremos eliminar la necesidad de configuraciones manuales como son la edición del fichero /etc/mosix.map .

omdiscd genera un envío de paquetes multicast (a todas las direcciones, en nuestro caso, nodos) para notificar a los otros nodos que hemos añadido uno nuevo. Esto significa que al añadir un nodo sólo tendremos que iniciar omdiscd en él.

Debemos ocuparnos de algunos requisitos previos como pueden ser una buena configuración de la red de interconexión de los nodos, principalmente para el correcto enrutamiento de paquetes. Sin una ruta por defecto deberemos especificar a omdiscd la interfície con la opción -i. De otra forma acabará con un error parecido al siguiente:

Aug 31 20:41:49 localhost omdiscd[1290]: Unable to determine address of 
default interface.  This may happen because there is no default route 
configured.  Without a default route, an interface must be: Network is 
unreachable 
Aug 31 20:41:49 localhost omdiscd[1290]: Unable to initialize network.  
Exiting.

Un ejemplo de buena configuración podría ser la siguiente:

[root@localhost log]# route -n 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         10.0.0.99       0.0.0.0         UG    0      0        0 eth0

La importancia de poder automatizar el reconocimiento de nuevos nodos conectados al sistema ha facilitado que se llegue a la simplicidad con la que contamos actualmente para iniciar dicha detección, con el comando omdiscd.

Ahora echando un vistazo a los logfiles tendríamos que ver algo parecido a

Sep  2 10:00:49 oscar0 kernel: openMosix configuration changed: This is openMosix 
#2780 of 6 configured)
Sep  2 10:00:49 oscar0 kernel: openMosix #2780 is at IP address 192.168.10.220
Sep  2 10:00:49 oscar0 kernel: openMosix #2638 is at IP address 192.168.10.78
Sep  2 10:00:49 oscar0 kernel: openMosix #2646 is at IP address 192.168.10.86
Sep  2 10:00:49 oscar0 kernel: openMosix #2627 is at IP address 192.168.10.67
Sep  2 10:00:49 oscar0 kernel: openMosix #2634 is at IP address 192.168.10.74

Tendremos el cluster listo para ser utilizado.

omdiscd tiene otras opciones entre las que cuentan poder ejecutarse como un demonio (por defecto) o en background (segundo plano) donde la salida será la pantalla (la salida estándar), con el comando omdiscd -n. La interfície, como ya se ha indicado, debe ser especificada con la opción -i.

Ahora vamos a ver brevemente la herramienta showmap. Esta utilidad nos mostrará el nuevo mapa.

[root@oscar0 root]# showmap
My Node-Id: 0x0adc

Base Node-Id Address          Count
------------ ---------------- -----
0x0adc       192.168.10.220   1
0x0a4e       192.168.10.78    1
0x0a56       192.168.10.86    1
0x0a43       192.168.10.67    1
0x0a4a       192.168.10.74    1

Existen otras muchas utilidades que pueden sernos útiles para la detección automática de nodos, como un mecanismo de routing para clusters con más de una red de conexión. Toda esta información es actualizada constantemente y podremos encontrarla en los ficheros README y DESIGN de las herramientas de usuario.

Compilaciones

Si queremos obtener este módulo a partir de las fuentes tendremos que hacer una pequeña modificación en el fichero openmosix.c. Una de las línias, concretamente
#define ALPHA
tendremos que comentarla ya que nosotros estamos trabajando en plataforma x86.

Si quisiéramos tener un historial más detallado podemos editar main.c para escribir

log_set_debug(DEBUG_TRACE_ALL); (en la línia 84 aproximadamente)

ahora podremos ejecutar

make clean

make

Problemas

Algunas veces la auto-detección no funcionará tal como podríamos esperar, per ejemplo cuando un nodo debería ser detectado y no ve el tráfico multicast que se lleva a cabo en la red.

Esto ocurre con algunas targetas PCMCIA. Una solución posible sería poner la interfície en modo promíscuo, tal como se detalla seguidamente:

Aug 31 20:45:58 localhost kernel: openMosix configuration changed:
        This is openMosix #98 (of 1 configured)
Aug 31 20:45:58 localhost kernel: openMosix #98 is at IP address 10.0.0.98
Aug 31 20:45:58 localhost omdiscd[1627]: Notified kernel to activate 
openMosix  Aug 31 20:45:58 localhost kernel: 
        Received an unauthorized information request from 10.0.0.99

Algo que podríamos probar es forzar manualmente nuestro NIC a modo promíscuo y/o multicast, así:

ifconfig ethx promisc
o
ifconfig ethx multicast

Podremos ejecutar igualmente

tcpdump -i eth0 ether multicast

Si se nos muestra simulated es que seguramente hemos olvidado poner el comentario a la línia #define ALPHA, sería:

Aug 31 22:14:43 inspon omdiscd[1422]: Simulated notification to activate openMosix
[root@inspon root]# showmap
My Node-Id: 0x0063

Base Node-Id Address          Count
------------ ---------------- -----
0x0063       10.0.0.99        1
[root@inspon root]# /etc/init.d/openmosix status
OpenMosix is currently disabled
[root@inspon root]#

miKeL a.k.a.mc2 2004-09-06