Información actualizada en la ?wiki del cluster del SdeI
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.
Los directorios a continuación indicados son accesibles desde cualquier maquina del cluster:
[user@ui ~]$ quota -s Disk quotas for user user (uid XXXXX): Filesystem blocks quota limit grace files quota limit grace abedul:/meteo 16655M 40960M 51200M 195k 0 0
[user@ui ~]$ df -h /oceano/gmeteo/DATA Filesystem Size Used Avail Use% Mounted on - 127T 34T 94T 27% /vols/seal/oceano/gmeteo/DATA
[user@ui ~]$ df -h /oceano/gmeteo/WORK Filesystem Size Used Avail Use% Mounted on - 13T 8,6T 4,5T 66% /vols/seal/oceano/gmeteo/WORK
La gestión del software, tanto compiladores como programas, se realiza mediante el comando use.
[user@ui ~]$ source /software/meteo/use/load_useEs recomendable copiar esta instrucción en el fichero .bashrc, disponible en cada home de usuario, para no repetir su uso.
[user@ui ~]$ use Programs available for "use": cdo gmt grib_api grib_api1.10 hdf5 intel intel11 java matlab2009a matlab2013a nco ncview netcdf netcdfintel netcdf_viejo openmpi14intel openmpi18intel pgi p_interp python python2.7.2 python2.7.2b
[user@ui ~]$ use python2.7.2b
El cluster SMG dispone de un sistema de colas ?TORQUE/PBS para la gestión de jobs.
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]:
[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]
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=1292346952El 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.
A continuación se muestra un aplantilla para la ejecución de jobs:
#!/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 directivas PBS/TORQUE:
Para editar un script utilizar los editores 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:
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.
En este caso, no se lanzará una script 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.encina [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
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
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.