Accedir a la pàgina principal de la UniversitatbarritaServei d'Informatica de la Universitat de Valencia
[<] MULTIVAC

Introducció

Multivac és un clúster de PC integrats per l'empresa Catón, Sistemas Alternativos. Disposa de 29 nodes de càlcul, cadascun dels quals és una màquina biprocessadora Intel Xeon Dual Core 5160, 3GHz amb 3 MB de memòria cau L3, 8 GB de memòria RAM i 500 GB de disc dur. Aquests nodes estan controlats per un frontal (multivac), que s'encarrega de gestionar el sistema de cues, els usuaris i els sistemes de fitxers compartits. Tot el programari de clusterització emprat en aquest muntatge es distribueix sota llicència GPL, inclòs el gestor de cues.

La instal·lació d'aquest equip respon a la necessitat de dur a terme càlculs relativament llargs, però amb uns requeriments de memòria i disc que no justifiquen l'ús del supercomputador. Això provocava que el temps d'espera en la cua d'execució de Cèsar fóra molt elevat. Amb aquest sistema s'espera poder repartir la càrrega de treballs, de manera que s'agiliten els temps necessaris per a obtindre un resultat.

Multivac_peque.jpg
Clúster de PC de la UV

L'ús d'aquest servidor es recomana per a aquells usuaris els treballs dels quals responguen a aquestes característiques (de manera general):

  • Treballs MONOPROCESSADOR.
  • Necessitats de memòria RAM per davall de 3 GB.
  • Necessitats de disc dur per davall de 200 GB.
  • Temps d'execució llargs (fins 2 mesos).

Entorn d'usuari

L'ús d'un clúster de PC difereix substancialment de l'ús de l'Altix 3700. Mentre que en aquest últim disposem d'una única imatge del sistema operatiu, en un clúster cada equip té la seua pròpia imatge i els seus propis discos interns. Quan un usuari vol emprar el clúster, es connecta a multivac.uv.es, que és el denominat node frontal. Aquest node s'encarrega de gestionar tots els serveis del clúster (DHCP, DNS, NIS, gestor de cues, monitorització, PROXY LDAP, etc.) i és el lloc en què els usuaris preparen els seus treballs i els envien al gestor de cues. D'ell pengen els nodes de càlcul, denominats hypercatXX (on XX va de 02 a 30 actualment). Cada màquina té una àrea local de treball temporal denominada /scr amb 400 GB de capacitat. Els fitxers temporals que creen els càlculs s'han d'escriure obligatòriament en aquesta àrea, per evitar la saturació de la xarxa NFS.

Quan un treball entra en execució, el SGE crea automàticament un directori temporal en el /scr local de cada màquina. El nom d'aquest directori coincideix amb l'identificador del treball enviat. Es recomana als usuaris utilitzar aquest directori per a emmagatzemar els seus fitxers temporals. Una vegada finalitzat el càlcul, S'HA D'ELIMINAR aquest directori, prèvia còpia del seu contingut, per evitar la saturació dels discos locals.

L'accés als nodes en interactiu està permés, encara que el temps de cpu està restringit a 5 minuts i només es poden obrir dues sessions simultànies en cada equip.

Enviament de treballs al gestor de cues

En el clúster de càlcul s'ha instal·lat un gestor de cues de distribució lliure anomenat Sun Grid Engine, en la versió 6.1. Aquest gestor de cues es troba en millora constant i permet fer un repartiment adequat dels recursos de càlcul en un clúster. La configuració d'aquest gestor de cues pateix constantment canvis per poder adaptar-se a les necessitats de càlcul dels usuaris, per la qual cosa intentem mantindre aquesta pàgina tan actualitzada com siga possible.

Comandament qsub: és l'encarregat d'enviar treballs al SGE. Per obtindre informació detallada de les múltiples opcions que ofereix, consulteu el man qsub.

