====== 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 .
<>
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 .
<>
<>
Esempio: shell con X-Forwarding (notare opzione -XF)
$ bsub -Is -XF -q interactive /bin/bash
Job <8917> is submitted to queue .
<>
<>
[user@server ~]$