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.
Un job del clúster tiene unos cuantos requerimientos básicos tales como:
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:
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 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
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.