User Tools

Site Tools


cluster:uso_basico

Uso básico del cluster

Control de versiones

Fecha Actividad Autor
24/07/2010 Publicación inicial Jorge Iván Meza Martínez.
03/11/2010 Nueva sección: Determinar la finalización de los trabajos enviados Jorge Iván Meza Martínez.

Introducción

En este capítulo se ejecuta un proceso simple en el cluster para verificar su funcionamiento. También se muestran las herramientas principales para consultar el pool de servidores, enviar trabajos, consultar la cola de trabajos y remover trabajos de la misma.

El envío de los trabajos al cluster debe realizarse (por seguridad) por usuarios sin privilegios, con es el caso del usuario invitado creado anteriormente.

Tiempo estimado

40 minutos

Precondición

Supuestos

  • Los 3 nodos se encuentran activos.

Verificar el pool de servidores del cluster

El pool de servidores hace referencia a los nodos del cluster que se encuentran conectados al nodo prinicipal. En este caso, deberán estar conectados los dos nodos trabajadores: c-wn1 y c-wn2.

Para verificar el estado del pool de servidores se debe ejecutar el siguiente comando desde el nodo c-head.

$ condor_status
 
    Name               OpSys      Arch   State     Activity LoadAv Mem   ActvtyTime
 
    c-wn1.micluster.co LINUX      INTEL  Unclaimed Idle     0.360   249  0+00:05:04
    c-wn2.micluster.co LINUX      INTEL  Unclaimed Idle     0.300   249  0+00:05:04
                         Total Owner Claimed Unclaimed Matched Preempting Backfill
 
             INTEL/LINUX     2     0       0         2       0          0        0
 
                   Total     2     0       0         2       0          0        0

Enviar un trabajo simple al cluster

La primera prueba de ejecución de trabajos que es interesante realizar, es el solicitar el hostname del equipo que atienda el trabajo ya que se lanza desde el nodo interactivo (en este caso es el mismo c-head) pero deberá ser atendido por uno de los nodos trabajadores, así que si el cluster funciona correctamente tendrá que devolver el hostname de c-wn1 o c-wn2 según cual de ellos haya atendido la solicitud del cluster.

El primer paso para enviar un trabajo al cluster es la creación del archivo de envío (submit) con la especificación de la solicitud. En este caso es la siguiente.

$ vi hostname.submit
hostname.submit
executable = /bin/hostname
universe   = vanilla
log        = _hostname.log
output     = _hostname.out
error      = _hostname.err
queue

En términos generales, se le está pidiendo al cluster que ejecute el proceso /bin/hostname y que genere los archivos log, out y err con la información de registro, salida estándar y salida de error respectivamente.

Para enviar el trabajo al cluster se ejecuta el siguiente comando.

$ condor_submit hostname.submit
 
    Submitting job(s).
    Logging submit event(s).
    1 job(s) submitted to cluster 1.

Verificar la cola de trabajos del cluster

Es posible consultar el estado de la cola de trabajos del cluster con el siguiente comando, el cual si se ejecuta rápidamente podrá verificar la existencia del trabajo recién enviado y que no ha sido procesado aún.

$ condor_q
 
    -- Submitter: c-head.micluster.com : <192.168.1.220:9593> : c-head.micluster.com
     ID      OWNER            SUBMITTED     RUN_TIME ST PRI SIZE CMD               
       1.0   invitado        7/23 14:23   0+00:00:00 I  0   0.0  hostname          
 
    1 jobs; 1 idle, 0 running, 0 held

Consultar el resultado de la ejecución del trabajo

La ejecución del trabajo genera los archivos solicitados en el archivo submit. Como se mencionó anteriormente, se solicitó se almacenara la información de errores (err), registro (log) y salida estándar (out).

$ ls -l
 
    total 28
    -rw-rw-r-- 1 invitado invitado   0 jul 23 14:23 _hostname.err
    -rw-rw-r-- 1 invitado invitado 604 jul 23 14:23 _hostname.log
    -rw-rw-r-- 1 invitado invitado 131 jul 23 14:23 hostname.submit
    -rw-rw-r-- 1 invitado invitado  20 jul 23 14:23 _hostname.out

