\newpage
%===========================================================================
%       x.23 > API
%===========================================================================
\pagestyle{empty}
\begin{latexonly}
\ifpdf
 \begin{figure}[htbp]
%      \includegraphics[bb = -250 220 0 0, scale=1]{./TuXes/tux-.jpg}
 \end{figure}
 \vspace{5in}
\else
 \begin{figure}
%      \includegraphics[-275,650][0,0]{./TuXes/tux-}
 \end{figure}
\fi
\hfill\line(1,0){400}
\end{latexonly}
\topmargin 1in
\section{EL API DE OPENMOSIX}
\begin{latexonly}
\line(1,0){400}
\newpage
\end{latexonly}
\topmargin 0in
\pagestyle{fancy}
%========================cita===============================================
\begin{latexonly}
\hspace{1in}\textcolor{blue_omosix}{{\em The real danger is not that computers will begin to think like men,}}

\hspace{1in}\textcolor{blue_omosix}{{\em  but that men will begin to think like computers.}}

\hspace{4in}\textcolor{blue_omosix}{{\em Sydney J. Harris}}
\vspace{0.5in}

\end{latexonly}
%===========================================================================
El API de openMosix es la manera mediante la cual los programadores pueden
controlar el comportamiento de un cluster. Sirve como herramienta de
diagn\'ostico para monitorizar los aspectos m\'as \'\i ntimos del
procedimiento que se lleva a cabo en el seno del nodo y, por extensi\'on, del
cluster. De esta interfaz se obtienen los datos para {\tt mosmon} por ejemplo,
para monitorizar la carga -{\em load}- o las relaciones de memoria libre y
ocupada.

No har\'a falta ser un experto para poder comprender esta interfaz, puesto que
es de una simplicidad sorprendente: lo justo
para poder saber en cualquier momento, cualquier aspecto relativo a la
algor\'\i tmica que controla el cluster: migraci\'on, balenceo, {\em etc.}

De esta manera se aconseja al lector ver como se opera en este directorio para
buscar las {\em razones} de migraci\'on, por ejemplo, o qu\'e procesos no
locales se est\'an ejecutando en su nodo -aspectos que hasta ahora hab\'\i an
permanecido ocultos al ser invisivbles al comando {\tt ps}-. Se pueden llegar
a solucionar problemas o simplemente comprender mejor a openMosix.

\vspace{.1in}
 En este apartado se describir\'a el API de openMosix, al que se puede acceder como a
 un conjunto de ficheros\footnote{Siguiendo con la filosof\'\i a
 Linux.} y escribir o leer de ellos dependiendo de su utilizaci\'on. Todos
 los ficheros se encuentran en {\em /proc/hpc/}. 
Dentro de este directorio se encuentran los siguientes subdirectorios:
\begin{itemize}
  \item {\bf admin:} variables que controlan la administraci\'on del nodo. Ver
  cuadro \ref{c_VI02} .
  \item {\bf decay:} control de estad\'\i sticas. Ver cuadro \ref{c_VI03} .
  \item {\bf info:} informaci\'on de variables relativas al nodo. Ver cuadro
  \ref{c_VI04} .
  \item {\bf nodes:} informaci\'on del estado y carga de cada uno de los nodos
  del cluster. Las variables son las mismas que para el nodo local, en {\em info}.
  \item {\bf remote:} ruta que sirve para migrar procesos hacia otros
  nodos. Ver cuadro \ref{c_VI05} .
\end{itemize}


