Sommaire
Réservations Slurm
Le gestionnaire de ressources Slurm permet de réserver les nœuds d'une partition pour les attribuer à un groupe d'utilisateurs durant une période de temps donnée. Les jobs qui utilisent cette réservation ne peuvent s'exécuter que sur les nœuds définis dans la réservation et aucun autre job ne pourra s'exécuter sur ces nœuds.
1. Réservation en cours
Nom réservation |
Utilisateurs |
Nbre : liste nœuds |
Partition |
Heure début |
Heure fin |
Périodicité |
infoair |
attjl |
14 : n[22-35] |
|
- |
31 Mai 2023 |
|
Pour connaître la liste des réservations en cours, exécutez la commande Slurm suivante :
summit2:~ # scontrol show res
2. Mise en place d'une réservation
Seuls les administrateurs du cluster sont autorisés à créer (supprimer ou modifier) une réservation Slurm. Par conséquent, pour toute demande de réservation, vous contacterez calcul@aero.obs-mip.fr qui effectuera le nécessaire une fois que les utilisateurs des nœuds inclus dans la réservation auront été informés et auront donné leur accord.
Généralement, une réservation est mise en place pour des raisons de contraintes :
- besoin de restituer des résultats de simulations de manière périodique (tous les jours par exemple) pendant une durée donnée. Par exemple des campagnes comme fukushima, tpico, hymex...
- pour une maintenance planifiée nécessitant l'arrêt du cluster : en réservant tous les nœuds sur la durée de l'intervention, les administrateurs sont sûrs qu'aucun job ne pourra s'exécuter pendant cette période.
3. Soumettre un job dans une réservation
Les utilisateurs qui bénéficient de droit sur une réservation peuvent soumettre un job sur les nœuds qui la composent en ajoutant simplement l'option --reservation=<name> à la commande sbatch1 qu'ils ont l'habitude de lancer, par exemple pour la réservation tpico :
summit2:~> sbatch --reservation=tpico myjob.sh
ou plus simplement, si le script contient une directive #SBATCH --reservation=tpico (voir SoumissionJob) :
summit2:~> sbatch myjob.sh
avec
summit2:~> cat myjob.sh #!/bin/sh #SBATCH --reservation=tpico ...
Remarques concernant un job soumis avec réservation :
- le job ne peut s'exécuter que durant la période de temps définie par la réservation.
le job sera détruit s'il atteint la limite de temps de la réservation (EndTime) sauf si l'administrateur a fixé une valeur non nulle à ResvOverRun dans le fichier de configuration de Slurm, comme dans le cas suivant où le job peut dépasser de 4 heures la date de fin de réservation :
summit2:~> scontrol show config | grep ResvOverRun ResvOverRun = 240 min
idem pour salloc et srun s'il s'agit d'une soumission interactive (rarement le cas). (1)
4. Soumettre un job en dehors d'une réservation
On suppose ici qu'une réservation périodique a été mise en place sur un sous-ensemble de nœuds d'une partition. Prenons la réservation hebdomadaire tpico par exemple :
summit2:~> scontrol show reserv ReservationName=tpico StartTime=2012-02-26T07:30:00 EndTime=2012-02-26T12:00:00 Duration=04:30:00 Nodes=n[103-134] NodeCnt=32 Features=(null) PartitionName=mpib40_MESO Flags=IGNORE_JOBS,DAILY Users=chajp Accounts=(null) Licenses=(null) State=INACTIVE
où 32 nœuds sont réservés tous les jours (Flags DAILY) de 7h30 à 12h00 sur la partition mpib40_MESO. Les caractéristiques de la partition mpib40_MESO sont les suivantes :
summit2:~> sinfo -p mpib40_MESO PARTITION AVAIL TIMELIMIT NODES CPUS(A/I/O/T) STATE NODELIST mpib40_MESO up 10-00:00:0 36 288/0/0/288 alloc n[101-136]
à savoir 36 nœuds (n[101-136]) avec une limite de temps de 10 jours.
N'importe quel utilisateur pourra lancer un job à partir de 12h00 sur les nœuds libres de la partition mpib40_MESO si la durée du job n'empiète pas sur le début de la réservation prévue le jour suivant à 7h00 du matin. Pour cela, il faut impérativement fournir une durée limite de job convenable avec l'option --time=heure:minutes:secondes. Sans cette option, la limite de 10 jours de la partition mpib40_MESO est utilisée comme durée de job (comportement par défaut) et le job ne pourra pas s'exécuter : il sera placé dans l'état Pending.
A RETENIR :
- La limite de temps d'un job est par défaut la limite de temps de la partition dans laquelle il est soumis.
Si vous constatez qu'un de vos jobs se retrouve dans l'état Pending alors que les nœuds sont libres au moment de la soumission du job, vérifiez que les nœuds de votre job n'appartiennent pas à une réservation avec :
summit2:~> scontrol show reservation
Un job soumis sur des nœuds appartenant à une réservation et dont la durée empiète sur le début de la réservation, ne peut pas s'exécuter : il se retrouve dans l'état Pending (jusqu'à l'annulation de la réservation). Il est impératif d'ajuster convenablement sa durée en ajoutant l'option --time=<time> à la commande sbatch et d'ajuster convenablement sa durée <time>=heures:minutes:secondes pour qu'il se termine avant le début de la réservation et ait une chance de s'exécuter.
Pour plus d'information sur ce sujet, nous vous conseillons de consulter l'aide officielle de Slurm.
