Utiliser SLURM l'ordonnanceur de la plateforme

 

Sur cette page vous trouverez les commandes de bases permettant de se connecter à la plateforme de calcul de BIOSP et de lancer vos jobs, les supprimer, les contrôler.

pour simplement accéder au résumé des commandes cliquez ici.


Au Menu de cette page:

  1. Prérequis à l'utilisation:
  2. Pour accéder au serveur maître
  3. Soumettre rapidement un job
  4. Créer un batch de soumission
  5. Soumettre un job en mode interactif
  6. Les différentes partitions
  7. Contrôler un job
  8. Supprimer/annuler un job en cours
  9. Utilisation Avancée
  10. Trucs et astuces

 

 


 

 

  • Prérequis à l'utilisation:

Avoir un compte sur l'ensemble des serveurs de la plateforme donc avoir au préalable fait une demande
Avoir signé la charte du cluster.

 

 


 

  • Pour accéder au serveur maître

 

Il vous faut vous connecter à slurm01 par le biais d'une commande ssh

Prérequis: Avoir accès au réseau local du centre PACA soit en étant sur le site lui même soit en utilisant le VPN de l'INRAE  soit en utilisant la passerelle de PACA.

La commande ssh: ---> lien pour linux windows mac

ssh mon_ldap@147.100.14.120

Note: Si vous êtes amené à utiliser une session graphique (non recommandé) il faudra utiliser l'option -X
exemple: ssh -X lhoude@147.100.14.120

A ce stade vous devez voir un écran comme celui-ci et êtes en mesure de lancer un job.

 Note: Comme indiqué dans la charte on ne doit pas lancer de programme  directement sur le serveur maitre(slurm01), il ne peut que lancer des scripts permettant de faire tourner vos programmes sur les autre noeuds(serveurs) de la plateforme de calcul.

Lorsque vous êtes connectés votre espace (/home/votre_ldap/ ou ~/ ) vous suivra quelque soit le serveur sur lequel vos jobs tourneront.

 

 


 

 

  • Soumettre rapidement un job:

La commande sbatch (qsub sous SGE)  permet de soumettre un batch job ou directement un job sur la partition (queue sous SGE)  par défaut

La commande srun permet desoumettre directement un programme

Exemple:

sbatch mon_batch.sh

srun mon_job.sh

à l'image de ce qui se faisait sur l'ancien ordonnanceur de BIOSP (SGE/OGE) il existe donc la possibilité de faire des "batch job" qui permettent de manière claire d'utiliser les options de SLURM voir de paralléliser les differents jobs.

Pour rédiger un batch chaque ligne commençant #SBATCH sera interprété par l'ordonnanceur lors de l'exécution au même titre que l'on aurait mis les options sur une seule ligne de commande le #! désigne le shell d'exécution (bash dans l'exemple) toutes autres chaines derriere  un '#' sera considérée comme un commentaire.

 

 


 

 

  • Créer un batch de soumission:

Nous reviendrons plus tard sur les différents types de batch et sur les options possibles mais dans un premier temps voici un  exemple de batch pour mieux comprendre le fonctionnement:

A noter:#SBATCH (le ‘#SBATCH’ ne désigne pas un commentaire ici) sera interprété par l'ordonnanceur lors de l'exécution au même titre que l'on aurait mis les options sur une seule ligne de commande le #! désigne le shell d'exécution (bash dans l'exemple) toutes autres chaines derriere  un '#' sera considérée comme un commentaire.

 

#!/bin/bash
#SBATCH --time=00:10:00 # fixer une limite de temps au job
#SBATCH -J testjob #job name
#SBATCH -o output.out #le fichier de sortie d écran
#SBATCH -e error.out  # le fichier de sortie d erreur
#SBATCH --mem=8G  #je veux au moins 8G
#SBATCH --cpus-per-task=4   #nombre de cpu sur un même noeud
#SBATCH --mail-type=BEGIN,END,FAIL # ou ALL pour tout événement (email address = compte LDAP)
#SBATCH --mail-user=loic.houde@inrae.fr

#Exemple charger l'environnement de l'application

# on va charger les éléments essentiels pour l'utilisation du package spatial rgdal

module load  geos gdal proj/7.0.1

#chargement du module R
module load R/4.0.0

# et enfin les lignes  de commande de mon programme
R CMD BATCH monprogramme.r

 

 

 


 

 

  • Les différentes partitions

