Gestion des tâches sur le cluster :

Transcription

Gestion des tâches sur le cluster :
Gestion des tâches sur le cluster :
Comment utiliser le gestionnaire de batch
Introduction
La plate-forme GenOuest met à la disposition des scientifiques une grappe de
calculateurs composée de 36 machines bi-processeurs (aussi appelées « nœuds »).
Afin d’optimiser la répartition des calculs sur les différents nœuds, un gestionnaire de
travaux est utilisé : il s’agit de Sun N1 Grid Engine. Il est impératif que les utilisateurs du
système soumettent leurs tâches via ce gestionnaire, dont le fonctionnement et les
commandes de bases vont être décrites ici.
Sun N1 Grid Engine (SGE) est un programme d'équilibrage de charge qui alloue
d'une manière optimale les ressources demandées pour l'exécution d'une tâche noninteractive, telles que la mémoire, l'espace disque et les processeurs (CPU). SGE est conçu
pour maximiser l'utilisation d'un réseau d'ordinateurs, et réduire au minimum l'interférence
entre les diverses tâches exécutées.
Pour optimiser son utilisation, notre cluster (genocluster) utilise donc la soumission de
travaux par l'intermédiaire de SGE. SGE fonctionne avec des files d'attente, chacune
comprenant un certain nombre de noeuds de calcul. Chaque file a des propriétés spécifiques
: temps maximum d'exécution, nombre maximums de noeuds, priorités, ...
Objectifs du tutoriel
Ce document regroupe les commandes et scripts permettant à la fois de lancer les
calculs sur le cluster, d’en suivre l’exécution, et d’en comprendre le fonctionnement de base.
Ceci s’effectue grâce aux commandes suivantes :
-
qsub : commande permettant d’envoyer un travail dans une file d'attente,
-
qstat : commande permettant de consulter l’état des travaux soumis,
-
qdel : commande permettant de supprimer des travaux soumis,
Il existe aussi une interface graphique (qmon) permettant de monitorer l'ensemble des
travaux et des files. Elle ne sera pas décrite dans ce document.
Page 1/8
Nous allons demander l’analyse d’une séquence par le programme Blast. Afin de
procéder à cette analyse, il faut tout d’abord écrire le script qui permettra de lancer cette
tâche (ou calcul). Nous verrons ensuite comment lancer ce calcul et suivre sa progression.
Script de lancement
Nous allons décrire pas à pas comment écrire ce script.
La première ligne appelle le shell d’exécution du script :
#! /bin/bash
Ensuite, les lignes commençant par les caractères #$ sont interprétées directement par le
gestionnaire de tâches. Nous pouvons ainsi préciser certaines options concernant la gestion
de la tâche :
-
l’option « –S » permet de spécifier le shell d’exécution
-
l’option « –M » permet de préciser l’adresse mail de l’utilisateur lançant les travaux
-
l’option « –m » permet de préciser les étapes qui feront l’objet d’un mail.Il y a 5
options possibles pour –m et elles peuvent être combinées :
o
b : le début (begin), le mail est envoyé au lancement des travaux,
o
e : envoi du mail à la fin (end) de l’exécution des travaux,
o
a : envoi lors de la suppression (abort) d’un travail,
o
s : envoi lors de la suspension d’un travail,
o
n : aucun mail n’est envoyé.
#$ -S /bin/bash
#$ -M [email protected]
#$ -m bea
La ligne suivante permet d’initialiser l’environnement propre au package Blastall. Le script
saura ainsi où trouver les différents programmes Blast, les banques de données, etc…
Page 2/8
. /local/env/envncbi.sh
Attention ! Il y a un espace entre le point et la chaîne de caractères /local/env/envncbi.sh .
La dernière ligne correspond à la commande permettant d’exécuter le Blast :
blastall –p blastx –d gppln –i masequence.fasta –o monresultats.blastx
Récapitulatif du script :
Les lignes commençant par le caractère # ne seront pas interprétées : ce symbole, utilisé
seul, permet d’insérer un commentaire dans un « shell script ».
Le script sera écrit dans le fichier script.sh (utilisez un éditeur de texte pour le créer) :
#! /bin/bash
#$ -S /bin/bash
#$ -M [email protected]
#$ -m bea
# initialisation de l’environnement d’exécution de blastall :
. /local/env/envncbi.sh
# syntaxe de blastall : blastall –p <type de blast> -d <banque de données> -I <sequence en
tree> -o <fichier de résultats>
blastall –p blastx –d gppln –i masequence.fasta –o monresultats.blastx
Lancement du travail
Pour soumettre un travail on utilise la commande qsub : le travail est lancé via qsub de la
façon suivante :
Page 3/8
qsub script.sh
Le gestionnaire de batch prend à sa charge la soumission de votre job et le met sur la file
d’attente par défaut. Le système valide le lancement du travail par le message « Your job
1320782 (« script.sh ») has been submitted ». Ensuite le job sera exécuté dès qu'il sera
éligible et que les ressources demandées seront disponibles.
Le numéro contenu dans le message précédent correspond à l’identifiant que le gestionnaire
de batch a attribué à la tâche. Cet identifiant pourra être utilisé pour supprimer l’exécution de
la tâche, ou pour en suivre le bon déroulement.
Toutes les options disponibles concernant la commande qsub peuvent être affichées en
utilisant la commande suivante :
man qsub
Seules les options les plus basiques sont détaillées ici :
-
Option –cwd : cette option permet de préciser que les fichiers soumis sont dans le
répertoire courant, et que les fichiers résultats devront être générés dans ce même
répertoire.
NB : Il est également possible de spécifier cette option au sein du script en y ajoutant
la ligne suivante :
#$ -cwd
-
Option –q : cette option permet de préciser la file d’attente sur lequel le travail doit
être soumis. En effet, si le travail lancé est supposé demander un temps de calcul
très long, il est nécessaire de le lancer sur une file d’attente prévue à cet
effet (nommée long.q) : le travail sera ainsi dirigé vers des nœuds de calcul pour
lesquels il n’existe aucune limite de temps d’exécution. Cette option n’est pas utile
pour un temps de calcul inférieur à 10 heures.
Page 4/8
-
Option –N : cette option permet d’attribuer un nom à la tâche soumise. Pour
l’exemple donné précédemment, la tâche soumise est nommée automatiquement
script.sh. L’utilisation de cette option permettra par exemple de la renommer
MonBlast.
En utilisant ces différentes options, la commande permettant de lancer notre script devient :
qsub –cwd –q long.q –N MonBlast script.sh
Une fois qu'une tâche soumise est exécutée, les sorties "standard output" et "standard error"
de cette tâche seront redirigées vers des fichiers localisés dans le répertoire d’où la tâche a
été lancée par l'utilisateur, et portant par défaut des noms uniques constitués de la façon
suivante :
nom_de_la_tâche.oNN et nom_de_la_tâche.eNN
où :
"nom_de_la_tâche" = nom du script soumis par qsub, ou précisé par l’option –N,
"o" = standard output,
"e" = standard error,
"NN" = numéro d'identification de la tâche, alloué par le système de batch.
Il est aussi possible de renommer ces fichiers en utilisant les options –o et –e :
qsub –o ./mon_repertoire/ma_sortie_standard –e ./mon_repertoire/ma_sortie_erreur script.sh
Exécution du travail :
Si vous aviez pris soin de renseigner votre adresse de courrier électronique ainsi que l’option
« -m b » dans le script, vous recevrez un courrier contenant le message suivant :
Job 1320782 (script.sh) Started
User
= grosquick
Queue = batch2.q
Host
= genouest28-data
Start Time
= 11/13/2007 15:51:08
Page 5/8
On peut contrôler que le programme a bien été soumis au gestionnaire de batch en utilisant
la commande qstat. Cette commande permet d’afficher l’état des travaux soumis ou en
attente dans toutes les files, et sur tous les nœuds du cluster :
job-ID prior name
user
state submit/start at
queue
slots ja-task-ID
----------------------------------------------------------------------------------------------------------------1314586 0.55500 n_d12asa_~ nmaloddo
r
11/20/2007 17:51:00 batch2.q@genouest19-data
1
1314591 0.55500 n_d12asa_~ nmaloddo
r
11/20/2007 17:51:15 batch2.q@genouest23-data
1
1320782 0.55500 script.sh
grosquick
r
11/13/2007 15:51:08 batch2.q@genouest28-data
1
1312253 0.55500 QRLOGIN
ofilangi
r
11/20/2007 10:04:08 batch2.q@genouest26-data
1
Chaque tâche est décrite par un état : ici, toutes les tâches sont dans l’état « r » c’està-dire « en cours d’exécution » (running). Le tableau ci-dessous récapitule la signification
des différents états décrits dans qstat :
Flag
d
t
r
R
s
Etat
deletion
transfering
running
Restarted
Suspended
S
Suspended
T
threshold
qw
h
waiting
hold
Signification
qdel a été utilisé pour supprimer la tâche
Tâche sur le point d’être exécutée
Tâche en cours d’exécution
L’exécution de la tâche a été relancée
Qmod a été utilisé pour suspendre
l’exécution de la tâche
La file d’attente dans laquelle était le job a
été suspendue, donc la tâche est également
suspendue
L’exécution de la tâche a été suspendue
avant sa mise en file d’attente : la file
d’attente est pleine
Tâche en attente dans la file
La tâche est dans l’état suspendu et n’est
pas éligible. Elle est aussi peut-être en
attente de la fin d’une autre tâche.
La commande qstat utilisée seule peut afficher de nombreuses informations qui, pour
la plupart, ne concernent pas vos travaux. Vous pouvez utiliser l’option « -u » de qstat qui
permet de trier ces informations en fonction de l’utilisateur qui a lancé les travaux. Pour
l’exemple donné, le travail script.sh a été lancé par l’utilisateur nommé grosquick. On peut
afficher l’état des travaux lancés par grosquick en utilisant la commande :
Page 6/8
qstat –u grosquick
Ce qui affiche les informations suivantes :
job-ID prior name
user
state submit/start at
queue
slots ja-task-ID
----------------------------------------------------------------------------------------------------------------1320782 0.55500 script.sh
grosquick
r
11/13/2007 15:51:08 batch2.q@genouest28-data
1
Toutes les options disponibles concernant la commande qstat peuvent être affichées
en utilisant la commande suivante :
man qstat
Une fois le calcul terminé, et si vous aviez pris soin de renseigner votre adresse de
courrier électronique ainsi que l’option « -m e » dans le script, vous recevrez un courrier
contenant le message suivant :
Job 1320782 (script.sh) Complete
User
= grosquick
Queue
= batch2.q@ genouest28-data
Host
= genouest28-data
Start Time
= 11/13/2007 15:51:08
End Time
= 11/13/2007 15:51:45
User Time
= 00:01:14
System Time
= 00:00:06
Wallclock Time
= 00:00:49
CPU
= 00 :01 :20
Max vmem
= 81.777M
Exit Status
=0
Page 7/8
Suppression de travaux
Lorsqu’une tâche a été lancée via qsub, il est possible de terminer son exécution - et
ce quel que soit son état - en utilisant la commande qdel.
Le moyen le plus basique d’utiliser qdel est de lui préciser l’identifiant de la tâche à
supprimer. Pour l’exemple, cet identifiant est 1320782 :
qdel 1320782
Toutes les options disponibles concernant la commande qdel peuvent être affichées en
utilisant la commande suivante :
man qdel
Seules les options les plus basiques de qdel sont détaillées ici :
-
Option « -f 1320782 » : permet de forcer la suppression de la tâche ayant l’identifiant
1320782.
-
Option « -u grosquick » : permet de supprimer toutes les tâches lancées par
l’utilisateur grosquick.
Pour aller plus loin : la documentation complète de Sun N1 Grid Engine est disponible sur le
site de sun ( http://www.sun.com/software/gridware/ ).
Page 8/8

Documents pareils