En este caso el archivo de errores (_hostname.err) se encuentra vacío ya que la ejecución del programa no escribió nada a través de stderr.

El contenido del archivo de registro (_hostname.log) muestra cuando el proceso fue recibido por la cola, inicio su ejecución y cuando esta finalizó.

$ cat _hostname.log 
 
    000 (001.000.000) 07/23 14:23:46 Job submitted from host: <192.168.1.220:9593>
    ...
    001 (001.000.000) 07/23 14:23:58 Job executing on host: <192.168.1.221:9023>
    ...
    005 (001.000.000) 07/23 14:23:58 Job terminated.
            (1) Normal termination (return value 0)
                    Usr 0 00:00:00, Sys 0 00:00:00  -  Run Remote Usage
                    Usr 0 00:00:00, Sys 0 00:00:00  -  Run Local Usage
                    Usr 0 00:00:00, Sys 0 00:00:00  -  Total Remote Usage
                    Usr 0 00:00:00, Sys 0 00:00:00  -  Total Local Usage
            0  -  Run Bytes Sent By Job
            0  -  Run Bytes Received By Job
            0  -  Total Bytes Sent By Job
            0  -  Total Bytes Received By Job
    ...

En el archivo de salida estándar (_hostname.out) deberá aparecer, en este caso específico, el hostname del nodo que efectivamente proceso el trabajo.

$ cat _hostname.out 
 
    c-wn1.micluster.com

Consultar la información de los trabajos completados

Para consultar la información histórica de los trabajos ya completados utilice el comando condor_history de la siguiente manera.

$ condor_history
 
     ID      OWNER            SUBMITTED     RUN_TIME ST   COMPLETED CMD            
       1.0   invitado        7/23 14:23   0+00:00:01 C   7/23 14:23 /bin/hostname  
       2.0   invitado        7/23 14:56   0+00:00:00 C   7/23 14:56 /bin/hostname  
       3.0   invitado        7/23 14:56   0+00:00:00 X   ???        /bin/hostname  
       4.0   invitado        7/23 16:25   0+00:00:02 C   7/23 16:25 /home/invitado/

Remover trabajos de la cola de trabajos

Para remover un trabajo de la cola del cluster es necesario identificar el ID específico del trabajo, esto se logra con la ejecución de condor_q.

$ condor_q
 
    -- Submitter: c-head.micluster.com : <192.168.1.220:9593> : c-head.micluster.com
     ID      OWNER            SUBMITTED     RUN_TIME ST PRI SIZE CMD               
       3.0   invitado        7/23 14:56   0+00:00:00 I  0   0.0  hostname          
 
    1 jobs; 1 idle, 0 running, 0 held

Con el ID se invoca el comando condor_rm para eliminarlo de la cola.

$ condor_rm 3.0
 
    Job 3.0 marked for removal

Determinar la finalización de los trabajos enviados

Conocer cuando un trabajo (junto con sus subtrabajos) ha finalizado es un elemento importante para la automatización de tareas en el cluster mediante scripts. Esto no es una tarea trivial ya que al enviarse la tarea al cluster (con condor_submit) la ejecución se envía al background y sólo es posible conocer el estado de la tarea mediante la consulta de la cola de trabajos (con condor_q).

Para esto se utiliza el comando condor_wait cuya función es la de esperar mientras se finaliza la ejecución de un trabajo, esto se implementa mediante la revisión del archivo de registro (log) asociado al trabajo específico.

Para determinar cuando ha terminado el trabajo propietario del archivo de registro trabajoLargo.log es necesario ejecutar el siguiente comando.

$ condor_wait trabajoLargo.log

De esta manera es posible medir cuantitativamente el tiempo que permanece la tarea en el clúster, sin embargo este tiempo no corresponde exactamente a la ejecución de la misma ya que incluye además los tiempos de transporte de la información en la red y los tiempos que permanece el trabajo en las colas del clúster.

$ time condor_wait trabajoLargo.log

Enlaces

cluster/uso_basico.txt · Last modified: 2012/02/26 22:35 (external edit)