Présentation d`OpenPBS - Direction technique Eau, mer et fleuves

Transcription

Présentation d`OpenPBS - Direction technique Eau, mer et fleuves
Les distributions
Présentation d'OpenPBS
OpenPBS signifie Open Portable Batch System. Il permet l'exécution de programmes (appelés "jobs"
dans la terminologie d'OpenPBS) sur un ou plusieurs noeuds du cluster tout en permettant la répartition
de la charge et une gestion des ressources. Il est disponible à cette adresse.
L'utilisation d'OpenPBS est très flexible. On peut aussi bien indiquer le nombre de noeuds que l'on désire
pour un job particulier et laisser le programme les choisir parmi ceux disponibles. Soit au contraire,
spécifier le noeud où l'on désire que le job s'exécute et le lancement de la tâche se fera lorsque le noeud
sera libre.
Pour aider OpenPBS dans le choix des noeuds, il est possible de préciser le comportement du job que
l'on souhaite lancer. On peut, par exemple, indiquer le temps que l'on réserve aux calculs, la place
mémoire nécessaire, le nombre de noeuds...
La licence d'utilisation d'OpenPBS permet la modification du code source, et comme nous le verrons par
la suite, d'adapter le programme à nos besoins.
Les jobs
Chaque job est identifié par un numéro unique attribué par le système lors de sa soumission. Le
déroulement de la tâche doit obligatoirement être décrit par un script shell. Il n'est pas possible de lancer
directement un binaire exécutable. Le script peut être très simple si on souhaite uniquement lancer un
programme de calcul par exemple, mais il peut aussi effectuer des tâches beaucoup plus compliquées,
comme un lancement séquentiel de plusieurs programmes. Il est a noter qu'OpenPBS définit plusieurs
variables d'environnement avant de lancer le script, décrivant le contexte d'exécution. Il est donc possible
de faire agir le script en conséquence et d'adapter ainsi le comportement du job (pour plus d'information,
voir la documentation).
Les jobs sont rangés dans des files qui sont définies sur le serveur, ce qui permet, par exemple,
d'appliquer des règles d'ordonnancement différentes en fonction du type de programme à exécuter.
La soumission d'un job au système se fait grâce à la commande "qsub". C'est à l'aide de cette commande
que l'on choisit la file dans laquelle seront placés le job ainsi que le script. Il y a deux possibilités pour
indiquer le script à lancer : soit on indique le chemin du script, soit le script est lu à partir de l'entrée
standard. La deuxième solution est à préférer pour les cas les plus simples.
Fonctionnement
OpenPBS est structuré autour de trois programmes différents. Ils peuvent très bien se trouver sur la
même machine ou sur des machines différentes. Ces trois programmes sont : le serveur, l'ordonnanceur
et le MOM (Machine Oriented MiniServer).
Le serveur est responsable de l'interaction avec les commandes de l'utilisateur. C'est lui qui reçoit les
demandes d'exécution, gère les files de jobs, maintient à jour la liste des noeuds disponibles. En général,
il est lancé sur le noeud maître du cluster.
L'ordonnanceur décide, en fonction des paramètres du job, de l'état des noeuds et des ressources quels
noeuds seront alloués à l'exécution d'un job. Il se trouve le plus souvent sur le même noeud que le
serveur, mais on peut tout aussi bien le mettre sur un autre noeud, pour des raisons de charge par
exemple.
Le MOM est la partie d'OpenPBS qui se trouve sur chaque noeud. Il se charge de l'exécution d'un job sur
le noeud sur lequel il se trouve et récupère les informations nécessaires au serveur pour connaître l'état
du noeud. Il peut aussi être interrogé par l'ordonnanceur si nécessaire.
Conception d'un système à haute performance – OpenPBS
1/2
Copyright © CETMEF 2004
Lorsqu'un job est soumis grâce à la
commande qsub, le job et toutes ses
caractéristiques (nom du script, ressources
demandées, ...) sont transmis au serveur qui
le met dans la file demandée (ou celle par
défaut). Le serveur retourne à la commande
l'identifiant du job qui en informe l'utilisateur.
Cet identifiant est utile pour connaître l'état du
job, le stopper ou l'annuler.
Une fois que le job est accepté par le serveur,
ce dernier informe l'ordonnanceur qu'il y a un
nouveau
job
dans
l'une
des
files
(l'ordonnanceur regarde aussi à intervalle
régulier la présence de jobs en attente dans
les files du serveur). Grâce aux données
mises à sa disposition par le serveur et les
différents MOM et des règles de décisions
implémentées, l'ordonnanceur décide quel
noeud sera le plus apte à exécuter le job et
retourne son nom au serveur.
Le serveur ayant désormais le nom du noeud sur lequel exécuter le job, il l'envoie vers le MOM du noeud
qui lance l'exécution du script sur le noeud. A la fin de l'exécution, le MOM signale la fin du script au
serveur qui prévient (par mail, dans la version officielle) l'utilisateur ayant soumis le job.
La première modification apportée à OpenPBS a été de bloquer l'exécution de la commande qsub tant
que le job n'est pas terminé. En effet, avant cette modification, la commande rendait la main à l'utilisateur
juste après la soumission du job, et rendait difficile la détection de la terminaison du calcul.
L'ordonnanceur
L'ordonnanceur joue un rôle central dans le mécanisme de répartition des jobs sur le cluster. En effet,
c'est lui qui permet la répartition de la charge et donc l'exploitation au mieux des ressources disponibles.
Son fonctionnement est donc fortement dépendant de l'utilisation du cluster. Celui qui est livré avec
OpenPBS fonctionne en FIFO, c'est à dire que le job à exécuter obtient le premier noeud libre dans la
liste des noeuds. Cela peut éventuellement convenir pour un cluster composé de machines homogènes,
ce qui n'est pas notre cas.
En effet, nous possédons un cluster dont les noeuds sont hétérogènes du point de vue du nombre de
processeurs et de la mémoire disponible. C'est pourquoi, l'ordonnanceur devra être capable, en fonction
du programme et du cas à traiter, de choisir le noeud qui sera à même de produire le résultat dans les
délais les plus courts. C'est pourquoi sur la base de l'ordonnanceur FIFO, pour tout ce qui est échange
entre les modules d'OpenPBS, il a fallu concevoir et implémenter de nouvelles règles de décision.
Conception d'un système à haute performance – OpenPBS
2/2
Copyright © CETMEF 2004