El comandament qsub permet llançar treballs a una cua determinada, cosa que pressuposa que l'usuari coneix els límits de cada cua i ha triat quina és la més adequada perquè el seu càlcul s'execute correctament. Si no es tria la cua de manera adequada, és probable que aquesta no proporcione recursos (temps de CPU, memòria RAM, etc. ) suficients perquè el càlcul finalitze correctament. Les opcions més comunes són:

  • “-e” i “-o” : defineixen el nom del fitxer d'error i d'eixida respectivament. És comú fer que ambdós fitxers siguen el mateix (per comoditat). Per fer-ho és prou especificar el nom del fitxer d'eixida i afegir-hi l'opció “-j i[es]”. Per establir-ne el nom, el SGE defineix una sèrie de variables d'entorn que poden ser molt útils:
  1. $HOME directori /pàgina inicial en la màquina d'execució
  2. $USER ID d'usuari del propietari del treball
  3. $JOB_ID SGE ID de la tasca
  4. $JOB_NAME nom actual del treball
  5. $HOSTNAME nom de la màquina d'execució
  • “-N” : especifica el nom del treball (vegeu variable $JOB_NAME). Aquest nom s'utilitza a efectes d'identificació en el sistema de cues.
  • “-pe” : especifica l'entorn paral·lel que es vol emprar. La seua sintaxi completa és “-pe entorn_paral·lel n[-o]”, on n és el nombre de processadors sol·licitats a l'entorn paral·lel. En el cas d'entorns de tipus MPI, pot usar-se un interval de processadors (n-o), per la qual cosa se n'empraran tants com n'hi haja disponibles en el moment de l'execució en l'interval (n-o).
  • “-q” : especifica el nom de la cua a la qual es vol enviar el treball. Per exemple, “-q llarga” enviaria el treball a la cua llarga.
  • “-S” : especifica l'intèrpret d'ordres (shell) del SGE. Per exemple: “-S /bin/tcsh” provoca que el treball s'execute en un entorn tcsh. Aquest valor està configurat per defecte en el sistema de cues a tcsh, encara que es pot alterar mitjançant aquest modificador. Es recomana el valor de "/bin/sh".
  • "-l" : especifica la llista de recursos que ha d'emprar un càlcul. En el nostre cas és OBLIGATORI especificar la quantitat de memòria RAM que es pensa que consumirà el treball. El motiu d'això és impedir que el SGE envie un treball d'alt consum de memòria a un node que no disposa de memòria lliure suficient per executar-lo. El recurs que és necessari especificar és "vf" (virtual free). La sintaxi correcta és: "-l vf=memòria", on memòria representa el valor de la memòria que s'estima que consumirà el càlcul. El valor de la memòria pot especificar-se en megues (sufix M) o gigues (sufix G). Aquest valor no representa un límit de memòria, sinó que expressa una necessitat. Cada cua del sistema té posat un límit de memòria que no es pot superar.

Nota: no s'ha configurat un programa per a enviar correus electrònics, per la qual cosa no han d'emprar-se opcions d'enviament de missatges en els treballs.

Comandament qstat: és el que s'emprarà més, permet comprovar l'estat dels càlculs que hem enviat al gestor de cues. Hi ha una versió gràfica d'aquest comandament que potser puga resultar més intuïtiva per a alguns usuaris. A més, és accessible directament via web, cosa que evita a l'usuari haver de connectar-se a la màquina. L'adreça és : http://multivac.uv.es/xmlqstat/qstat.html

Comandament qdel: elimina un treball del sistema de cues. El seu ús és “qdel id_del_job”. Per obtindre l'id de la tasca, és prou copiar-los de l'eixida (output) del comandament qstat.

Comandament qhost: mostra l'estat dels equips del clúster i els seus paràmetres físics i d'ús (càrrega actual, memòria física, memòria usada, swap, etc.)

Comandament qquota: mostra l'estat de les quotes del sistema de cues per a cada usuari. Ens diu quants recursos estem consumint i quin és el nostre límit de recursos en la màquina (nombre de càlculs, memòria ram, etc.). En el nostre cas, els recursos que es consumeixen són el nombre de càlculs per usuari, limitats a un nombre determinat per cua.

No obstant això, el SGE permet incorporar les opcions que volem aplicar al treball en el script mateix que s'envia. Per a fer-ho, es posen com a comentaris al principi del script (és un sistema similar al que empra el LSF). Per exemple, el script el_meu_script contindria:

  #!/bin/sh
  #
  #$ -S /bin/sh
  #$ -o /scr/$JOB_ID.err -j y
  #$ -q gran
  #$ -l vf=100M

  cd /scr/$JOB_ID
  !Programa_per_executar
  . . .

Exemple

A manera d'exemple posarem l'enviament d'un treball del programa Gaussian al sistema de cues. En qualsevol altre cas, caldria modificar lleugerament el script per executar el nostre treball.

#!/bin/sh
#
#$ -S /bin/sh
#$ -o /scr/$JOB_ID.err -j y
#$ -q gran
#$ -l vf=2G
 
cd /scr/$JOB_ID
 
export g03root=/util/software/G03_RevD02
. $g03root/g03/bsd/g03.profile
 
cp /scratch/as/asorian/ejemplo.com .
 
g03 < exemple.com > exemple.log
 
cp exemple.log /scratch/as/asorian
cp ../$JOB_ID.err /scratch/as/asorian
 