\begin{table}
\begin{center}
\begin{tabular}{ | l | c | l | c | } \hline
{\bf Fichero} & {\bf W/R} & {\bf Funci\'on} & {\bf Valor de activaci\'on} \\ \hline \hline
block & W & bloqueo para la llegada de procesos & 1 \\ \hline
bring & W & devuelve los procesos migrados & 1 \\ \hline
config & R/W & configuraci\'on del sistema & - \\ \hline
decayinterval & W/R & intervalo de control estad\'\i stico & - \\ \hline
dfsalinks & W & activaci\'on de rutas DFSA & {\em ruta} \\ \hline
expel & W & expele procesos ajenos, activa {\em block} & 1 \\ \hline
fastdecay & W & tasa de deca\'\i da estad\'\i stica r\'apida & {\em defecto:} 926 \\ \hline
gateway & R & n\'umero de gateways en red & {\em defecto:} 0 \\ \hline
lstay & W/R & no migrar\'an procesos locales & 1 \\ \hline
mfscosts & W/R & costes de MFS & {\bf ?} \\ \hline
mfskill & W & esconde \'arboles complejos a MFS & {\em ruta}  \\ \hline
mospe & R/W & identificador de nodo (nodo ID) & {\em /etc/openmosixmap}  \\ \hline
nomfs & R/W & deshabilita la opci\'on de MFS & 1 \\ \hline
overhead & R/W & sobrecargas sobre nodos y red & - \\ \hline
quiet & R/W & el nodo deja de diseminar informaci\'on a otros & 1 \\ \hline
slowdecay & R/W & procesos con tasa de ca\'\i da lenta & {\em defecto:} 976 \\ \hline
speed & R/W & velocidad del nodo & {\em valor}  \\ \hline
sspeed & R/W & velocidad estandar, par areferencia & 10000 \\ \hline
stay & R/W & los procesos no migrar\'an & 1 \\ \hline
version & R & versi\'on de openMosix funcionando & {\em variable}  \\ \hline
\end{tabular}
\caption{El API de openMosix: {\em /proc/hpc/admin/}}
\label{c_VI02}

\vspace{.2in}
\begin{tabular}{ | l | c | l | c | } \hline
{\bf Fichero} & {\bf W/R} & {\bf Funci\'on} & {\bf Valor de activaci\'on} \\ \hline \hline
clear & W & resetea valor estad\'\i sticos del nodo & 1 \\ \hline
cpujob & W & advierte que el proceso es cpu-intensivo & 1 \\ \hline
exec & W & protege de {\tt execve} la pol\'\i tica de decay & 1 \\ \hline
execonce & W & como el anterior, pero solo para el primer  {\tt execve} & 1 \\ \hline
fast & W & estad\'\i sticas de decaimiento r\'apidas & 1 \\ \hline
inherit & W & heredadas de un proceso a sus hijos & 1 \\ \hline
iojob & W & proceso io-intensivo & 1 \\ \hline
own & R & factor de {\em decay} que utilizar\'\i a el proceso & - \\ \hline
slow & W & estad\'\i sticas de decaimiento lentas & 1 \\ \hline
\end{tabular}
\caption{El API de openMosix: {\em /proc/hpc/decay/}}
\label{c_VI03}

\vspace{.2in}
\begin{tabular}{ | l | c | l | c | } \hline
{\bf Fichero} & {\bf W/R} & {\bf Funci\'on} & {\bf Valor de activaci\'on} \\ \hline \hline
load & R  & carga del nodo & {\em variable} \\ \hline
mem & R  & memoria utilizada por el sistema & {\em variable} \\ \hline
rmem & R  & memoria del sistema en bruto & {\em variable} \\ \hline
speed & R  & velocidad del nodo o procesador del nodo & {\em variable} \\ \hline
status & R  & estado del nodo & {\em variable} \\ \hline
tmem & R  & memoria total del sistema -utilizada y sin utilizar- & {\em variable} \\ \hline
util & R  & factor de unificaci\'on del sistema & {\em variable} \\ \hline
cpus & R  & n\'umero de procesadores del sistema & {\em variable} \\ \hline
\end{tabular}
\caption{El API de openMosix: {\em /proc/hpc/info/}}
\label{c_VI04}

\vspace{.2in}
\begin{tabular}{ | l | c | l | c | } \hline
{\bf Fichero} & {\bf W/R} & {\bf Funci\'on} & {\bf Valor de activaci\'on} \\ \hline \hline
from & R & nodo de procedencia & {\em nodo ID} \\ \hline
goto & W & obligaci\'on de migrar hacia ese nodo & {\em nodo ID} \\ \hline
statm & R & estad\'\i sticas de memoria & - \\ \hline
stats & R & estad\'\i sticas de procesador & - \\ \hline
\end{tabular}
\caption{El API de openMosix: {\em /proc/hpc/remote/}}
\label{c_VI05}

\end{center}
\end{table}

\vspace{.1in}
En los cuadros se ha hablado de estad\'\i sticas referentes tanto a memoria
com a procesador. \'Estas contienen la siguiente informaci\'on:

\vspace{.1in}
{\bf\sc Estad\'\i sticas de Memoria}

\begin{itemize}
  \item tama\~{n}o total
  \item tama\~{n}o residente
  \item memoria compartida
  \item p\'aginas de texto
  \item p\'aginas de librer\'\i as
  \item p\'aginas de datos
  \item p\'aginas {\em sucias}
\end{itemize}


{\bf\sc Estad\'\i sticas de Procesador}

\begin{itemize}
  \item tiempo de usuario en el nodo
  \item tiempo de los descendientes, no se muestra
  \item {\em nice} -prioridad UNIX- del proceso
  \item {\em vsize}, tama\~{n}o virtual
  \item {\em rss}, n\'umero de p\'aginas residentes
  \item {\em nswap}, n\'umero de p\'aginas en {\em swap}
  \item {\em cnswap}, p\'aginas en {\em swap} de los descendientes
\end{itemize}

\vspace{.5in}
Por otro lado existe en {\em /proc/PID/} una estructura ampliada relativa a la
informaci\'on para cada proceso. Entre esta informaci\'on -propia de linux-
ahora podr\'an encontrarse aspectos relacionados con openMosix, como muestra
el cuadro \ref{c_VI06} .

\begin{table}
\begin{center}
\begin{tabular}{ | l | l | } \hline
{\bf Fichero} & {\bf Funci\'on} \\ \hline \hline
cantmove & motivo por el que no ha migrado el proceso \\ \hline
goto & nodo al que se desea migrar el proceso \\ \hline
lock & bloqueo del proceso en este nodo \\ \hline
migrate & obliga al proceso a migrar \\ \hline
nmigs & n\'umero de veces totales que el proceso ha migrado \\ \hline
sigmig & el solicita una se\~{n}al tras migrar  \\ \hline
where & nodo destino \\ \hline
\end{tabular}
\caption{El API de openMosix: {\em /proc/PID/}}
\label{c_VI06}
\end{center}
\end{table}