====== 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 ~]$