3.2. Job simple

Por lo general, utilizar el scheduler SGE se basa en escribir un script que describe la tarea. Una vez este script correcto, se manda a la cola deseada y se espera a que la tarea se realiza en el cluster. Puede ser una tarea compleja y pesada esta escritura. Por eso es una buena costumbre basarse en scripts anteriores que se sabe que funcionan, y adaptarlos a la nueva tarea.

En el máster del cluster, se proporciona al usuario unos ejemplos de scripts, en el directorio /opt/gridengine/examples/jobs. Se muestra aquí un ejemplo de un job simple. Los comentario empiezan con el carácter #. Las opciones para el scheduler empiezan con #$ seguido de la opción.

      
#!/bin/bash
# This is a simple example of a SGE batch script

# Nombre del job
#$ -N Simple

#
# print date and time
date
# Sleep for 20 seconds
sleep 20
# print date and time again
date
      

Para correr el job, se utiliza el comando qsub. Las opciones del comando, como vimos con el ejemplo, pueden integrarse dentro del script, o directamente en linea de comando. Y la ultima palabra la tiene las opciones en linea.

Lo que sigue muestra la manera general de someter un job, y verificar su estado:

      
$ qsub simple.sh 
Your job 51 ("Simple") has been submitted
$ qstat
job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID 
-----------------------------------------------------------------------------------------------------------------
     51 0.00000 Simple     jerome       qw    02/16/2016 12:54:58                                    1        
$ qstat
job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID 
-----------------------------------------------------------------------------------------------------------------
     51 0.55500 Simple     jerome       r     02/16/2016 12:55:08 all.q@compute-0-0.local            1   
$ qstat
$ 
      

El job mandado tiene el numero 51, que sera su JOBID para el sistema de colas SGE. Luego, se verifica su estado, y esta encolado y esperando (qw). Sin opción, el comando qstat muestra los jobs para el usuario. Para ver a los jobs de todos los usuarios, se necesita la opción -u \*.

El job entra a correr (r). A partir de este momento, debido a las características de la cola, tiene 24 horas para terminar. Como lo vimos, el script es muy simple, así que en menos de un minuto acabara. Y cuando esto ocurre, el comando qstat no enseña ningún job.

Al final, se obtiene 2 archivos, que contienen la salida estándar y la salida de error, con nombre oJOBID y eJOBID respectivamente. En este caso preciso, como se puso un nombre al job (opción -N ), se obtendrá 2 archivos. Se verifica que el script funciono (la salida de error esta vacía), y que el script hizo lo que se le pidió:

$ ls -l | grep Simple
-rw-r--r--  1 jerome jerome        0 16 févr. 12:55 Simple.e51
-rw-r--r--  1 jerome jerome      142 16 févr. 12:58 Simple.o51
$ cat Simple.o51 
Tue Feb 16 12:55:09 CST 2016
Tue Feb 16 12:55:29 CST 2016