Le cluster de calcul

La soumission de traitement au cluster de calcul est gérée par le gestionnaire Torque. Torque est le résultat d'un effort communautaire issu du projet original PBS, et bénéficie d'extensions développées par des organismes tels que NCSA, OSC, USC, le ministère de l'énergie des ETATS-UNIS, Sandia, PNNL, l'Université de Buffalo, TeraGrid. 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 qui permet de programmer l’exécution des traitements sur chacun des noeuds en fonction des ressources disponibles. ClimServ utilise l’ordonnanceur Maui.

Les machines du Cluster

Le cluster est actuellement constitué d'un noeud maître et de 16 noeuds de calcul représentant l'équivalent de 140 processeurs, toutes ces machines étant basées sur des architectures multi-processeurs multi-coeurs AMD Opteron 64 bits. Plus précisément le cluster est constitué de :

  • 1 noeud quad-pro AMD Opteron 6136 8-core 2,4 GHz 128 Go de RAM, /tmp de 238 Go, Archi : Maranello
  • 1 noeud quad-pro AMD Opteron 6174 12-core 2,2 GHz 128 Go de RAM, /tmp de 238 Go, Archi : Maranello
  • 6 noeuds quad-pro AMD Opteron 6378 16-core 2,4 GHz 256 Go de RAM, /tmp de 113 Go, Archi : Piledriver
  • 8 noeuds quad-pro AMD Opteron 6378 16-core 2,4 GHz 256 Go de RAM, /tmp de 572 Go, Archi : Piledriver

L'accès au cluster se fait depuis les serveurs interactifs (camelot, loholt1 et 2) à travers le gestionnaire de batch grâce à la commande qsub. Le nom d'hôte du noeud maître est merlin.

Le gestionnaire de batch gère ensuite l'exécution des jobs sur un noeud de calcul ou un autre. Evitez surtout de lancer des programmes sur merlin et les noeuds de calcul en dehors du système de batch. Tout programme exécuté sur le cluster en dehors du gestionnaire de batch sera supprimé sans préavis.

L'interface graphique xpbsmon, la commande pbsnodes -l et la commande check-cluster  permettent de surveiller la disponibilité des machines du Cluster.

La configuration de Torque

