Logo de la Universitat de València Logo Servei d'informàtica [SIUV] Logo del portal

Multivac

Multivac és un cluster de PC's, integrats per l'empresa Catón, Sistemas Alernativos. Disposa de 68 nodes de càlcul, cadascun dels quals és d'una generació de servidor en concret, però que en comú mantenen: arquitectura x86_64 (processadors Intel) i mínim de 2 GB de RAM per core. Aquests nodes estan controlats per un front-end (multivac), que s'encarrega de gestionar el sistema de cues, els usuaris i els sistemes de fitxers compartits. Tot el programari de clustering usat 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 realitzar càlculs relativament llargs però amb uns requeriments de memòria i disc que no justifiquen l'ocupació del supercomputador. Açò 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, agilitant els temps necessaris per a obtenir un resultat.

  

Multivac_peque.jpg
Cluster de PC's 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 sota de 10 GB.
  • Necessitats de disc dur per sota de 500 GB.
  • Temps d'execució llargs (fins 2 mesos).

Entorn d'usuari

L'ús d'un cluster de PC's difereix substancialment de l'ús d'un equip de memòria compartida. Mentre que en aquest últim disposem d'una única imatge del sistema operatiu, en un cluster cada equip té la seua pròpia imatge i els seus propis discos interns. Quan un usuari desitja usar el cluster, es connecta a multivac.uv.es que és el denominat node front-end. Aquest node s'encarrega de gestionar tots els serveis del cluster (DHCP, DNS, NIS, gestor de cues, monitoratge, PROXY LDAP, etc...) i és el lloc en el qual 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 03 a 71 actualment). Cada màquina té un àrea local de treball temporal denominada /scr amb 900 GB de capacitat. Els fitxers temporals que creuen els càlculs han de ser escrits obligatòriament en aquesta àrea, per a 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'aqueix 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, HA D'esborrar-se aquest directori, prèvia còpia del seu contingut, per a 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 pots obrir-se dues sessions simultànies en cada equip.

Enviant treballs al gestor de cues

En el Cluster de càlcul s'ha instal·lat un gestor de cues de lliure distribució anomenat Sun Grid Engine, en la seua versió 6.5o3. Aquest gestor de cues, està en constant millora i permet un repartiment adequat dels recursos de càlcul en un cluster. La configuració d'aquest gestor de cues pateix constantment canvis per a poder adaptar-se a les necessitats de càlcul dels usuaris, per la qual cosa intentem mantenir aquesta pàgina el més actualitzada possible.

Comando qsub: és l'encarregat d'enviar treballs al SGE. Per a informació detallada de les seues múltiples opcions, consultar el man qsub.

El comando qsub permet llançar treballs a una cua determinada, la qual cosa pressuposa que l'usuari coneix els límits de cada cua i ha escollit com és la més adequada perquè el seu càlcul s'execute correctament. Si no es tria la cua de forma adequada, és probable que aquesta no proporcione recursos suficients (temps de CPU, memòria RAM, etc... ) com 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 a açò prou especificar el nom del fitxer d'eixida i afegir l'opció '-j i[es]'. Per a establir el nom, el SGE defineix una sèrie de variables d'entorn que poden ser molt útils:
  1. $HOME directori/home en la màquina d'execució
  2. $USER user ID del propietari del treball
  3. $JOB_ID SGE job ID
  4. $JOB_NAME nom actual del treball
  5. $HOSTNAME nom de la màquina d'execució
  • '-N' : especifica el nom del treball (veure variable $JOB_NAME). Aquest nom s'usa a efectes identificatius en el sistema de cues.
  • '-pe' : especifica l'entorn paral·lel que es desitja usar. La seua sintaxi completa és '-pe entorno_paralelo n[-o]'. On és el nombre de processadors sol·licitats a l'entorn paral·lel. En el cas d'entorns tipus MPI, pot usar-se un intervao de processadors (n-o), per el que s'usaran tants como 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 la shell del SGE. Exemple: '-S /bin/tcsh' provoca que el treball s'execute en un entorn tcsh. Aquest valor està configurat por defecto en el sistema de cues a tcsh, encara que pot ser alterat mitjançant aquest modificador. Es recomana el valor de "/bin/sh".
  • "-l" : especifica la llista de recursos que va a emprara un càlcul. En el nostre cas és obligatori especificar la quantitat de memòria RAM que es pensa que va a consumir el treball. El motiu d'açò es per a impedir que el SGE envie un treball d'alt consum de memòria a un node que no disposa de memòria lliure suficent per a executar-lo. El recurs que és necessari especificar és "vf" (virtual free).
    • La sintaxi correcta és: "-l vf=memoria", on memòria representa el valor de la memòria que s'estima 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 pot ser superat.
    • Un altre valor interessant és el de "hostname". Permet especificar a quin node es desitja enviar el treball. La sintaxi correcta en cas de voler usar aquesta opció que NO és obligatòria seria "-l vf=2G,hostname=hypercatXX". Açò ens permetrà continuar un treball que va quedar a meitat o es va tallar per algun motiu, les dades del qual segueixen encara en el /scr del nodo XX.

Comando qstat: és el que més s'usarà, permet comprovar l'estat dels càlculs que hem enviat al gestor de cues. Existeix una versió gràfica d'aquest comando que potser puga resultar més intuïtiva per a alguns usuaris. A més, és accessible directament via web, la qual cosa ens evita l'haver de connectar-nos a la màquina.

Comando qdel: esborra un treball del sistema de cues. El seu ús és 'qdel id_de el_job'. Per a obtenir l'id del job, n'hi ha prou amb copiar-los del output del comando qstat.

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

Comando 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 propi script que s'envia. Per a açò es posen com a comentaris al principi del script (és un sistema similar a l'utilitzat pel LSF). Per exemple, el script mi_script contindria:

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

Exemple

A manera d'exemple anem a posar l'enviament d'un treball del programa Gaussian al sistema de cues. En qualsevol altre cas, seria necessari modificar lleugerament el script per a 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 < ejemplo.com > ejemplo.log cp ejemplo.log /scratch/as/asoriancp ../$JOB_ID.err /scratch/as/asorian rm -rf /scr/$JOB_ID;rm /scr/$JOB_ID.err