rm -rf /scr/$JOB_ID;rm /scr/$JOB_ID.err

Vegem cada secció pas per pas. El #$ és el prefix per passar opcions al SGE. Quan un treball entra en execució, el SGE crea automàticament una carpeta en el /scr que porta com a nom el nom del procés i la fa accessible només a l'usuari que llança el treball (/scr/$JOB_ID)

 #!/bin/sh
 #
 #$ -S /bin/sh

Especifica un intèrpret d'ordres (shell) d'execució, en aquest cas és una bourne shell.

 #$ -o /scr/$JOB_ID.err -j y

Aquesta línia diu que el fitxer d'eixida s'anomena /scr/$JOB_ID.err i que és únic (error i eixida en un mateix fitxer). Aquesta línia és obligatòria així i no pot canviar-se, ja que el SGE és un poc delicat en aquest sentit. Així doncs, haureu d'enrecordar-vos de copiar aquest fitxer de tornada i eliminar-lo en acabar el càlcul. El fitxer d'error pot situar-se DIRECTAMENT sobre el /scratch/xx/usuari, modificant la ruta de la manera següent "#$ -o /scratch/xx/usuari/$JOB_ID.err -j y", de manera que no caldria copiar-lo després.

 #$ -q gran
 #$ -l vf=2G

Tria la cua, en aquest cas d'exemple, la gran. A més, estima els requeriments de memòria en 2G. Hem d'assegurar-nos nosaltres que la cua gran és capaç de proporcionar tal quantitat de memòria, ja que en cas contrari, el treball fallaria en temps d'execució.

 cd /scr/$JOB_ID

Ens situem en el directori on es farà el càlcul.

 export g03root=/util/software/G03_RevD02
 . $g03root/g03/bsd/g03.profile

Carreguem el perfil per usar Gaussian.

 cp /scratch/as/asorian/ejemplo.com .

Copiem l'eixida (input) des del nostre scratch

 g03 < exemple.com > exemple.log

Executem el programa

 cp exemple.log /scratch/as/asorian
 cp ../$JOB_ID.err /scratch/as/asorian

Ens emportem els resultats. Si ens interessa, ens emportem el fitxer d'error.

 rm -rf /scr/$JOB_ID;rm /scr/$JOB_ID.err

Eliminem tots els fitxers temporals en acabar el treball.



Aquest script s'enviaria al sistema de cues mitjançant el comandament "qsub nom_del_script".
 asorian@multivac:/scratch/as/asorian> qsub Gaussian.sh
 Your job 200 ("Gaussian.sh") has been submitted

Per veure el progrés del nostre treball escrivim "qstat -u nom_usuari"

 asorian@multivac:/scratch/as/asorian> qstat
 job-ID  prior   name       user         state submit/start at      queue                          slots ja-task-ID
 -----------------------------------------------------------------------------------------------------------------
     200 0.55500 Gaussian.s asorian      qw    04/05/2007 12:10:34                                   1

Ací el treball està en cua i esperant...Ara entra en execució i ens diu en quin node ha entrat...

 asorian@multivac:/scratch/as/asorian> qstat
 job-ID  prior   name       user         state submit/start at       queue                          slots ja-task-ID
 -----------------------------------------------------------------------------------------------------------------
     200 0.55500 Gaussian.s asorian      r     04/05/2007 12:10:34   gran@hypercat04.si                 1


Si ens connectem al node veurem:

 asorian@multivac:/scratch/as/asorian> ssh hypercat04
 The authenticity of host 'hypercat04 (192.168.2.4)' can't be established.
 RSA key fingerprint is 9d:75:d8:3d:30:e8:82:78:41:ae:b5:1b:a2:f6:6d:b6.
 Are you sure you want to continue connecting (yes/no)? yes
 Warning: Permanently added 'hypercat04,192.168.2.4' (RSA) to the list of 
 known hosts.
 Password:
 Last login: Fri Mar 30 09:03:52 2007 from multivac.si
 asorian@hypercat04:~> ls /scr
 200  200.err  lost+found
 asorian@hypercat04:~> ls /scr/200/
 ejemplo.com  ejemplo.log  Gau-4795.inp  Gau-4796.d2e  Gau-4796.int  
 Gau-4796.rwf  Gau-4796.scr


Es pot pot veure com en /scr s'ha creat un directori de treball amb el mateix nom que l'ID del procés SGE, en l'interior del qual estem treballant.
[<] Tornar
Acudeix al CAU per sol·licitar més informació      Última modificació 11 desembre 2008 10:30      wiki| traça| editar