Calculateur CEMAG//Gestionnaire de tâchesDernière mise à jour 12-05-2010 17:16 / Jean-François RabasseRetour rubrique Calculateur CEMAGPlanificateur de tâchesLe logiciel rplan est installé sur le calculateur Altix. Cet outil permet d'établir le planning d'utilisation de la machine sur une durée indéterminée, semaine, mois, trimestre, sous forme d'allocations de ressources. Chaque utilisateur autorisé se voit attribuer un ou plusieurs slots sous forme d'une réservation nombre de CPU x durée. La planification des slots est faite par un administrateur sur une base de négociations (réunion du jeudi matin). Chaque slot est la propriété exclusive de son bénéficiaire qui seul pourra y soumettre des tâches. La répartition courante est consultable en ligne, voir Allocations. SommairePrésentation du programmeLe gestionnaire se compose d'un seul programme, rplan : rplan <commande> [arguments] Ce programme dispose, en ligne, d'une aide générale sur les commandes, avec les options les plus usuelles : rplan help ou d'une aide contextuelle, spécifique à une commande, donnant la liste de toutes ses options. Par exemple : rplan help submit rplan help slots NB: le système d'aide de rplan n'est pas un simple affichage de texte mais est généré par du code qui utilise les tables internes de l'analyseur de commandes et options. De fait, cette aide est nécessairement correcte et exhaustive. Cette documentation web est, elle, maintenue à la main. Elle ne peut être garantie sans erreurs ou ommissions. En cas de désaccord, c'est le help en ligne qui fait foi. Le programme rplan continue à utiliser pbs comme gestionnaire de queue mais certaines commandes pbs ne doivent plus être utilisées telles quelles (elle sont d'ailleurs désactivées). Ceci concerne les commandes qsub, qhold, qrls. Il convient d'utiliser les équivalents rplan à la place, ou les commandes abrégées. Soumission de tâchesSoumission d'un scriptLa soumission sous sa forme la plus simple se fait via la commande : rplan submit <nom-du-script> ou, sous forme abrégée : rplan sub <nom-du-script> OptionsUne seule option de soumission est reconnue et traitée par rplan, c'est la spécification du numéro de slot dans lequel la tâche doit être lancée. Par défaut c'est le premier slot appartenant à l'utilisateur et de taille convenable pour cette tâche (nombre de processeurs et durée). Dans le cas d'un utilisateur disposant de plusieurs slots, il est possible d'en spécifier un en particulier, e.g. : rplan submit -s 1234 <nom-du-script> .. autres options Toutes les autres options sont des options PBS. Options PBSrplan accepte toutes les options utilisables par l'ancien outil qsub, options qui peuvent être spécifiées indifféremment en ligne de commande ou placées à l'intérieur du script sous la syntaxe habituelle. Par exemple, pour spécifier le nombre de CPU nécessaires à la tâche, on pourra lancer : rplan sub -l ncpus=16 <nom-du-script> ou bien : rplan sub <nom-du-script> en ayant écrit dans le script : #PBS -l ncpus=16 Deux options sont obligatoires, en ligne de commande ou dans le script, ce sont le nombre de processeurs nécessaires, ncpus=NN, et la durée du job, walltime=HH:MN:SS rplan refusera toute soumission ne spécifiant pas ces deux options. Il n'est donc plus possible de lancer quoi que ce soit sans walltime. Spécificités des scripts pour rplanLes scripts de soumission indiqués par les utilisateurs ne sont pas utilisés en l'état. Lors du lancement effectif de la tâche, rplan les reconstruits avant de les injecter dans le système pbs. Cette reconstruction porte sur les options et aussi sur la réécriture complète des lignes de lancement du programme, en particulier pour pouvoir spécifier les placements sur les processeurs et les sélections multi noeuds. Pour identifier la ligne du script qui lance effectivement le programme, rplan examine la toute première commande de chaque ligne du script et, dans sa version actuelle, reconnaît quatre commandes (lanceurs) : time, nice, mpirun et rwrap. Sur cette base, la ligne de lancement est analysée et sera entièrement reconstruite dans le script définitif. Ces deux scripts, l'original présenté par l'utilisateur et le script reconstruit pour exécution, sont conservés dans un répertoire spécifique /var/spool/rplan/tmp. Le script original est nommé script-NNNN.USER et le script reconstruit submit-NNNN.USER où NNNN est l'identifiant rplan de la tâche et USER est le nom de l'utilisateur. Par exemple, voici un script de soumission, en syntaxe minimum : #!/bin/bash # #PBS -l ncpus=160 #PBS -l walltime=1:00:00 cd $HOME/Soft/torque mpirun ./testsig -a 1800 echo "Done..." et le même script, reconstruit par rplan tel qu'il sera effectivement lancé sous le gestionnaire de queue PBS : #!/bin/bash # # Rplan V 3.5.1 submission script for task 2160 in slot 1703 # This script is for the Torque batch system. # Username...... rabasse # Script file... /home/rabasse/Soft/torque/Test2 # Generated..... 2008/01/07 10:51 # Warning ! Do not edit this script, modifications would be lost ! # #PBS -N Test2 #PBS -o /home/rabasse/Soft/torque/Test2.o2160 #PBS -e /home/rabasse/Soft/torque/Test2.e2160 # #PBS -l walltime=1:00:00 #PBS -l ncpus=160 #PBS -l nodes=1:jxb01:ppn=64+1:jxb02:ppn=64+1:jxb03:ppn=32 # cd $HOME/Soft/torque # -- Rplan rebuilt command for program "./testsig" : mpirun -a jxb \ . jxb01 64 rwrap -iCS2160.rp -s1 -- ./testsig -a 1800 \ . : jxb02 64 rwrap -iCS2160.rp -s1 -- ./testsig -a 1800 \ . : jxb03 32 rwrap -iCS2160.rp -s1 -- ./testsig -a 1800 echo "Done..." Toutes les spécifications de noeuds de calcul, nombre de CPU, placement des CPU, sont entièrement prises en charge par rplan. À remarquer que rplan insère l'appel d'un lanceur spécialisé, rwrap, assurant la gestion de cpusets et de placement processeurs pour la tâche lancée. Voir Le lanceur de tâches rwrap. NB: le script utilisateur est lu une seule fois lors de la soumission (rplan sub ...). Il n'est plus possible de le modifier ensuite, même si la tâche n'a pas encore démarré. Le seul moyen de changer après coup une option est de tuer la tâche planifiée puis de resoumettre le script modifié. Programmes MPI pursPar rapport à un script destiné à l'ancien qsub, les lignes de lancement de programmes MPI peuvent être simplifiées. En particulier le nombre de processeurs, option mpirun -np <nn>, n'est plus utile puisque la réécriture du script le définira en accord avec le nombre de CPU demandés via l'option de soumission ncpus=NN. La cohérence est assurée de fait. Si le programme MPI doit tourner sur plusieurs noeuds du cluster Altix, rplan reconstruira la commande mpirun complète, avec les spécifications d'hôtes et de CPU, ainsi que des options de placement par défaut, comme -s1. (Cf. exemple de script ci-dessus). Il en résulte que l'écriture minimum d'un lancement de programme MPI peut se limiter à : mpirun myprog.exe Programmes OpenMP pursLa ligne de lancement du programme devra obligatoirement commencer par une commande nice ou time ou rwrap permettant sa reconnaissance. Par exemple : time omptest.exe ou : rwrap omptest.exe Plus, bien sûr, les spécifications de ressources, nombre de processeurs et walltime. Il est également utile d'utiliser l'option select de pbs, pour indiquer que la tâche doit impérativement tourner sur un seul noeud de calcul et non à cheval sur deux noeuds. Par exemple : #!/bin/bash # #PBS -l ncpus=32 #PBS -l walltime=24:00:00 #PBS -l select=1 rwrap omptest.exe À défaut, on pourra également reconfigurer la tâche soumise sous rplan via l'option -o, voir Gestion des tâches, ou mieux, utiliser des slots déjà configurés avec cette option noeud unique. Par défaut, rplan reconstruira la ligne de lancement via l'utilisation du programme lanceur rwrap, sans faire aucun placement (option -z de rwrap). Si l'on souhaite spécifier des options de placement de processus, on devra alors utiliser explicitement la command rwrap avec les options requises, par exemple : rwrap -x2 omptest.exe Programmes mixtes MPI OpenMPUn peu analogue aux tâches purement OpenMP au détail près qu'il faudra limiter le nombre de processus MPI en utilisant l'option standard de mpirun, -np Le nombre de processeurs demandés pour la tâche sera la somme des processus MPI et des threads OpenMP. À première vue (point à investiguer) il semble préférable de ne pas faire de placements sur les processeurs. L'option -z de rwrap sera utilisée. Par exemple, une tâche à 40 processeurs, 8 MPI et 32 threads OpenMP, sera lancée par un script de ce type : # ... #PBS -l ncpus=40 #PBS -l select=1 mpirun -np 8 rwrap -z ./program.exe Dans l'état actuel de rplan, les tâches hybrides doivent être exécutées sur un seul noeud de calcul (d'où la directive select=1). Le support multi noeuds va arriver bientôt. Commandes abrégéesCertaines commandes de rplan, d'usage courant, sont disponibles sous forme simplifiée via des alias copiant, à la lettre initiale près, les principales commandes du système pbs. On les utilisera en ajoutant les arguments et options ad-hoc, par exemple : rsub -s 1234 toto.script au lieu de : rplan submit -s 1234 toto.script Liste des alias
Gestion des tâchesLa commande : rplan tasks [options] affiche l'état courant des tâches. Par défaut ne sont affichées que les tâches appartenant à l'utilisateur qui lance la commande. L'option -a (pour all) permet d'afficher toutes les tâches en cours et l'option -u <user> toutes les tâches appartenant à un utilisateur donné. Exemple (l'affichage est découpé en deux blocs pour tenir en largeur) : Task ID PBS ID Slot Owner Jobname CPU N W Time Pr S ./. ------- ----------- ---- -------- ----------- --- - ------ -- - ./. 1815.rp 4445.jxb00 1322 hennebel RAMSES_MHD 64 1 72:00 50 R ./. 1837.rp 4464.jxb00 1765 ludovic job_paro3 16 1 30:00 50 R ./. 1847.rp 4474.jxb00 1765 gissinge bem65 16 1 20:00 50 R ./. 1817.rp 4446.jxb00 1768 hennebel RAMSES_MHD 64 1 70:00 50 R ./. 1851.rp (waiting) 1703 rabasse Test160 160 - 24:00 50 P ./. ./. Sched/Start Elaps. ./. ------------ ------ ./. 16-15:51 64:51 ./. 18-15:00 17:42 ./. 18-17:00 15:42 ./. 16-15:56 64:47 ./. 01/02-08:00 - Informations
ReconfigurationUne tâche lancée, via rplan submit, peut à tout moment être reconfigurée via la commande : rplan task <taskid> [options...] La liste des options disponibles est accessible par la commande : rplan help task Formats de tempsPour les options qui demandent un argument de durée ou de date, rplan utilise les formats suivants :
Valeurs booléennesQuelques options, -o, -h, -x, demandent un argument de nature booléenne. Rplan accepte diverses notations usuelles pour spécifier des booléens, yes/no ou y/n, true/false ou t/f, 1/0 ou plus généralement tout numérique non nul vs. nul, et enfin +/-. Options de (re)configuration
Gestion des slotsLa commande : rplan slots [options] permet d'afficher l'état courant des slots. Par défaut ne sont affichées que les slots appartenant à l'utilisateur qui lance la commande. L'option -a (pour all) permet d'afficher tous les slots en cours et l'option -u <user> tous les slots appartenant à un utilisateur donné. Exemple (l'affichage est découpé en deux blocs pour tenir en largeur) : Slot ID Owner CPU W Time Cost Eu Max wt N Start at Pr S D ./. ------- -------- --- ------ ------- ------ - ------------ -- - - ./. 1322.rp hennebel 64 725:47 15120 - - - 50 R - ./. 1765.rp ludophe 32 233:44 2435 - 1 - 50 R - ./. 1768.rp hennebel 128 515:23 21474 - - - 50 R - ./. 1703.rp rabasse 256 60:00 5000 - - 01/02-08:00 30 P - ./. ./. Sched/Start Elaps. ./. ------------ ------ ./. 11/19-18:12 710:32 ./. 10-18:16 206:28 ./. 11-20:36 180:08 ./. 01/02-08:00 - Informations
ReconfigurationLes slots peuvent être reconfigurés via la commande : rplan slot <slotid> <options...> La liste des options disponibles est accessible par la commande : rplan help slot Les options sont similaires aux options de reconfiguration des tâches. La différence majeure vient des valeurs autorisées pour les paramètres intervenants dans la planification, à savoir nombre de processeurs, durée, priorité. Pour les slots, l'utilisateur non administrateur ne peut que modifier à la baisse les valeurs. Il n'est pas possible d'agrandir son slot pour occuper tout le cluster pendant six mois. Options particulières aux slots
Du bon usage des slotsL'outil rplan n'est pas un substitut à pbs mais un complément. C'est un planificateur de tâches alors que pbs est un gestionnaire de queues. Un gestionnaire de queues est surtout orienté utilisation optimale d'un cluster et travaille autour d'une logique "lorsque quelque chose s'arrête, que peut-on lancer pour ne pas laisser de processeurs inoccupés". L'utilisation des ressources est optimale mais cette stratégie présente quelques inconvénients, en particulier pour notre utilisation :
Un planificateur ne fonctionne pas en mode immédiat mais sur le moyen terme. Tous les besoins sont rassemblés, incluants gros jobs, périodes de mise au point, etc., et agencés au mieux sur un calendrier. On évite les inconvénients mentionnés ci-dessus par un système d'allocations quasi exclusives. Par contre, l'utilisation optimale de la machine passe par le remplissage optimal du calendrier et des réservations. Et ceci passe par une démarche de chaque utilisateur qui aura une responsabilité morale de la bonne utilisation des ressources qui lui sont réservées, à l'inverse d'une gestion type pbs, plus globale, reposant sur le "premier arrivé premier servi". Voici donc quelques commentaires et options utiles de rplan pour gérer l'organisation de ses tâches.
Le lanceur de tâches rwrapEn complément de rplan, un programme annexe, rwrap, est destiné au lancement correct des exécutions. Architectures multi processeursLes machines fortement multi processeurs disposent de fonctionnalités système appelées cpusets, qui permettent de définir des groupes de processeurs par partitions. Les programmes lancés dans un cpuset ainsi que leurs processus enfants ne disposeront que des ressources de ce cpuset, sans interférences possibles avec le reste de la machine. D'autres outils, a priori, indépendants permettent de placer et fixer des processus en exécution à tels ou tels processeurs physique. L'intérêt est principalement d'augmenter la performance en évitant les migrations de processus entre les différents cpus de la machine, chose que les systèmes Unix pratiquent sans états d'âme. L'inconvénient est que si deux utilisateurs placent leur(s) processus sur un même processeur par accident (i.e. sans s'être concertés), ce processeur fonctionnera en temps partagé pour les deux processus, même si le reste de la machine est inutilisé. De fait, le placement n'a guère de sens qu'en liaison avec des cpusets non concourants. Support par les gestionnaires de tâchesLe calculateur du CEMAG dispose de trois gestionnaires de tâches :
Le lanceur rwrapCe programme a été conçu pour travailler en collaboration avec rplan et, de fait, répondre au problème évoqués ci-dessus. Il intègre un support de cpusets (en collaboration avec rplan), il assure le placement sur les processeurs (l'utilisateur peut oublier la commande dplace), enfin il est compatible avec les tâches MPI. Comme tout lanceur (ou wrapper) de programme, il doit être invoqué devant le nom effectif du programme à exécuter. Par exemple, pour un programme scalaire ou OpenMP : rwrap ./progomp.exe ou, pour un programme MPI : mpirun rwrap ./progmpi.exe En utilisation courante, c'est tout ce qu'il y a à faire. Il accepte quelques options utilisateurs, décrites ci-dessous. Lors du traitement des scripts de soumission, effectué par rplan, l'invocation de ce programme sera détectée et rplan introduira d'autres options de lancement, en particulier les informations de cpuset à utiliser. Optionsrwrap assure le démarrage du programme dans le ou les cpusets dédiés. Cette opération est faite en collaboration avec rplan et ne nécessite aucune intervention utilisateur. rwrap assure aussi le placement éventuel des processus associés à la tâche. À ce titre, il accepte quelques options de placement de la même manière que l'utilitaire dplace. NB: dplace ne doit plus être utilisé dans les scripts de soumission. Lors de l'analyse des scripts, rplan préviendra par un message d'avertissement. C'est rwrap qui doit être invoqué pour les options de placement. Les options similaires entre ces deux outils ont la même syntaxe.
D'autres options de placement particuliers, e.g. sur CPU pairs, ou impairs, sont en cours. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||