\newpage
%===========================================================================
%       x.15 > Administraci\'on del cluster
%===========================================================================
\pagestyle{empty}
\begin{latexonly}
\ifpdf
 \begin{figure}[htbp]
 \includegraphics[bb = -250 220 0 0, scale=1]{./TuXes/tux-gazette.jpg}
 \end{figure}
 \vspace{5in}
\else
 \begin{figure}
       \includegraphics[-250,610][0,0]{./TuXes/tux-gazette}
 \end{figure}
\fi
\hfill\line(1,0){400}
\end{latexonly}
\topmargin 1in
\section{ADMINISTRACI\'ON DEL CLUSTER}
\begin{latexonly}
\line(1,0){400}
\newpage
\end{latexonly}
\topmargin 0in
\pagestyle{fancy}
%========================cita===============================================
%\begin{latexonly}
%\hspace{1in}\textcolor{blue_omosix}{{\em Well, let's just say: if your
%VCR is still blinking 12:00, you don't want Linux.}}

%\hspace{4in}\textcolor{blue_omosix}{{\em Linus Torvalds}}
%\vspace{0.5in}

%\end{latexonly}
%===========================================================================
\hspace{0.5in}El mantenimiento de un sistema resulta incluso m\'as delicado y costoso (en tiempo) que su correcta instalaci\'on. En este cap\'\i tulo se tomar\'a contacto con todas las herramientas con las que cuenta openMosix para poder gestionar tu sistema.

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

\subsection{Administraci\'on b\'asica}
\hspace{0.5in}openMosix proporciona como principal ventaja la migraci\'on de procesos hacia aplicaciones HPC.
El adminsitrador puede configurar el cluster utilizando las herramientas de \'area de usuario de openMosix (openMosix-user-space-tools\footnote{{\tt \htmladdnormallink{http://www.orcero.org/openmosix}{http://www.orcero.org/openmosix}}})
o editando la interf\'\i cie que encontraremos en {\em /proc/hpc} y que ser\'a descrita con m\'as detalle seguidamente.

\subsection{Configuraci\'on}
Los valores en los ficheros del directorio {\em /proc/hpc/admin} presentan la configuraci\'on actual del cluster.
El administrador del mismo puede configurar estos valores para cambiar la configuraci\'on en tiempo de ejecuci\'on,
tal como se muestra en las tablas.

\begin{table}
\begin{center}
\begin{tabular}{ | c | l | } \hline
echo 1 $>$ /proc/hpc/admin/block & bloquea la llegada de procesos remotos \\ \hline
echo 1 $>$ /proc/hpc/admin/bring & lleva todos los procesos a su nodo ra\'\i z \\  \hline
\end{tabular}
\caption{Administraci\'on: Cambiando los par\'ametros en /proc/hpc}
\end{center}

\begin{center}
\begin{tabular}{ | l | l | } \hline
config & el fichero de configuraci\'on principal (escrito por la utilidad {\em setpe}) \\ \hline
block & permite/proh\'\i be la llegada de procesos remotos \\ \hline
bring & lleva todos los procesos a su nodo ra\'\i z \\ \hline
dfsalinks & lista los actuales enlaces DFSA \\ \hline
expel & env\'\i a los procesos hu\'esped a su nodo ra\'\i z \\ \hline
gateways & numero m\'aximo de gateways \\ \hline
lstay & los procesos locales se suspenderan \\ \hline
mospe & contiene el ID de nuestro nodo openMosix \\ \hline
nomfs & activa/desactiva MFS \\ \hline
overheads & para ajustes \\ \hline
quiet & detiene la obtenci\'on de informaci\'on sobre la carga del sistema \\ \hline
decay-interval & int\'ervalo para recoger informaci\'on sobre la carga \\ \hline
slow-decay & por defecto 975 \\ \hline
fast-decay & por defecto 926 \\ \hline
speed & velocidad relativa a un PIII/1GHz \\ \hline
stay & activa/desactiva el proceso de migrado autom\'atico \\ \hline
\end{tabular}
\caption{Administraci\'on: Binarios en /proc/hpc/admin}
\end{center}
\end{table}
%--------------tablas a otra pagina-----
\begin{table}
\begin{center}
\begin{tabular}{ | l | l | } \hline
clear & resetea las estad\'\i sticas \\ \hline
cpujob & informa a openMosix que el proceso est\'a ligado al procesador \\ \hline
iojob & informa a openMosix que el proceso est\'a ligado a la E/S \\ \hline
slow & informa a openMosix que actualice las estd\'\i sticas m\'as lentamente \\ \hline
fast & informa a openMosix que actualice las estd\'\i sticas m\'as r\'apidamente \\ \hline
\end{tabular}
\caption{Administraci\'on: Escribiendo un '1' en /proc/hpc/decay}
\end{center}

\begin{center}
\begin{tabular}{ | l | l | } \hline
/proc/[PID]/cantmove & raz\'on por la cual el proceso ha sido migrado \\ \hline
/proc/[PID]/goto & a qu\'e nodo el proceso podr\'a migrar \\ \hline
/proc/[PID]/lock & si el proceso se ve bloquead en su nodo ra\'\i z \\ \hline
/proc/[PID]/nmigs & el numero de veces que el proceso ha migrado \\ \hline
/proc/[PID]/where & donde el proceso se encuentra siendo computado actualmente \\ \hline
/proc/[PID]/migrate & same as goto remote processes \\ \hline
/proc/hpc/remote/from & el nodo ra\'\i z del proceso \\ \hline
/proc/hpc/remote/identity & informaci\'on adicional del proceso \\ \hline
/proc/hpc/remote/statm & estad\'\i stica de memoria del proceso \\ \hline
/proc/hpc/remote/stats & estad\'\i stica del procesador del proceso \\ \hline
\end{tabular}
\caption{Administraci\'on: Informaci\'on adicional sobre los procesos locales}
\end{center}

\begin{center}
\begin{tabular}{ | l | l | } \hline
/proc/hpc/nodes/[openMosix\_ID]/CPUs & el n\'umero de CPUs que posee el nodo \\ \hline
/proc/hpc/nodes/[openMosix\_ID]/load & la carga de openMosix en este nodo \\ \hline
/proc/hpc/nodes/[openMosix\_ID]/mem & memoria disponible para openMosix \\ \hline
/proc/hpc/nodes/[openMosix\_ID]/rmem & memoria disponible para Linux \\ \hline
/proc/hpc/nodes/[openMosix\_ID]/speed & velocidad del nodo relativa a un PIII/1GHz \\ \hline
/proc/hpc/nodes/[openMosix\_ID]/status & estado del nodo \\ \hline
/proc/hpc/nodes/[openMosix\_ID]/tmem & memoria disponible \\ \hline
/proc/hpc/nodes/[openMosix\_ID]/util & utilizaci\'on del nodo \\ \hline
\end{tabular}
\caption{Administraci\'on: Informaci\'on de los otros nodos}
\end{center}
%---------------------------------------------------------------------------------------------------------
\subsection{Las herramientas de \'area de usuario}
\hspace{0.5in}Estas herramientas permitir\'an un f\'acil manejo del cluster openMosix. Seguidamente se enumeran con todos sus par\'ametros.\\

{\tt  migrate [PID] [openMosix\_ID]} envia una petici\'on de migrado del proceso identificado con el ID, al nodo que indiquemos..\\

{\tt mon} es un monitor de los {\em daemons} basado en el terminal y da informaci\'on relevante sobre el estado actual que puede ser visualizada en diagramas de barras.\\

{\tt mosctl} es la principal utilidad para la configuraci\'on de openMosix. Su sintaxis es:
\begin{verbatim}
mosctl  [stay|nostay]
       [block|noblock]
       [quiet|noquiet]
       [nomfs|mfs]
       [expel|bring]
       [gettune|getyard|getdecay]
\end{verbatim}

%--esta paranoia de if-else's sirve para quadrar bien el texto en los diferentes formatos
\ifpdf
  \end{table}
  \begin{table}
\fi

\begin{htmlonly}
  \end{table}
\end{htmlonly}
%--

\begin{verbatim}
        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]
\end{verbatim}

\end{table}

\begin{table}
\begin{center}
\begin{tabular}{ | l | l | } \hline
stay & desactiva la migraci\'on autom\'atica \\ \hline
nostay & migraci\'on autom\'atica (defecto) \\ \hline
lstay & local processes should stay \\ \hline
nolstay & los procesos locales podran migrar \\ \hline
block & bloquea la llegada de otros procesos \\ \hline
noblock & permite la llegada de procesos \\ \hline
quiet & desactiva la posibildiad de dar informaci\'on sobre la carga del nodo \\ \hline
noquiet & activa la posibildiad de dar informaci\'on sobre la carga del nodo \\ \hline
nomfs & desactiva MFS \\ \hline
mfs & activa MFS \\ \hline
expel & env\'\i a fuera del nodo los procesos que han llegado previamente \\ \hline
bring & traer\'a todos los procesos migrados hacia su nodo ra\'\i z \\ \hline
gettune & muestra el par\'ametro de overhead \\ \hline
getyard & muestra la utilizaci\'on actual de Yardstick \\ \hline
getdecay & muestra el estado del par\'ametro decay \\ \hline
whois & nos muestra el openMosix-ID, la direcci\'on IP y los nombres de host del cluster \\ \hline
getload & muestra la carga (openMosix-) \\ \hline
getspeed & muestra la velocidad (openMosix-) \\ \hline
status & muestra el estado y la configuraci\'on actual \\ \hline
isup & nos informa de si un nodo est\'a funcionando o no (ping openMosix) \\ \hline
getmem & muestra la memoria l\'ogica libre \\ \hline
getfree & muestra la memoria f\'\i sica libre \\ \hline
getutil  & muestra la utilizaci\'on del nodo \\ \hline
setyard  & establece un nuevo valor para Yardstick \\ \hline
setspeed & establece un nuevo valor para la velocidad (openMosix-) \\ \hline
setdecay & establece un nuevo valor para el intervalo del decay \\ \hline
\end{tabular}
\caption{Administraci\'on: Par\'ametros de {\tt mosctl} con m\'as detalle}
\end{center}

\hspace{0.5in}Con {\tt mosrun} ejecutaremos un comando especialemte configurado en un nodo establecido.\\
Su sintaxis: {\tt mosrun  [-h|openMosix\_ID| list\_of\_openMosix\_IDs] command [arguments]}\\

El comando {\tt 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.\\

\begin{center}
\begin{tabular}{ | l | l | } \hline
nomig  & runs a command which process(es) won't migrate \\ \hline
runhome & ejecuta un comando bloqueado en el nodo ra\'\i z \\ \hline
runon & ejecutar\'a un comando el cu\'al ser\'a directamente migrado y bloqueado a cierto nodo \\ \hline
cpujob & informa a openMosix que el proceso est\'a ligado a la CPU \\ \hline
iojob & informa a openMosix que el proceso est\'a ligado a la E/S \\ \hline
nodecay & ejecuta un comando e informa al cluster de no refrescar las estadisticas de carga \\ \hline
slowdecay & ejecuta un comando con intervalo de decay grande para acumular en las estad\'\i sticas \\ \hline
fastdecay & ejecuta un comando con intervalo de decay peque\~{n}o para acumular en las estad\'\i sticas \\ \hline
\end{tabular}
\caption{Administraci\'on: Par\'ametros adicionales para {\tt mosrun}}
\end{center}

%--esta paranoia de if-else's sirve para quadrar bien el texto en los diferentes formatos
\ifpdf
  \end{table}
  \begin{table}
\fi

\begin{htmlonly}
  \end{table}
\end{htmlonly}
%--

\hspace{0.5in}{\tt setpe} es una utilidad de configuraci\'on manual del nodo
{\em sintaxis:}
\begin{verbatim}
        setpe   -w -f   [hpc_map]
        setpe   -r [-f  [hpc_map]]
        setpe   -off
\end{verbatim}

{\tt -w} lee la configuraci\'on de openMosix desde un fichero (normalmente /etc/hpc.map).

{\tt -r} escribe la configuraci\'on actual de openMosix en un fichero (normalmente /etc/hpc.map).

{\tt -off} desactiva la configuraci\'on actual del cluster.\\

\hspace{0.5in}{\tt tune} es una utilidad de calibraci\'on y optimizaci\'on de openMosix (para m\'as informaci\'on recurra a las p\'aginas {\em man} de tune).\\
\end{table}

\newpage

\hspace{0.5in}Existen utilidades adicionales a la interf\'\i cie de {\em /proc} y a las l\'\i nias de comandos.
Por ejemplo existen unos parches para {\tt ps} y para {\tt top} (llamados {\tt mps} y {\tt mtop}) los cuales muestran adicionalmente el ID de nuestro nodo openMosix en una columna.
Esta posibilidad es interesante para encontrar d\'onde ha migrado un cierto proceso.

Para clusters peque\~{n}os pueden sernos muy \'utiles las utilidades de openMosixView, una GUI para las tareas de administraci\'on m\'as comunes y que m\'as adelante se detalla en un cap\'\i tulo.
%\end{table}
%---------------------------------------------------------------------------------------------------------
\subsection{Detecci\'on autom\'atica de nodos}
\hspace{0.5in}El demonio de auto-detecci\'on de nodos, {\tt omdiscd}, proporciona un camino autom\'atico para la configuraci\' on de nuestro cluster openMosix. Con \'el podremos eliminar la necesidad de configuraciones manuales como son la edici\'on del fichero {\em /etc/mosix.map} .

{\tt omdiscd} genera un env\'\i o de paquetes {\em multicast} (a todas las direcciones, en nuestro caso, nodos) para notificar a los otros nodos que hemos a\~{n}adido uno nuevo. Esto significa que al a\~{n}adir un nodo s\'olo tendremos que iniciar {\tt omdiscd} en \'el.

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

\begin{verbatim}
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. 
\end{verbatim}

\hspace{0.5in}Un ejemplo de buena configuraci\'on podr\'\i a ser la siguiente:
\begin{verbatim}
[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
\end{verbatim}

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\'on, con el comando {\tt omdiscd}.

Ahora echando un vistazo a los {\em logfiles} tendr\'\i amos que ver algo parecido a
\begin{verbatim}
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
\end{verbatim}

Tendremos el cluster listo para ser utilizado.

\hspace{0.5in}{\tt omdiscd} tiene otras opciones entre las que cuentan poder ejecutarse como un demonio (por defecto) o en {\em background} (segundo plano) donde la salida ser\'a la pantalla (la salida est\'andar), con el comando {\tt omdiscd -n}. La interf\'\i cie, como ya se ha indicado, debe ser especificada con la opci\'on {\tt -i}.

Ahora vamos a ver brevemente la herramienta {\tt showmap}. Esta utilidad nos mostrar\'a el nuevo mapa.
\begin{verbatim}
[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
\end{verbatim}

\hspace{0.5in}Existen otras muchas utilidades que pueden sernos \'utiles para la detecci\'on autom\'atica de nodos, como un mecanismo de routing para clusters con m\'as de una red de conexi\'on. Toda esta informaci\'on es actualizada constantemente y podremos encontrarla en los ficheros README y DESIGN de las herramientas de usuario.
%--------------------------------------------------------------------------
\subsubsection*{Compilaciones}
\hspace{0.5in}Si queremos obtener este m\'odulo a partir de las fuentes tendremos que hacer una peque\~{n}a modificaci\'on en el fichero {\em openmosix.c}. Una de las l\'\i nias, concretamente 
\begin{verbatim}
#define ALPHA
\end{verbatim}
tendremos que comentarla ya que nosotros estamos trabajando en plataforma x86.

Si quisi\'eramos tener un historial m\'as detallado podemos editar {\em main.c} para escribir

{\tt log\_set\_debug(DEBUG\_TRACE\_ALL);}  (en la l\'\i nia 84 aproximadamente) 

ahora podremos ejecutar

\hspace{1in}\colorbox{gray}{{\tt make clean}}

\hspace{1in}\colorbox{gray}{{\tt make}}

%--------------------------------------------------------------------------
\subsubsection*{Problemas}
\hspace{0.5in}Algunas veces la auto-detecci\'on no funcionar\'a tal como podr\'\i amos esperar, per ejemplo cuando un nodo deber\'\i a ser detectado y no ve el tr\'afico multicast que se lleva a cabo en la red.

Esto ocurre con algunas targetas PCMCIA. Una soluci\'on posible ser\'\i a poner la interf\'\i cie en {\em modo prom\'\i scuo}, tal como se detalla seguidamente:
\begin{verbatim}
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
\end{verbatim}

\hspace{0.4in}Algo que podr\'\i amos probar es forzar manualmente nuestro NIC a modo prom\'\i scuo y/o multicast, as\'\i :
\begin{verbatim}
ifconfig ethx promisc
\end{verbatim}
\hspace{0.2in}o
\begin{verbatim}
ifconfig ethx multicast 
\end{verbatim}

Podremos ejecutar igualmente

\hspace{1in}\colorbox{gray}{{\tt tcpdump -i eth0 ether multicast}}


%lo que tiene el mismo efecto, pero ahora seremos capaces de ver los paquetes por s\'\i mismos.
Si se nos muestra {\bf simulated} es que seguramente hemos olvidado poner el comentario a la l\'\i nia {\tt \#define ALPHA}, ser\'\i a:
\begin{verbatim}
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]# 
\end{verbatim}
