Condor all'INFN - Milano

Condor a Milano


Come concordato con i coordinatori di gruppo e ribadito nel corso di vari incontri con gli utenti Unix in sezione, vi è la necessità di offrire una significativa capacità di elaborazione nei sistemi digital Unix. A tale scopo è stata resa disponibile una coda di elaborazione batch distribuita basata sul software di gestione Condor, installato, per il momento, su tutte le macchine Digital UNIX con sistema operativo versione 4.0 della sezione.


Cenni sul sistema Condor:

Condor è un sistema che sfrutta risorse di calcolo distribuite QUANDO ESSE NON SONO UTILIZZATE DAL "PROPRIETARIO" PRINCIPALE della CPU. La presenza di Condor non richiede dunque di allocare nessuna risorsa della macchina ospite in modo permanente (nè disco, nè CPU, nè una struttura di filesystem comune). Per consentire questa flessibilità, il lavoro in esecuzione su Condor può essere sospeso ed eliminato da una macchina ospite in qualunque momento senza perdere però il tempo di CPU accumulato. Maggiori informazioni su condor si possono ottenere dal sito: http://www.cs.wisc.edu/condor mentre il manuale completo è disponibile anche in: http://server11.infn.it/condor/condor-V6_1-Manual/Index.html


COME SI USA

L'utilizzo di Condor richiede la ricompilazione del programma con opportune librerie e la successiva sottomissione del job nella coda. Di seguito sono riportate le istruzioni.

Nota: alcuni dei comandi qui descritti (submit_batch, show_batch, remove_batch) sono script aggiunti nell'installazione di Milano per facilitare l'accesso al sistema soprattutto all'utente occasionale, ed invocano i sottostanti comandi di Condor, preparando gli opportuni file di configurazione e sottomissione. Per la descrizione dettagliata dei corrispondenti comandi di Condor (condor_submit, condor_status e condor_rm), rivolta soprattutto agli utenti che vogliono utilizzare tutta la funzionalità del sistema, consultare il manuale.

PREPARAZIONE DI UN LAVORO PER CONDOR:

condor_compile:
Per permettere la sospensione e la migrazione dei lavori in batch senza che il progresso accumulato su una macchina ospite vada perduto, Condor utilizza una libreria di "checkpoint" che consente di salvare l'intero stato di esecuzione di un programma prima di interromperlo, per poi riprendere l'esecuzione più tardi, eventualmente su un altra macchina ospite. Per utilizzare questa libreria, i programmi devono essere compilati con "condor_compile". Basta premettere "condor_compile" al comando di compilazione utilizzato (qualsiasi esso sia: f77, cc, c++, ma anche make o gmake). Ad esempio:

> condor_compile f77 programma.f -o programma
oppure
> condor_compile make programma
E' possibile eseguire con Condor anche programmi che *non* sono stati compilati con condor_compile. Il progresso dell'esecuzione in questo caso risulterà più lento, ed i job potrebbero non riuscire mai a completare se richiedono un impiego di CPU molto lungo (ad esempio superiore ad una notte o ad un weekend).


SOTTOMISSIONE DI UN LAVORO AD UNA CODA:

submit_batch:

Per sottomettere un lavoro al sistema di batch si utilizza il comando submit_batch. Questo comando invoca a sua volta gli opportuni comandi di Condor (è stato lasciato generico in modo che, in futuro, se necessario, il sistema di gestione dei lavori in batch possa essere cambiato in modo trasparente). Il comando restituisce uno o più Job ID che possono essere usati per identificare il lavoro nella lista prodotta da "show_batch" oppure per cancellarlo con "remove_batch" (vedi la descrizione di questi comandi più avanti). Questa la sintassi di submit_batch:

submit_batch [-env] [-nomail|-mail ] [-in file] [-out file] 
             [-log file] [-# copies] executable [arg1 arg2 arg3 ...]
-envva specificato se il lavoro di Condor deve ereditare le variabili environment della sessione da cui viene sottomesso.
executableè il nome dell'eseguibile che deve essere fatto girare, e che può essere o non essere stato compilato con condor_compile.
arg1 arg2 arg3sono gli argomenti che l'eseguibile eventualmente si aspetta sulla linea di comando
-in <file>va aggiunto per specificare dove il programma da eseguire in batch deve leggere il suo standard input. Se non viene specificato un file lo standard input viene letto da /dev/null.
-out <file>indica invece il file dove deve essere scritto lo standard output. Se questa opzione è assente l'output viene inviato a /dev/null.
-log <file>indica invece un file dove viene inviata la diagnostica di Condor nel corso dell'esecuzione del lavoro. Può essere utile in caso di problemi, o per analizzare lo stato del lavoro. In assenza di questa opzione non viene prodotto in file di log.
-nomailQuesto flag va specificato se NON si desidera ricevere un messaggio mail al termine dell'esecuzione del lavoro in batch.
-mail <user@host>va aggiunto per specificare un indirizzo a cui mandare un messaggio mail al termine dell'esecuzione del lavoro in batch. Se questa opzione è assente e non è presente "-nomail" il mail viene mandato all'utente che sta sottomettendo il lavoro, sull'host locale.
-# <copies>serve per inviare, anziché un singolo lavoro, un gruppo di più lavori identici (ad esempio un gruppo di generazioni di eventi montecarlo). Condor può essere più efficiente a gestire molti lavori di durata ridotta, piuttosto che un singolo lavoro di lunga durata.
-envva specificato se il lavoro di Condor deve ereditare le variabili environment della sessione da cui viene sottomesso.


Visualizzazione dei lavori in coda: show_batch

Questo comando indica lo stato dei lavori sottomessi dall'host locale. I lavori sono identificati con il loro Job ID (che viene anche restituito da submit_batch).


Cancellazione dei lavori in coda: remove_batch

Questo comando ferma e cancella uno o più job attualmente presenti nella coda. Può essere usato in varie forme, secondo la seguente sintassi:
remove_batch  [job ID] [first ID,last ID]
Ad esempio:
> remove_batch 5.0 6.1 7.3
Cancella tre job, identificati dagli ID 5.0, 6.1 e 7.3
> remove_batch 5
Cancella tutti i job 5.x.
> remove_batch 5,7
Cancella tutti i job 5.x, 6.x, 7.x
> remove_batch 8.2,8.18
Cancella i job 8.2, 8.3, ... 8.18.

Altri comandi di Condor che possono tornare utili:
condor_statusMostra lo stato di tutti gli host che fanno parte del sistema di batch.
condor_status -claimedMostra lo stato degli host che stanno effettivamente eseguendo un lavoro per conto del sistema di batch.
condor_q -analyze <Job ID>Questo comando tenta di determinare perché un lavoro accodato al sistema di batch non è ancora passato in esecuzione. Può essere utile per determinare la causa di eventuali problemi.

Per commenti su queste istruzioni mandare un mail a : Francesco Prelz
Per problemi durante l'utilizzo del sistema di batch: troubles@mi.infn.it