User Tools

Site Tools


strutture:cnaf:cnaf_rd:infrastruttura:utilizzo_cluster:batch_system

Utilizzo del Batch System

Configurazione del batch system

Per l'utilizzo delle macchine del cluster di calcolo sono state definite le seguenti code:

  • normal : coda normale per utenti RD e RD-GUEST
  • interactive : coda per job interattivi per utenti RD e RD-GUEST
  • coka : coda normale per utenti COKA
  • coka-devel : coda per job interattivi per utenti COKA
  • performance : coda solo per l'esecuzione di job ad uso esclusivo di un server, per utenti RD, RD-GUEST e COKA
  • cms : coda normale per utenti CMS
  • cms-devel : coda per job interattivi per utenti CMS
  • atlas : coda normale per utenti ATLAS
  • atlas-devel : coda per job interattivi per utenti ATLAS
  • alice : coda normale per utenti ALICE
  • alice-devel : coda per job interattivi per utenti ALICE

Gli utenti sono suddivisi nei seguenti gruppi:

  • rd
  • rd-guest
  • coka-users
  • cms-users
  • atlas-users
  • alice-users

Con il comando:

$ bugroup

è possibile visualizzare tutti gli utenti suddivisi per gruppo di appartenenza.

Ogni gruppo di utenti può utilizzare solamente le code che gli sono state assegnate. Ovviamente, i nomi di gruppi utenti e code sono autoesplicativi: quindi ad esempio gli utenti del gruppo cms-users potranno usare solamente le code cms-*.

Sono state definite delle nuove risorse che rappresentano le GPU disponibili e il MIC. Queste risorse sono:

  • gpu_k20 : rappresenta le GPU Tesla K20
  • gpu_c2050: rappresenta le GPU Tesla C2050
  • mic : rappresenta l'Intel ManyCore

Segue la tabella con il dettaglio della quantità di risorse disponibili su ciascun server fisico:

Host gpu_k20 gpu_c2050 mic
rd-coka-01 2 - 1
rd-coka-02 - - 2
rd-gpu-02 - 3 -

Per vedere quali host sono disponibili nel cluster e il loro stato, usare i comandi:

$ bhosts
$ bhosts -w

Per vedere i dettagli di un singolo host usare:

$ bhosts -l hostname

Per vedere lo stato delle code usare:

$ bqueues

Per vedere i dettagli di una coda:

$ bqueues -l coda

Per sottomettere un job utilizzare il comando:

$ bsub [opzioni] 'eseguibile'

Questo comando supporta numerose opzioni; le più interessanti sono:

Opzione Descrizione
-q coda Specifica a quale coda sottomettere
-m hostname Sceglie a quale host inviare il job
-c n CPU time limite di n secondi
-n x Utilizza x core per il job
-J nome Assegna 'nome' come job name
-o file.out Job standard output
-e file.err Job standard error
-N Separa il job report dall'output
-B Invia una mail quando il job va in start
-R "risorsa=n" Specifica di quali e quante risorse il job ha bisogno
-a application Specifica quale application utilizzare (da usare con MPI)

Per sottomettere un job e consigliabile preparare un file di testo contenente tutte le opzioni e i comandi da eseguire, come il seguente:

#BSUB -J example      # Job name 
#BSUB -c 600          # Time limit in seconds 
#BSUB -n 1            # Number of cores 
#BSUB -o %J.out       # Job standard output 
#BSUB -e %J.err       # Job standard error 
#BSUB -N              # Job report 
#BSUB -B              # Send mail 
#BSUB -q coka         # Job queue 
#BSUB -m rd-coka-01   # Host selection 
#BSUB -R 'gpu_k20=1'  # Resource requirements 
# 
# commands 
echo 'hello world' 
sleep 10 

Salvare il job in un file (es. example.job) e sottometterlo con:

$ bsub < example.job

Per monitorare lo stato dei propri job, utilizzare il comando:

$ bjobs

Per terminare un job, usare il comando:

$ bkill jobid

Quando un job termina, viene spedito un report riguardante l'esecuzione del job via mail, direttamente sulla UI. Per leggere queste mail, utilizzare il tool mailx:

$ mail

Job interattivi

Sono job che mandano il proprio output su stdout e leggono l’input da stdin. Sono utili per eseguire operazioni come compilazione e debug delle applicazioni, oppure per eseguire programmi che richiedono l'interazione dell'utente durante l'esecuzione.
Questo tipo di job possono essere sottomessi solamente sulle code che accettano i job di tipo interattivo, nello specifico le code denominate *-devel.
Esempio: esecuzione del comando ls con job interattivo:

$ bsub -Is -q interactive ls 
Job <682> is submitted to queue <interactive>. 
<<Waiting for dispatch ...>> 
537.err 
537.out 
example.job 
hello_mic 
hello_nv 
intel 
interactive.job 
lsf_job_template.job 
matrix 
mbox 

Esempio: compilazione

$ bsub -Is -q interactive gcc -o hello hello.c 
Job <1525> is submitted to queue <interactive>. 
<<Waiting for dispatch ...>> 
<<Starting on rd-gpu-01.cnaf.infn.it>>

Esempio: shell con X-Forwarding (notare opzione -XF)

$ bsub -Is -XF -q interactive /bin/bash
Job <8917> is submitted to queue <interactive>. 
<<ssh X11 forwarding job>>
<<Waiting for dispatch ...>>
[user@server ~]$ 
strutture/cnaf/cnaf_rd/infrastruttura/utilizzo_cluster/batch_system.txt · Last modified: 2013/11/26 16:25 by caberletti@infn.it

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki