Quick start

Les serveurs interactifs (connexion, espaces disques, modules)

Le cluster de calcul (qsub, PBS, jobs interactifs, suivi des jobs)

Accès au cluster de calcul

La soumission de traitement au cluster de calcul est gérée par le gestionnaire Torque. Torque fournit à la fois un gestionnaire de ressources qui permet de contrôler la charge de chacun des noeuds du cluster, un gestionnaire de batch qui est chargé de transmettre les traitements soumis par les utilisateurs, et un ordonnanceur (Maui) qui permet de programmer l’exécution des traitements sur chacun des noeuds en fonction des ressources disponibles. L’accès au cluster se fait depuis les serveurs interactifs (camelot, loholt1 et 2, ciclad et ciclad2) à travers le gestionnaire de batch grâce à la commande qsub. Le gestionnaire de batch gère ensuite l’exécution des jobs sur un noeud de calcul ou un autre.

Tous les espaces disques utilisateurs et données sont visibles du cluster.

 

1- Les files ou queues d’éxécution :

Des files (ou queues) ont été configurées pour la soumission des jobs en fonction de la durée des calculs. Si un job dépasse le temps maximum alloué à la file d’exécution, il est automatiquement tué par le gestionnaire de batch.

Pour accéder à la liste des queues d’éxécution  :  qstat -q

Pour connaître toutes la caractéristiques d’une queue : qstat -Qf nomDeLaQueue Exemple :  qstat -Qf std

Par défaut, si le nom de la queue n’est pas précisée, le job sera lancé sur la queue « std ». La limite du temps d’exécution de cette queue est 6h CPU.

 

2- La soumission des jobs avec la commande qsub

Le job soumis doit être un script  Shell, Perl, Python, etc. Pas un binaire. L’utilisateur doit préciser les ressources nécessaires pour l’exécution de son job (memoire, temps d’exécution mamimum, nombre de cpu …).  Il faut ajuster au mieux les ressources nécessaires par job car elles seront réservées pour son exécution et ne seront donc plus disponibles pour les autres utilisateurs.

man qsub : pour connaître toutes les options de qsub
qsub jobname : lancera un job sur le cluster avec tous les paramètres par défaut (par exemple le job sera lancé sur la queue std)

 

Liste, non exhaustive, d’autres paramètres possibles :
qsub -q queue_name my_shell_script : lancer un job sur une queue choisie ( exemple : qsub -q day toto.sh)

qsub -j oe : joint les fichiers erreur et sortie standard en un seul

qsub -k oe : garder les sorties standard et d’erreur (exemple : qsub -j oe -k oe job.sh : cette commande permet de suivre en temps réel les sorties de job et d’en enregistrer les traces dans un fichier)

qsub -l <ressource = XX> : requiert une ressource particulière (exemple : qsub -l mem=128mb job.sh–> requiert 128 mb de mémoire disponibles)

             qsub -l mem=10gb -l vmem=12gb toto.sh : utilisation 10gb de mémoire et 12gb de mémoire vistuelle

             qsub -l walltime=20:00:00 : utilisera 20h de « walltime

             qsub -l nodes=n:ppn=m : soumission d’un job sur n noeuds avec m coeurs par noeuds (exemple : qsub -l nodes=3:ppn=8 toto.sh –> soumission du job toto.sh avec 3 noeuds et 8 coeurs par noeuds)
qsub  -N  nom_job : déclare un nom pour le job (nom_job limité à 15 caractères) ; en absence de -N : nom du job = nom du script

