Universitas Studiorum Insubriae Università degli Studi dell'Insubria
Sede di Como
Sede di Como
 
Dipartimento di Scienze
Chimiche, Fisiche e Matematiche

Sistema batch NQS

staff@fis.unico.it

Introduzione

Accanto al mantenimento dei collegamenti di rete, uno dei compiti principali, se non il principale, dei calcolatori UNIX della nostra sede è quello di fornire una struttura di calcolo scientifico adeguata alle esigenze della ricerca senza impedire o limitare gravemente il contemporaneo utilizzo interattivo del calcolatore stesso.

Infatti, data la natura e la quantità dei programmi di calcolo numerico intensivo utilizzati dai nostri ricercatori, è molto frequente la sottomissione di programmi di calcolo che utilizzino per intero le risorse, reali o virtuali, di memoria, spazio disco e connessione di rete dei server e delle workstation.

Tenendo presente il fatto che molte delle nostre workstation possiedono una memoria RAM appena sufficiente a gestire l'ambiente grafico X-Windows, mentre d'altra parte i nostri server sono dedicati anche a gestire una rete il cui utilizzo si fa sempre piú esteso, si possono intravedere i problemi che derivano da questa situazione.

Ad esempio, il server fermi consuma in permanenza circa il 50% delle proprie risorse per la gestione del servizio Web, di quello di posta elettronica e del database NIS+, mentre il server ipazia consuma circa l'80% delle proprie per servire lo spazio disco agli utenti.

E non solo: se un programma di calcolo intensivo è in esecuzione su una workstation alla stessa priorità dell'interattivo, un utente collegato a tale stazione avrà da parte del sistema dei tempi di risposta inopinatamente lunghi, e non sarà in grado di utilizzarlo neppure per i compiti piú semplici.

Per ovviare a tutti questi problemi si è da tempo installato il sistema di sottomissione in batch denominato NQS (attualmente alla versione Generic 3.50.4, pubblicata nel dicembre 1997 dall'Università di Sheffield). Si intende a breve rendere obbligatorio l'utilizzo di questo sistema per la sottomissione di programmi di calcolo su tutti i calcolatori del cluster interno.

Infatti il sistema batch si preoccupa di disporre in successione l'esecuzione dei programmi, velocizzandone i tempi di completamento ed evitando la competizione simultanea per le risorse. Può sembrare all'utente che un programma fermo in coda stia perdendo tempo in attesa del completamento del programma precedente: in realtà non è affatto cosí. I due programmi in esecuzione contemporanea impiegherebbero a terminare un tempo molto superiore alla somma dei tempi della loro esecuzione successiva (occorre infatti aggiungere i tempi necessari al time sharing, al paging ed allo swapping) e per di piú essi non avrebbero a disposizione che la metà delle risorse fisiche del calcolatore, invece di usufruirne per intero.

Vantaggio non secondario è la possibilità di far ripartire automaticamente il proprio programma a seguito di un crash e successivo reboot del sistema.

Organizzazione delle code batch

Per gli scopi sopra esposti su ciascuna delle macchine del cluster interno, eccezion fatta per i server jford, fermi e ipazia, è stata definita una coda batch denominata "batch", riservata all'esecuzione dei programmi utente. Su ciascuno dei server succitati sono invece state definite tre code batch con diverse caratteristiche, denominate "server_long", "server_medium" e "server_short" (dove server va sostituito con il nome del calcolatore in questione).

Nessuna di tali code è direttamente accessibile all'utente: su ciascun calcolatore esse sono indirettamente accessibili tramite sottomissioni alla coda "in", mentre le code dei server jford, fermi e ipazia, sono accessibili dagli altri calcolatori mediante apposite code aventi lo stesso nome del server. La distribuzione dei lavori tra le tre diverse code nei server avviene automaticamente tramite dispositivo di load balancing (outbound sul cliente ed inbound sul server).

Si consiglia caldamente all'utenza di non sottoporre i propri lavori batch sullo stesso calcolatore su cui verranno eseguiti, non appena ciò sia possibile.

Nessuno dei tre server batch è aperto all'utenza generica: occorre un'autorizzazione esplicita da richiedersi allo staff. Su fermi non è consentito l'utilizzo interattivo, mentre jford e ipazia lo consentono dietro richiesta (jford permette a qualunque utente abbia lo Z-Shell come shell di login l'utilizzo alla console, mentre altrettanto non è possibile con il TC-Shell).

L'autorizzazione viene concessa caso per caso previa consultazione dello staff con i proprietari dei calcolatori stessi, ed in accordo con gli scopi per cui questi sono stati acquistati.

Comandi e procedure per l'utilizzo delle code batch

