Description | Savoir utiliser Slurm |
---|---|
Cours lié | HPC Administration Module2 |
Auteur | Ndomassi TANDO (ndomassi.tando@ird.fr) |
Date de création | 27/09/2019 |
Date de modification | 27/09/2019 |
Summary
- Objectif
- Lancer des jobs sous Slurm
- Superviser des ressources sous Slurm
- Commandes d’administration sous Slurm
- Links
- License
Objectif
Pouvoir lancer des jobs de différents types sous Slurm.
Monitorer les ressources sous Slurm
Lancer des jobs sous Slurm:
Lancer des commandes depuis la machine maître s’exécutant les ressources de calcul
La commande suivante alloue des ressources de calcul (noeuds, cpus, mémoire) et lance la commande immédiatement sur chaque ressource allouée
Exemple:
Permet d’obtenir le nom de la ressource de calcul utilisé
Réserver des ressources de calcul pour lancer des commandes avec Slurm
On utilise la commande:
Cette commande permet de réserver une ou pusieurs ressources de calcul tout en continuant à travailler sur la machine maître.
Les commandes à lancer sur le ressources de calcul peuvent être lancées plus tard avec la commande srun + arguments
.
Il est important quand on utilise cette commande préciser un temps de réservation avec l’option –time
Exemple: On réserve 2 noeuds de calcul( options -N) à la fois pour 5 minutes et on lance plus tard la commande hostname sur ces 2 noeuds avec srun
Nous obtiendrons une réponse du type:
Lancer des commandes après connexion à un noeud de manière interactive:
Pour se connecter de manière intéractive pendant un temps X à un noeud, on utilise la commande:
Une fois connecté sur le noeud, on peut lancer les commandes désirées sans le préfixe srun
qui s’exécuteront sur le noeud
Les principales options disponibles pour lancer une analyse sous Slurm:
Toutes les commandes salloc
, srun
et sbatch
peuvent être utilisées avec les options suivantes:
actions | Option |
---|---|
Préciser une partition | -p [queue] |
Nombre de noeuds à utiliser | -N [min[-max]] |
Nombre de cpus à utiliser | -n [count] |
limite de temps | -t [min] ou -t [days-hh:mm:ss] |
préciser un fichier de sortie | -o [file_name] |
préciser un fichier d’erreur | -e [file_name] |
Combiner les fichiers STDOUT et STDERR files | utiliser -o sans -e |
Copier l’environnement | –export=[ALL , NONE , variables] |
Type de notifications à envoyer | –mail-type=[events] |
Envoi d’un email | –mail-user=[address] |
Nom du job | –job-name=[name] |
Relancer un job si problème | –requeue |
Preciser le répertoire de travail | –workdir=[dir_name] |
Taille de la mémoire à réserver | –mem=[mem][M,G,T] ou-mem-per-cpu=[mem][M,G,T] |
Préciser un account | –account=[account] |
Nombre de tâches par noeud | –tasks-per-node=[count] |
Nombre de cpus par tâche | –cpus-per-task=[count] |
Dépendance à un autre noeud | –depend=[state:job_id] |
Choisir des hôtes de préférence | –nodelist=[nodes] ET/OU –exclude=[nodes] |
Job arrays | –array=[array_spec] |
Heure de démarrage | –begin=YYYY-MM-DD[THH:MM[:SS]] |
Lancer des jobs via un script
Lancer est job est l’action de lancer une analyse dont le déroulement est décrite à l’intérieur d’un script.
Slurm permet d’utiliser des scripts de type bash, perl ou python.
Slurm alloue les ressources demandées et lance les analyses sur celles-ci en arrière plan.
Un script créé doit cependant contenir une entête afin que celui-ci soit interprété par Slurm.
Pour que chaque option du script soit interprété par Slurm, il faut les faire précéder par le mot clé #BATCH
Exemple de script slurm:
Une analyse sera lancé grâce à la commande:
Avec script.sh
le nom du script à utiliser
Supprimer un job sous Slurm
Avec <job_id>
: le numéro du job
Superviser des ressources sous Slurm:
Avoir des informations sur les jobs :
On utilise la commande
Pour que les informations sur les jobs se rafraichissent toutes les 5 secondes
Pour avoir des infos sur un job en particulier
Avec <job_id>
: le numéro du job
Pour avoir des infos sur les jobs d’un utilisateur en particulier
Avec <user>
: le login de l’utilisateur
Pour avoir des informations précises sur tous les jobs:
Pour avoir des informations sur les ressources utilisées par un job terminé:
Avec <job_id>
: le numéro du job
On peut également rajouter la commande suivante en fin de script pour obtenir des informations sur les informations utilisées dans le fichier de sortie:
Avoir des infos sur les partitions (files d’attentes)
Taper la commande:
Cette commande donne des informations sur les partitions et les noeuds qui leur sont rattachés.
Pour des informations plus précises:
De manière générale scontrol show
peut être utiliser avec nodes, user, account etc…
Connaitre la limite de temps par parttion:
Avoir des infos sur le noeuds de calcul
Taper le commande:
Plusieurs états sont possibles:
-
alloc : le noeud est utilisé entièrement
-
mix : le noeud est partiellement utilisé
-
idle : Aucun job ne tourne sur le noeud
-
drain :Le noeud est entrain de finir des jobs reçus mais n’en accepte pas de nouveaux ( quand le noeud va être arrêté pour maintenance).
Pour obtenir des informations encore plus précises:
Commandes d’administration sous Slurm:
La commande sacctmgr
suivie d’options permet de modifier des valeurs sur différents paramètre: account, user, ressources, nodes, partitions etc
Rajouter un utilisateur à un account (group).
Sous Slurm faire appartenir un user à un account permet de gérer ses droits et ses privilèges sous slurm.
Par exemple si on veut que l’utilisateur dom appartienne au group bioinfo, on écrira:
Changer les limites de ressources pour un account
On utilisera la commande
Par exemple pour imposer une limite à 100 cpus pour le compte bioinfo:
Pour supprimer la limite du nombre de cpus pour le compte bioinfo:
Links
- Cours liés : HPC Trainings