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.

Como 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]:

pbsnodes: Componentes del clúster

El comando pbsnodes nos permite examinar los nodos que se encuentran en el clúster, sus características y cuál es su estado:

[nodo]
     state = [estado]
     np = [ncpus]
     properties = [cola asignada]
     ntype = [tipo]
     jobs = [lista de jobs que tiene ejecutándose]
     status = [propiedades físicas de la unidad]

Los valores para el nodo:

De las más importantes tenemos:

Se muestra una parte de su ejecución para mostrar su contenido:

[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
Array de jobs

La cola PBS permite hacer un conjunto de jobs tratados de manera vectorial. A cada uno de estos jobs la cola PBS le assigna un único valor determinado por las directrices del flag -t [array]. Esto nos puede resultar útil para ejecutar múltiples veces un programa/aplicación en la que va variando un parámetro. Un ejemplo muy sencillo se puede construir con la función ?genenv de Matlab que nos permite coger variables del entorno. Para ilustrarlo se crea el archivo de matlab attachment:imprimir_numero.m?, el cuál imprime por pantalla unos valores del sistema. Este programa lo ejecutaremos cinco veces independientemente con la siguiente script de colas (llamado matlab_pruebas.pbs):

#!/bin/bash
### Job name
#PBS -N MATprueba
### Max run time
#PBS -l walltime=00:01:00
### Queue name 
#PBS -q grid 
### Job mail
#PBS -m ea
#PBS -M user@unican.es
### Array request
#PBS -t 1-5
### Number of nodes and processors per node
#PBS -l nodes=1:ppn=1

cd ${PBS_O_WORKDIR}

export LD_ASSUME_KERNEL=2.6.18
export PATH=/software/Matlab_R2009a/bin:$PATH
matlab -logfile ${PBS_O_WORKDIR}/log_lluis.err -r "cd ${PBS_O_WORKDIR};imprimir_numero;" -nosplash -nodesktop

Lanzamos el job y aparecen:

[user@ui ~]$ qstat -n1 | grep MAT
308635-1.encina user    grid     MATprueba-  19710     1  --    --  48:00 R   --    wn002
308635-2.encina user    grid     MATprueba-  19731     1  --    --  48:00 R   --    wn002
308635-3.encina user    grid     MATprueba-   1060     1  --    --  48:00 R   --    wn003
308635-4.encina user    grid     MATprueba-   1079     1  --    --  48:00 R   --    wn003
308635-5.encina user    grid     MATprueba-  23120     1  --    --  48:00 R   --    wn004

Una vez terminado aparecen los siguientes ficheros en el directorio de trabajo:

[user@ui ~]$ ls -l
-rw-r--r-- 1 user gmeteo 1030 Dec 14 17:43 log_user.err
-rwxr-xr-x 1 user gmeteo  526 Dec 14 17:42 matlab_prueba.pbs
-rw------- 1 user gmeteo  374 Dec 14 17:43 MATprueba.e308635-1
-rw------- 1 user gmeteo  374 Dec 14 17:43 MATprueba.e308635-2
-rw------- 1 user gmeteo  374 Dec 14 17:43 MATprueba.e308635-3
-rw------- 1 user gmeteo  374 Dec 14 17:43 MATprueba.e308635-4
-rw------- 1 user gmeteo  374 Dec 14 17:43 MATprueba.e308635-5
-rw------- 1 user gmeteo 1121 Dec 14 17:43 MATprueba.o308635-1
-rw------- 1 user gmeteo 1121 Dec 14 17:43 MATprueba.o308635-2
-rw------- 1 user gmeteo 1121 Dec 14 17:43 MATprueba.o308635-3
-rw------- 1 user gmeteo 1121 Dec 14 17:43 MATprueba.o308635-4
-rw------- 1 user gmeteo 1121 Dec 14 17:43 MATprueba.o308635-5

Aparecen los ficheros de salida de los cinco jobs. Miramos el contenido del tercero:

[user@ui ~]$ cat MATprueba.e308635-3
which: no shopt in (/software/Matlab_R2009a/bin:/software/CentOS/5.2/netcdf/4.1.1/gcc-gfortran4.1.2/bin:/opt/d-ca
che/srm/bin:/opt/d-cache/dcap/bin:/opt/edg/bin:/opt/glite/bin:/opt/globus/bin:/opt/lcg/bin:/bin:/usr/bin:/oceano/
gmeteo/users/lluis/bin)
[user@ui ~]$ cat MATprueba.o308635-3
Warning: No display specified.  You will not be able to display graphics on the screen.
Warning: No window system found.  Java option 'MWT' ignored

                            < M A T L A B (R) >
                  Copyright 1984-2009 The MathWorks, Inc.
                Version 7.8.0.347 (R2009a) 64-bit (glnxa64)
                             February 12, 2009

 
  To get started, type one of these: helpwin, helpdesk, or demo.
  For product information, visit www.mathworks.com.
 

shellpath =

/software/Matlab_R2009a/bin:/software/CentOS/5.2/netcdf/4.1.1/gcc-gfortran4.1.2/bin:/opt/d-cache/srm/bin:/opt/d-ca
che/dcap/bin:/opt/edg/bin:/opt/glite/bin:/opt/globus/bin:/opt/lcg/bin:/bin:/usr/bin:/oceano/gmeteo/users/lluis/bin

Este es el path: /software/Matlab_R2009a/bin:/software/CentOS/5.2/netcdf/4.1.1/gcc-gfortran4.1.2/bin:/opt/d-cache/
srm/bin:/opt/d-cache/dcap/bin:/opt/edg/bin:/opt/glite/bin:/opt/globus/bin:/opt/lcg/bin:/bin:/usr/bin:/oceano/gmete
o/users/lluis/bin

pbsjob =

308635-3.encina

Esta es la realizacion: "308635-3.encina"

num =

3


num =

     3

Este es el numero: 3

Mientras que en el correo (llegando por orden de finalización), me aparecen 5 correos con el título:PBS JOB 308635-[N].ce01.macc.unican.es siendo [N]=(1,5). El contenido del correo #3

PBS Job Id: 308635-3.encina
Job Name:   MATprueba-3
Exec host:  wn003.macc.unican.es/0
Execution terminated
Exit_status=0
resources_used.cput=00:00:02
resources_used.mem=0kb
resources_used.vmem=0kb
resources_used.walltime=00:00:18
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