WikiPrint - from Polar Technologies

Información actualizada en la ?wiki del cluster del SdeI

Submitting machine SMG

El acceso al clúster se debe hacer desde la maquina ui.macc.unican.es mediante ?SSH:

[user@localmachine]$ ssh user@ui.macc.unican.es

O bien con la aplicación ?putty desde Windows.

Sistema de ficheros

Los directorios a continuación indicados son accesibles desde cualquier maquina del cluster:

Software

La gestión del software, tanto compiladores como programas, se realiza mediante el comando use.

¿Cómo usar el comando use?

Sistema de colas TORQUE/PBS

El cluster SMG dispone de un sistema de colas ?TORQUE/PBS para la gestión de jobs.

Comandos

Hay distintos comandos para gestionar los jobs de un usuario, para mas inforamción sbre ellos abrir el manual con la instrucción man [comando]:

Ejemplo de uso:

[user@ui ~]$ pbsnodes wn002
wn002
     state = job-exclusive
     np = 2
     properties = dell,grid
     ntype = cluster
     jobs = 0/308594.encina, 1/encina
     status = opsys=linux,uname=Linux wn002 2.6.32.14-5-16-18-33-36-38-41-60-74-89-103-104 #18 SMP 
Sat May 29 06:31:42 EDT 2010 x86_64,sessions=10248, 18567, nsessions=2,nusers=1, idletime=26392, totmem=5137992kb, 
availmem=4784508kb, physmem=2057808kb, ncpus=2, loadave=1.03, netload=2685739215248,state=free, jobs=308594.ce01.
macc.unican.es  308606.encina, varattr=, rectime=1292346952

El nodo wn002 (con 2 cpus y 2GB de memoria y está totalmente ocupada con dos trabajos (308594.encina y 308606.encina) de un mismo usuario.

Jobs

Un job del clúster tiene unos cuantos requerimientos básicos tales como:

Los requerimientos de un job en una cola PBS

En la gestión de colas TORQUE/PBS existen dos términos para referirse a la unidad cálculo: el node y el cpp. Un node equivalen a las unidades físicas de cálculo que integran distintas cantidades de cpus cpp (2, 8, 16,...)

Las peticiones se hacen por un conjunto de flags. El envio del job al gestor de la cola se puede hacer añadiendo todas las directrices en la línea de comandos de la aplicación, o por medio de una script (archivo de texto con instrucciones de sistema). En según que circumstancias nos va interesar hacerlo de una manera u otra, pero las dos son equivalentes. La estructura tipo de un script (llamado por ejemplo job.pbs) de colas tiene la siguiente estructura:

#!/bin/bash
### Job name
#PBS -N [jobname]
### Max run time
#PBS -l walltime=[HH]:[MM]:[SS]
### Max memory
#PBS -l mem=[MM][kb/mb/gb/tb]
### Queue name 
#PBS -q [queueNAME]
### Job mail
#PBS -m [flags]
#PBS -M [emailCOUNT]
### Standard error output
#PBS -e [rutaArchivo]
### Standard output
#PBS -o [rutaArchivo]
### Dependecy
#PBS -W depend=afterany:[jobid]
### Array request
#PBS -t [array]
### System variable
#PBS -v [variable]
### Number of nodes and processors per node
#PBS -l nodes=[N]:ppn=[M]

cd ${PBS_O_WORKDIR}
use [software]

[aplicacion]

En esta plantilla se muestra la sintaxis de los siguientes requerimientos/especificaciones. Se tienen que cambiar los argumentos que estén entre [].

Para editar un script desde una ventana de mar se puede utilizar nano y/o vi :

[user@ui ~]$ nano job.pbs
[user@ui ~]$ vi job.pbs

El job se mandaría a la cola con la instrucción:

[user@ui ~]$ qsub job.pbs

o bien por la línea de comandos en una línea como sigue:

qsub -N [jobname] -l walltime=[HH]:[MM]:[SS] -l mem=[MM] -q [queueNAME] -m [flags] -M [emailCOUNT] -e [rutaArchivo] 
-o [rutaArchivo] -W afterany:[jobid] -t [array] -v [variable] -l nodes=[N]:ppn=[M] [aplicacion]

Todos los jobs tienen un número que los identifica que se llama [JOB ID]. En el clúster del GMS tiene el siguiente formato: [jobid].encina. Cada job tiene associado los siguientes valores PBS:

Ejemplos

Lanzar un job interactivo

A la hora de hacer pruebas es muy útil abrir una sessión interactiva en un nodo del clúster. Esto se hace mandando un job interactivo. La sessión que se habra durará todo el tiempo que se quiera hasta que no se le mande la instrucción de salida 'exit'. La sintaxis es (la cola asume 'ppn=1'):

qsub -I -l nodes=1 -q [queue]

NOTA: A la hora de lanzar este tipo de jobs se tiene que ser muy consciente de que se está ocupando un nodo del clúster. Tendría que utilizarse sólo para realizar pruebas que no sean muy largas. Para lanzar jobs muy largos mejor prepararse una script de shell.

Lanzar un job con dependencias

En este caso, no se lanzará una script attachment:listar.bash? hasta que no termine la espera de 60 segundos (una vez corregido el walltime)

[user@ui ~]$ date
Mon Dec 13 17:53:57 CET 2010
[user@ui ~]$ qsub prueba.pbs 
307079.ce01.macc.unican.es
[user@ui ~]$ qsub -N listado -q grid -W depend=afterany:307079 -l nodes=1 ./listar.bash 
307080.encina

La script 'listar.bash' no se ejecutará hasta que termine 'prueba.pbs' con pid 307079. Se sigue:

[user@ui ~]$ qstat -n1 | grep prueba
307079.encina user    grid     prueba      27714     1  --    --  48:00 R   --    wn002
[user@ui ~]$ qstat -n1 | grep listado 
307080.encina user    grid     listado       --      1  --    --  48:00 H   --     -- 

El trabajo 307079 está ejecutándose en le nodo wn002, pero el trabajo 307080 está a la espera. Más tarde.

[user@ui ~]$ date
Mon Dec 13 17:54:43 CET 2010
[user@ui ~]$ ls
espera.bash  listar.bash  prueba.pbs
[user@ui ~]$ date
Mon Dec 13 17:55:02 CET 2010
[user@ui ~]$ ls
espera.bash      prueba.pbs   listar.bash   prueba.e307079     prueba.o307079

El primer job ja ha finalizado. Pasados unos segundos el segundo también termina

[user@ui ~]$ date
Mon Dec 13 17:55:12 CET 2010
[user@ui ~]$ ls 
espera.bash listado.e307080 listado.o307080 listar.bash prueba.e307079 prueba.o307079 prueba.pbs
[user@ui ~]$ cat prueba.o307079
Hola mundo
[user@ui ~]$ cat prueba.e307079
Trabajo con variable

Tomamos el job sencillo de ejemplo. En este caso el tiempo de espera para la escript se lo pasaremos como variable del job.

#!/bin/bash
### Job name
#PBS -N prueba
### Max run time
#PBS -l walltime=00:00:10
### Queue name 
#PBS -q grid 
### Number of nodes and processors per node
#PBS -l nodes=1:ppn=1

cd ${PBS_O_WORKDIR}

./espera.bash ${waitTIME}

Lanzando el job:

[user@ui ~]$ qsub -v waitTIME='60' prueba.pbs 

Otras wikis

Monitorización del clúster

Por entorno web está instalado el ?ganglia. En este entorno se muestra toda la actividad de los nodos (consumo de cpu, memoria, disocs duros, etc...) con una interfaz gráfica.

Recomendaciones