Exemple Infrastructure Standing réservation Partition Priorité Autres
Infrastructure Cluster de machines virtuelles fourni par CC SUDO pour configurer Torque/MAUI. Un ensemble d’exemples. Un script permettant de générer un flux de job (de simple sleep). Pas de sortie pour les jobs. WN02 WN03 WN06 WN07 WN01 WN04 WN05 WN08 Ccegeevmli1x Torque Maui Ccegeevmli1x Torque Maui
Config initiale EXEMPLE 1 Configuration initiale de torque Fichier server_priv/nodes workername np=2 définit 2 job slots par worker node Nécessite le redémarrage de torque pbsnode -a Définition des queues 2 queues locales n’ayant pas de différences. locale par défaut et test Voir fichier pbs_serv pour commentaires Pour voir configuration torque Qmgr puis print server Modifiez la config sudo qmgr < pbs_serv
Config initiale EXEMPLE 1 Configuration initiale de MAUI Edition du fichier /var/spool/maui/maui.cfg # SERVERHOST ccegeevmli11.in2p3.fr ADMIN1 root gridadm ADMINHOST localhost RMTYPE[0] PBS RMSERVER pbsmaster SERVERPORT 40559 SERVERMODE NORMAL # Set PBS server polling interval. Since we have many short jobs # and want fast turn-around, set this to 10 seconds (default: 2 minutes) RMPOLLINTERVAL 00:00:30 # a max. 10 MByte log file in a logical location LOGFILE /var/log/maui.log LOGFILEMAXSIZE 10000000 LOGLEVEL 3 Vérifier la config avec showq et showq -r SERVERHOST doit être adapté à votre serveur torque RMSERVER prend la valeur pbsmaster ou pbsmaster2 suivant que le nom de votre serveur finis par une nombre pair ou impair
Flux de jobs Simulation d’un flux de job Petit script jobflux.sh arg1 [arg2] Crée un simple sh avec dedans un sleep x x étant un nombre aléatoire entre 0.5*arg1 et 1.5*arg1 Soumet le job puis attend arg2 (ou bien arg1 si arg2 pas donné) avant de recommencer Boucle à contrôler par une variable dans le script. La soumission à lieu dans la queue définit par défaut Possibilité de faire un qsub maison à tout moment.
EXEMPLE 1 Constatez comment les job slots se remplissent. Rajoutez dans /var/spool/maui/maui.cfg NODEALLOCATIONPOLICY CPULOAD Constatez à présent la différence Les valeurs possibles sont : FIRSTAVAILABLE, LASTAVAILABLE, MINRESOURCE, CPULOAD, PRIORITY, LOCAL, CONTIGUOUS, MAXBALANCE, FASTEST
Réservation de job slot : EX 2 Réserve simplement un des deux jobs slots par worker node pour un job arrivant sur le queue test. Modifier le fichier de conf de MAUI et relancé le service. Vérifiez que seul un job slots sur deux est utilisé par le flux de job standard. Au max 4 job tournent les autres attendent. Soumettez un job dans la queue test. Qsub –q test JOB-xxxxx Que constatez vous ? Il est important de noter à ce niveau que le job dans la queue test est passé immédiatement car une ressource était disponible (la réservation) mais également parce que par défaut le backfilling est activé et donc sa priorité n’avait pas d’importance. L’état des réservation peut être consulté par showres
Partition MAUI EX3 Créez deux partitions contenant chacune une partie des ressources. Ici on met deux workers dans la partition OS1 et les deux autres dans la partition OS2. Forcez chacune des queues à n’avoir accès qu’a une seule des partitions. Forcez une queue à n’avoir accès qu’à une partition et l’autre à l’ensemble des partitions. A noter la présence du & dans la définition des partitions affectées aux classes et cela pour rendre stricte la condition. On peut également définir la partition par défaut, pour cela il suffit d’utiliser l’attribut PDEF. CLASSCFG[test] PLIST=OS2,OS1 PDEF=OS2
Priorité MAUI EX4 Créez toute une série de priorités s’appliquant sur chacun des critères. User Group Account Class Visualisez les effets à l’aide des commandes clientes de MAUI Attention on ne peut consulter que les priorités des jobs en queue mais pas running. Diagnose -p
Conditions MAUI EX5 De façon analogue aux priorités chacun des attributs des jobs peut servir pour définir des conditions d’exécution. MAXPROC MAXJOB MAXJOBQUEUED ….. Peut s’exprimer sous la forme maxproc softlimit,hardlimit Hardlimit est la valeur max, softlimit n’est applicable que dans le cas de « conflit ».
Cas complexe EX6 Cas intégrant des standing reservation des partitions et la gestion de priorités. Libre cours à l’imagination
Cas de Back filling EX7 Nous allons repartir du cas EX2 (standing reservation) Par défaut le backfilling est activé Rajoutez : BACKFILLPOLICY NONE Soumettez un job dans la queue test (en ayant des jobs de la queue local en attente). Constatez le comportement à présent du job soumit. Le paramètre BACKFILLPOLICY peut prendre plusieurs valeurs dont : FIRSTFIT et BESTFIT Dans le cas de bestfit on peut également définir BACKFILLMETRIC (PROC, PROCSECONDS, SECONDS,..) comme critère de sélection du « best » choix.
Cas de Back filling EX7 Rajoutons à présent le paramètre BACKFILLDEPTH 2 Signifiant que l’on va autoriser le backfilling sur une profondeur de 2 jobs Constatez le résultat.
Exemple d’utilisation du submit_filter Editer le fichier /var/spool/pbs/torque.cfg Y rajouter: SUBMITFILTER /var/spool/pbs/submit_filter Editer le fichier /var/spool/pbs/submit_filter Y mettre : #!/usr/bin/perl while (<STDIN>) { $line = $_; $line .= "\n#PBS -A toto\n"; print $line; } Lancez des jobs et constatez (diagnose –a) l’apparition de job ayant un attribut ACCOUNT égal à toto. Mettre une priorité, une standing reservation,…. sur cet attribut.