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.
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.
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 | |
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]
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 |
|
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.
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]#