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 |