Six files (ou queues) ont été configurées pour la soumission des jobs en fonction de la durée des calculs :

 

 Nom de la Queue

 Limite en temps (walltime)

 Limite du nombre de jobs en exécution Limites mémoires par défaut (modifiables par l'utilisateur) 
 - default
 Queue de routage vers les queues d'execution
 - std  6h CPU  pas de limite  Mem : 2 Go / Vmem : 4 Go
 - day  24 h CPU  pas de limite  Mem : 2 Go / Vmem : 4 Go
- threedays
 72 h CPU
 20 jobs / utilisateur  Mem : 2 Go / Vmem : 4 Go
 - week  168 h CPU  10 jobs / utilisateur  Mem : 2 Go / Vmem : 4 Go
 - infini  pas de limite  5 jobs / utilisateur  Mem : 2 Go / Vmem : 4 Go

 

Si un job dépasse le temps maximum alloué à la file d'exécution, il est automatiquement tué par le gestionnaire de batch.

La priorité d'exécution d'un job dans la file d'attente dépend de l'historique d'utilisation du cluster sur une semaine pour chaque l'utilisateur.

Micro-Architecture Processeurs

Le nom de la micro-architecture des processeurs des noeuds du cluster est renseigné pour chaque noeud comme une propriété PBS. Ces noms peuvent être utilisés lors de la compilation du code pour indiquer au compilateur les optimisations de code possibles.

Par exemple, avec le compilateur PGI, l'option "-tp" permet de sélectionner le processeur cible de la compilation :

pgf90 -tp=piledriver programme.f90 -o programme.exe

Pour requêter un ensemble de noeuds avec une architecture de processeur spécifique, il suffit de spécifier la propriété demandée dans la commande qsub. Par exemple, la commande suivante :

qsub -l nodes=1:Piledriver:ppn=10

requiert 10 coeurs de calcul sur un noeud possédant des processeurs de la famille Piledriver.

Limites Mémoires

La valeur par défaut de la mémoire allouée par chaque job est fixée à 2 Go : sans autre précision de l'utilisateur, chaque job se verra attribué 2Go de mémoire sur le noeud sur lequel il sera affecté.

La valeur par défaut de la mémoire virtuel pouvant être utilisée par le job est fixée à 4 Go : sans autre précision de l'utilisateur, chaque job sera automatiquement supprimé s'il requiert plus de 4 Go pendant son exécution.

Ces valeurs par défaut peuvent être modifiées au moment de la soumission du job grâce aux options de qsub. Par exemple :

  • pour modifier la mémoire minimum requise du job exemple.pbs :
qsub -l mem=4g exemple.pbs
  • pour modifier la mémoire maximum permise pour le job exemple.pbs :

 qsub -l vmem=6g exemple.pbs

  • pour modifier les valeurs minimum et maximum de mémoire pour le job exemple.pbs : 
qsub -l mem=4g,vmem=6g exemple.pbs

 

Pour plus d'information sur l'ensemble des ressources pouvant être spécifiées pour un job : man pbs_resources 

 L'interface graphique xpbs ou la commande qstat permettent de surveiller la répartition des jobs sur chaque file.

 

Les commandes utilisateur

 La liste des commandes utilisateurs est disponible ici. Vous pouvez également consulter le Guide de l'utilisateur Torque. Pour se familiariser avec la soumission de job sur le cluster, il est également possible d'utiliser l'interface graphique xpbs. Enfin toutes les commandes de soumission et de gestion des jobs disposent d'une aide en ligne accessible par la commande man.

Soumission d'un job

La soumission d'un job se fait grâce à la commande qsub. Cette commande peut prendre différents paramètres permettant de spécifier la queue que l'on veut utiliser, les ressources nécessaires pour l'exécution du job, et l'environnement d'exécution du job. Seul un shell-script peut être soumis au gestionnaire de batch (sauf en mode interactif), il est donc nécessaire d'inclure l'appel au programme que l'on souhaite exécuter dans un script (sh ou csh).

Options de qsub

Le tableau suivant liste certaines des options disponibles pour la soumission de jobs :

> qsub  -q  nom_de_la_file

> qsub  -N  nom_job



> qsub  -S  shell_path 

> qsub  -j  eo

> qsub -l <ressource = XX>

> qsub -l mem=128mb

précise la file batch; sans option -q : file std

déclare un nom pour le job; en absence de -N :
nom du job = nom du script
nom_job limité à 15 caractères

déclare le shell qui interprète le script

joint les fichiers erreur et sortie std en un seul

requiert une ressource particulière, par exemple

requiert 128 mb de mémoire disponibles

La liste des ressources pouvant être demandées est donnée dans le Guide de l'utilisateur Torque ou dans le man de pbs_resources.

Variables d'environnement PBS

Il est également possible de préciser les options de qsub directement dans le shell-script, en ajoutant les directives PBS comme :

#PBS -S /bin/sh
#PBS -j eo
#PBS -q week

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

 

Il est également possible de passer des variables au script en utilisant l'option "-v" avec la commande qsub :

> qsub  -v  var="toto"

définit la variable var et l'initialise à la valeur toto.

Exemple de soumission de job au gestionnaire de batch

- Contenu du shell-script example.pbs :

#!/bin/sh

# To start this job : qsub example.pbs

# Job description
#PBS -N example

# Resources used
#PBS -l nodes=1:ppn=1
#PBS -l walltime=10:00
#PBS -l mem=1gb

# Standard error & standard output are merged in example.out
#PBS -j oe
#PBS -o example.out

# Sends a mail when the job ends
#PBS -m e

# Use the following command to go in your working directory (default is home)
cd $PBS_O_WORKDIR

# Example for a job
a.out $filename

# Example for a Matlab job :
/opt/matlab/bin/matlab -nojvm -nodisplay -r 'programme ; exit'

 

# Example for an IDL job :
echo ".r programme.pro" | /opt/rsi/idl/bin/idl

 # Example for a GRADS job :
grads -bc programme.gs

 # Example for a Python job :
export PATH=/opt/epd_py25-4.3.0/bin:$PATH
python programme.py

- soumission du job :

> qsub -v filename="data.dat"

- 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.

Lancer un job interactif

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 -IX -l walltime=00:30:00,nodes=1:ppn=1
ou
> qsub -X -W interactive=true -l walltime=00:30:00,nodes=1:ppn=1

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 les informations suivantes :

qsub: waiting for job NN.merlin-c.climserv to start

qsub: job NN.merlin-c.climserv 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.

> exit

    logout

    qsub: job NN.merlin-c.climserv completed

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.

Les fichiers de données

Les différents systèmes de fichiers sont accessibles du serveur maître comme des noeuds de calcul.
Pour un gain de performances, il est recommandé de stocker les fichiers de données de vos programmes (en entrée comme en sortie) sur l'espace temporaire /tmp disponible localement sur chaque noeud de calcul. Il vous suffit d'y créer votre répertoire personnel.
En fin de calcul, ne pas oublier de recopier les fichiers de sortie sur les systèmes de fichiers habituels et de faire le ménage sur /tmp (ces répertoires temporaires seront régulièrement purgés).
Les transferts de fichiers d'entrée et de sortie peuvent être intégrés au script soumis à la procédure qsub.

Suivi d'un job

Torque permet de suivre l'exécution d'un job grâce à la commande qstat et l'interface graphique xpbs.

> qstat 

> qstat -a

> qstat -f   

> showq 

liste de tous les jobs

informations étendues

infos très étendues sur les jobs

liste de tous les jobs


Estimation du temps d'attente pour l'exécution d'un job 

> showstart no_job  

no_job est renvoyé par qstat

Suppression / modification d'un job

La gestion des jobs en cours d'exécution est assurée par les commandes :

> qdel no_job

> qalter no_job  

no_job est renvoyé par qstat

no_job est renvoyé par qstat

 

Dernière mise à jour : ( 07-04-2016 )