Nous l'avons vu précédemment lorsque l'on soumet un job à l'image de ce qui se faisait avec SGE nous pouvons préciser sur quel type de noeuds (serveurs) nous le soumettons:

Une partition correspond à un type de serveur, le choix du type de serveur dépend des ressources estimées qui seront utilisées par votre job.

Nous disposons sur notre  plateforme de calcul de 4 catégories (type) de serveurs, chacune de ces catégories ayant des caractéristiques physiques différentes, identifiées principalement par 2 composantes principales:(RAM,PROCESSEUR)

RAM: Quantité disponible en Go

Processeurs:  Fréquence (rapidité) , nombre de coeurs/processeur/serveur

Les partitions:

Type de partition/serveur:

  • pcbiom5x --> 16 coeurs , fréquence moyenne ,64 Go de RAM
  • pcbiom2x ---> 8 à 12 coeurs, fréquence moyenne à rapide, 48 Go de RAM
  • pcbiom0x ---> 8 coeurs fréquence très élevée, 128 Go de RAM
  • pcbiom9x- 40 coeurs , fréquence moyenne,440 à 512 Go de RAM

Partition "système"

  • all*     -> partition actuellement par défaut lorsque rien n'est précisé
  • sge -> partition réservée pour le basculement de SGE à SLURM (pas de soumission possible)

Quand un job est soumis l'ordonnanceur SLURM choisit le serveur sur lequel il y a le moins de charge, et si la partition n'est pas précisée il choisira  par défaut la partition "all"

Pour choisir sa partition il faut utiliser l'option -p nom_de_la_partition

Exemples:

srun -p pcbiom2x --pty bash

sbatch -p pcbiom0x monprg.sh

 


 

 

  • Soumettre un job en mode interactif:

Les options de la commande srun sont sensiblement les même que pour sbatch.

Pour lance un terminal actif:

srun --pty bash

 

 


 

 

 

  • controler un job

A] Voir l'état d'un job (file d'attente, execution,node) :

squeue [JOBID]

Exemple: squeue -j 91

 

 B)  Pendant l'exécution:

sstat -j jobid

Exemple: sstat -j 85

Il existe un grand nombre de paramètres  et d'options de formatage pour voir comment tourne son job.

Exemple pour voir la quantité totale de RAM utilisée et le node surlequel tourne le job:

sstat -j 89 --format MaxRSS,Node

L'ensemble des formats peuvent être obtenus grace à la commande qacct --helpformat

C)  Une fois terminé

sacct -j jobid

Exemple:  sacct -j 85

Les formats principaux dont les noms sont suffisamment parlants sauf MaxRSS qui correspond à la quantité de RAM utilisée (?):

User,JobName,Elapsed,Node,Submit,End,ExitCode,Workdir,MaxRDD

Exemple:  sacct -j 85 --format User,JobName,Elapsed,Node,Submit,End,ExitCode

Les options types: - l  tous les champs ,-u nom user , -j jobid

L'ensemble des formats peuvent être obtenus grace à la commande qacct --helpformat

 


 

 

  • Supprimer/annuler un job en cours

scancel jobid

 

Exemple: scancel 387


 


 

 

  • Utilisation Avancée:(La liste ci dessous est à compléter au fur et à mesure)

Soumettre un job quand un autre job est terminé:

<dependency_list> is on the form <type :jobID[:jobID][,type :jobID[:jobID]]>

Exemple:

sbatch --dependency=afterok:1234 mon_premier_job

Choisir une liste de serveur ou un seul (--nodelist ou -w)

Exemple:

sbatch --nodelist=pcbiom08,pcbiom03  mon_premier_job

 

Lancer un job directement depuis son poste de travail

Exemple:

ssh slurm01  bash --login -i -c /home/lhoude/cluster/lance.sh

 

exemple de fichier de lancement :

#!/bin/bash
srun /home/lhoude/cluster/monjob.sh

Lancer des jobs en paralleles

voir ici

 

 


 

 

Commandes BIOSP :

quelques scripts  shell "maison"  qui peuvent être utiles

qui -> permet de voir qui utilise le cluster

qui2 -> permet de voir surquels serveurs sont les utilisateurs et les jobs

qlogin -> alias de la commande "srun --pty bash "

jobs -> voir les coeurs et l'espace de stockage disponibles sur le cluster

qhost -> un rapide coup d'oeil sur les différents serveurs  et leur ressources disponibles plus d'information avec la commande 'scontrol show nodes'