Procedure Batch

Attenzione: nello scrivere procedure batch badate bene a non mettere mai comandi nel background, a meno che sappiate che cosa state facendo: il resto della procedura proseguirebbe e potrebbe venire completato, lasciando "orfano" e privo di standard input ed output il comando suddetto.

Esempio schematico di procedura:

#QSUB -eo
#QSUB -rs
#QSUB -lt 100000    #maximum CPU time (seconds)
#QSUB -lm 1MB       #maximum 1MB memory (which is likely not enough)
#QSUB -ln 5         #nice value 5
#QSUB -bb
#QSUB -be
cd ~/prog
f77 -fast -xO4 -xdepend -xtarget=ultra1/170 -xarch=v8plusa \
    -o programma.out programma.f
./programma.out

In quanto precede "~/prog" è la directory che contiene il programma, mentre "programma.f" è il sorgente FORTRAN e "programma.out" l'eseguibile finale che viene, per l'appunto, eseguito.

N.B. Su alcuni calcolatori, per problemi connessi con la gestione del segnale XCPU (CPU time eXceeded), è possibile eseguire i propri lavori in batch esclusivamente tramite Z-Shell (che è un estensione del Korn Shell) e non con, ad esempio, C-Shell. Ciò non dovrebbe causare problemi, poiché è buona norma non programmare le proprie procedure utilizzando C-Shell.

Comandi NQS

qsub         Submit an NQS Request
qstat        Obtain information on NQS Queues and Requests
qacct        Display NQS accounting information
qlimit       Display NQS Limits
qcat         Display spooled NQS input, error, or log files
qdel         Delete NQS Request
qalter       Modify NQS Request parameters
qhold        Hold a NQS Request
qrls         Release a Held NQS Request
qsuspend     Suspend a Running NQS Request
qresume      Resume a Suspended NQS Request
qmsg         Write messages to NQS log or error files
qmgr         Configure and Manage NQS System
nmapmgr      Manage NQS Machine ID database
qdev         Display status of NQS devices
qpr          Submit a hardcopy print request to NQS

nqs          Network Queueing System 
nqsrn        NQS Release Notes
nqsgs        Getting Started with NQS

Sottomissione di una procedura batch

Le sottomissioni alle code batch avvengono tramite il comando qsub, come esemplificato dal seguente esempio:

% qsub -q fermi job.bat
dove una procedura (shell script) di nome job.bat viene sottoposta per l'esecuzione nella coda denominata fermi.

L'elenco delle code batch disponibili e delle loro caratteristiche viene riportato nella tabella sotto riportata.

A seguito della sottomissione il sistema assegna un numero alla richiesta, diciamo 93; lo standard output e lo standard error ad essa associati saranno contenuti, al termine dell'esecuzione della richiesta, in due file con nomi quali job.bat.o93 e job.bat.e93.

Se l'utente ha esplicitamente rediretto lo standard error allo standard output tramite il paramentro -eo allora solo il primo di questi due file verrà creato.

Un lavoro mandato in esecuzione su di una coda remota può essere fermato tramite il comando qdel, ma solo dallo stesso calcolatore e dallo stesso account dai quali è stata eseguita la sottomissione originaria. La corrispondente sintassi è:

% qdel 93@fermi
Dove 93 è il numero univocamente assegnato alla sottomissione batch, e fermi è il nome del calcolatore su cui il lavoro è attualmente in esecuzione.

Il controllo dell'output avviene analogamente tramite l'utilizzo del comando qcat.

Lo stato corrente di un lavoro può essere controllato con il comando:

% qstat -a @fermi
O semplicemente qstat -a se siete collegati allo stesso calcolatore sul quale il lavoro è correntemente in esecuzione.

Riassunto delle code batch disponibili e delle loro caratteristiche

Sommari e tabelle riassuntive dell'utilizzo batch sui server di calcolo relativi agli ultimi tre mesi sono reperibili qui sul nostro server intranet.

Coda Job totali Job per utente Max CPU (sec.) Max RAM (MB)
jford_long 2 1 604800 1024
jford_medium 2 1 86400 512
jford_short 3 1 3600 256
fermi_long 2 1 UNLIMITED UNLIMITED
fermi_medium 2 1 36000 UNLIMITED
fermi_short 3 1 7200 UNLIMITED
ipazia_long 1 1 UNLIMITED 128
ipazia_medium 1 1 3600 64
ipazia_short 1 1 720 32
batch 1 1 UNLIMITED UNLIMITED




Valid HTML 4.0! <address>Apache/2.2.15 (Linux/SUSE) Server at web.fis.unico.it Port 80</address>
This page has been visited (none) times since (none)