qsub -v variable_name=variable_value : pour passer des variables au script  (exemple : qsub -v var= »toto » : définit la variable var et l’initialise à la valeur toto

qsub -a time : démarrer un job à une heure déterminée ( exemple : qsub -a 2010 –> l’exécuter du job débutera à 20h10)
qsub -­a $(date ­-d ‘+2min’ +%H%M)  :  lancer le job 2 minutes après la commande

 

 3-Un premier exemple pour débuter
 Le script shell minimum doit contenir les lignes suivantes :
#!/bin/bash
my_binary
Le script doit être exécutable :
chmod +x my_shell_script
Commande minimum pour soumettre un job :
qsub my_shell_script
A la fin de l’exécution de votre job, 2 fichiers apparaissent dans votre home :
Un fichier d’information sur votre job : my_shell_script.o$JOB_NUMBER
Un fichier d’erreurs en cas de problèmes : my_shell_script.e$JOB_NUMBER

 

4-Les variables d’environnement PBS

Des directives d’exécution du job peuvent être mises directement dans le script en utilisant une ligne commançant par #PBS.

Exemple : le fichier my_shell_script contient les lignes suivantes :

       #!/bin/bash

       #PBS -q week

Soumission :  qsub my_shell_script

est équivalent à :  « qsub -q week my_shell_script » si l’instruction PBS n’était pas dans le script.

 

Lien vers un exemple de script plus complet example.pbs

Soumission : qsub -v filename= »data.dat » example.pbs

Fichier de sortie : Un seul fichier example.out est créé dans le répertoire $HOME de l’utilisateur, contenant les sorties standards et les erreurs éventuelles du programme a.out

 

La liste des ressources pouvant être demandées est donnée dans le man de pbs_resources

 

Les variables d’environnements utilisable dans un script :

Quand un job est soumis au gestionnaire de batch, un certain nombre de variables sont introduites dans l’environnement d’exécution du job, et peuvent être utilisées dans le shell-script. Ces variables sont :

Variable Description
PBS_JOBNAME user specified jobname
PBS_O_WORKDIR  job’s submission directory
PBS_ENVIRONMENT N/A
PBS_TASKNUM number of tasks requested
PBS_O_HOME  home directory of submitting user
PBS_MOMPORT active port for mom daemon
PBS_O_LOGNAME name of submitting user
PBS_O_LANG language variable for job
PBS_JOBCOOKIE  job cookie
 PBS_NODENUM  node offset number
 PBS_O_SHELL  script shell
 PBS_JOBID  unique pbs job id
 PBS_O_HOST  host on which job script is currently running
 PBS_QUEUE   job queue
 PBS_NODEFILE   file containing line delimited list on nodes allocated to the job
 PBS_O_PATH   path variable used to locate executables within job script

 

5-Lancer un job interactif :

qsub -IVX : L’option -I indique à qsub de commencer un job interactif. L’option -X permet de transmettre l’environnement graphique ou « forwarder le DISPLAY ».

Par exemple la commande :  qsub -IVX -l walltime=00:30:00,nodes=2:ppn=2

exécutera un job interactif avec un walltime de 30 minutes, en utilisant 2 noeuds et deux processeurs par noeud. Après cette commande, il faut attendre que Torque démarre le job. Comme pour tout job géré par Torque, un job interactif doit attendre qu’une queue comprenant le nombre de noeuds requis se libère. Une fois que le job est démarré, qsub retourne « ready ». Vous êtes alors logué sur un des noeuds de calcul, et vous pouvez lancer vos programmes en mode interactif. Une fois que vos travaux sont finis, vous pouvez utiliser la commande exit pour terminer votre session qsub.

Le mode interactif reste disponible tant que vous ne dépassez pas le walltime de la queue d’exécution ou celui que vous avez indiqué au lancement de qsub.

 

6 -La  Surveillance des jobs

qstat ou showq : liste l’ensemble des jobs du cluster

qstat -a : liste l’ensemble des jobs du cluster avec plus d’information

qstat -n : liste les noeuds utilisés par les jobs

qstat -u username : liste des jobs pour un utilisateur

qstat -f num_job ou checkjob num_job : informations détaillées pour un job
showq -b : pour connaître la raison des jobs bloqués
showstart num_job : estimation du temps d’attente pour l’exécution d’un job
qdel num_job : pour effacer un job
qalter : modifier un job non démarré. man qalter –> toutes les options de cette commande

 

7- Etat du cluster

check-cluster : état du cluster

pbsnodes -a : état de chaque noeud du cluster

pbsnodes -l : liste des noeuds hors service

 

8- Pour aller plus loin :

Documentation Torque : http://www.adaptivecomputing.com/support/documentation-index/torque-resource-manager-documentation/

Documentation Maui : http://docs.adaptivecomputing.com/maui/a.gcommandoverview.php