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