NQS: Network Queuing System

Principes

NQS permet de répartir l'exécution de travaux ("job") en traitement par lots ("batch") en fonction des ressources réclamées et de la charge. DQS comme son nom l'indique gère un ensemble de machines Unix connectées en réseau. Chaque machine possède une ou plusieurs files d'attente ("queue"). Les attributs de la file d'attente déterminent les ressources qu'elle est susceptible de fournir. Ce peut être la taille mémoire, le temps maximum, la disponibilité d'un logiciel, une architecture de machine. Lorsque l'utilisateur soumet une requête au système DQS il précise dans celle-ci les ressources nécessaires à son exécution. NQS analyse les ressources demandées et envoie la requête à une file d'attente possédant les caractéristiques voulues, le choix se fait en fonction de la charge des différents machines.

Commandes de base


Toutes les commandes ont un page de manuel unix que l'on peut obtenir en invoquant:

$ man <command>

Organisation a SINUS

Configuration

Soumission d'un job

Pour le moment il n'y a pas besoin de gérer des ressources. En fonction du temps cpu estimé de votre job, il faut le soumettre à une queue donnée avec la commande:

$ qsub -q <queue> <script.sh>

<script.sh> est le nom d'un script contenant les commandes à éxécuter. Il peut de plus contenir des options de qsub pour modifier les caractéristiques du job. Ces options figurent dans la page de manuel de qsub.

Exemple:

$ cat script.sh
# Batch pour NQS
# QSUB -r ma_compil
# QSUB -eo
# QSUB
f77 truc.f

Les lignes commencant par un # sont des commentaires pour le shell qui lira le script. Cependant, celles commencant par # QSUB seront interprétées par qsub. Ce script indique que le nom du script est 'ma_compil' (-r), que stdout et stderr devront être regroupés dans un fichier commun (-eo). La ligne QSUB finale indique la fin des options pour qsub. Les options les plus courantes sont:

Decider quelle queue utiliser

  1. Pour voir quelles queues sont disponibles utiliser la commande qstat -x.

    monk$ qstat -x
    q1h@monk; type=BATCH; [ENABLED, INACTIVE]; pri=16 lim=1 0 exit; 0 run; 0 stage; 0 queued; 0 wait; 0 hold; 0 arrive; User run limit= 1

    q2h@monk; type=BATCH; [ENABLED, INACTIVE]; pri=16 lim=1 0 exit; 0 run; 0 stage; 0 queued; 0 wait; 0 hold; 0 arrive; User run limit= 1

    q4h@monk; type=BATCH; [ENABLED, INACTIVE]; pri=16 lim=1 0 exit; 0 run; 0 stage; 0 queued; 0 wait; 0 hold; 0 arrive; User run limit= 1

    q15h@monk; type=BATCH; [ENABLED, STOPPED]; pri=16 lim=1 0 exit; 0 run; 0 stage; 0 queued; 0 wait; 0 hold; 0 arrive; User run limit= 1

    q63h@monk; type=BATCH; [ENABLED, STOPPED]; pri=16 lim=1 0 exit; 0 run; 0 stage; 0 queued; 0 wait; 0 hold; 0 arrive; User run limit= 1

    Nous sommes entre 9h et 18h sur monk. Toutes les queues sont ENABLED=fonctionnent. Les queues q1h q2h et q4h sont INACTIVE: aucun job ne tourne. Les queues q15h et q63 sont STOPPED: nous savons qu'elles ne tournent que la nuit et le week-end, c'est normal.

    NB: on peut connaître le statut des queues d'une machine distante: A partir d'une autre machine tournant NQS, qstat -x @monk donne le même résultat.
  2. En fonction de la durée du job choisissez une des queues disponible:
    job court devant tourner immédiatement: q1h q2h q4h
    job long devant touner la nuit: q15h
    job très long devant touner le week-end: q63
    NB: pas besoin d'attendre que la queue soit INACTIVE pour soumettre un job. Par exemple, dès lundi vous pouvez soumettre un job a q63h, mais il ne sera executé que le vendredi soir.

Controle d'un job

La commande qstat permet de connaitre la configuration de NQS sur une machine.


rsavalle@sophia.inria.fr.fr

Last modified: Mon Jun 2 16:55:33 MET DST 1997