Quelques commandes pour bien débuter :

Commande À quoi ça sert Exemple minimal Erreur fréquente
ssh
login.cluster
Se connecter au cluster ssh
user@io-login.meso.umontpellier.fr
Lancer des calculs directement sur sur “login node”
module avail Voir logiciels disponibles module avail Oublier de charger des modules
module load python Charger logiciel module load gcc/4.9.3 Mauvaise version chargée
module list Voir modules actifs module list Conflits de modules
module purge Détruit les configurations préalablement chargées module purge Oublier de recharger des modules essentiels
sbatch job.sh Soumettre job batch sbatch run.sh Mauvais chemins de fichiers
squeue -u $USER Voir ses jobs squeue -u $USER Regarder un mauvais user
scancel JOBID Annuler job scancel 12345 Mauvais JOBID
sinfo Voir partitions sinfo Mauvaise partition choisie
sacct -j JOBID Stats job terminé sacct -j 12345 Attendre avant fin job
seff JOBID Efficacité job seff 12345
top Monitoring CPU/RAM top Sur login node uniquement
htop Monitoring interactif htop
df -h Espace disque df -h Remplir l’espace home
du -sh Taille fichiers du -sh Lancer dans de gros dossiers
rsync -av Copier fichiers rsync -av chemin_dossier_source chemin_scratch/ Copier avec cp lent
find . -name “*.out” Trouver fichiers find . -name “*.log” Recherche depuis /
tail -f slurm.out Suivre sortie job tail -f slurm-123.out Mauvais fichier de sortie
time ./prog Temps exécution d’une commande time python script.py Confondre les temps CPU/real

 


Premier job minimal (exemple)

1. Comment charger des modules :

module load gcc/4.9.3
module load python

2. Exemple de job : Script “job.sh”

#!/bin/bash
#SBATCH --job-name=test
#SBATCH --output=test.out
#SBATCH --time=00:05:00
#SBATCH --cpus-per-task=1
#SBATCH --mem=1G

#Specify the account
#SBATCH --partition=cpu-dedicated
#SBATCH --account=dedicated-cpu@your_partition
hostname
sleep 60

3. Soumettre son job :

sbatch job.sh

4. Vérifier l’état de son job :

squeue -u $USER

5. Vérifier son utilisation :

seff JOBID

6. Visualiser les résultats

cat test.out

Diagnostiquer un job lent

Diagnostic

Commandes

CPU saturé ? seff JOBID
Mémoire insuffisante ? sacct -j JOBID –format=MaxRSS
I/O lent ? vmstat 5
Mauvaise partition ? scontrol show job JOBID
Mauvais nombre de cores ? sacct -j JOBID –format=Elapsed,CPUTime

 

Précisions sur les résultats affichés avec la commande “vmstat 5” :

Colonne Signification Commentaires
r processus en attente CPU élevé = CPU saturé
free mémoire libre proche 0 = pression mémoire
si/so swap in/out > 0 = swap actif (mauvais)
wa I/O wait élevé = disque saturé
us CPU user charge calcul
sy CPU system charge noyau
i CPU idle CPU libre

 


Job bloqué en queue

squeue -j JOBID -o "%.18i %.10P %.8T %.10M %.9l %.6D %R"

“-o” permet de personnaliser l’affichage

Champ Signification Description
%.18i JobID Identifiant du job
%.10P Partition Partition utilisée
%.8T State État du job (RUNNING, PENDING, etc.)
%.10M Time used Temps écoulé depuis le démarrage
%.9l Time limit Temps maximum autorisé
%.6D Nodes Nombre de nœuds alloués
%R Reason / Node list Nœud utilisé (si RUNNING) ou raison d’attente (si PENDING)

 


Faire des vérifications :

sprio -j JOBID
scontrol show job JOBID
sinfo

Problèmes fréquemment rencontrés :

  • partition pleine

  • priorité faible

  • dépendances du job

  • demande de mémoire trop élevée

  • Job qui crash :

 

Problème

Commandes pour vérifier

Out of Memory sacct -j JOBID –format=MaxRSS,ReqMem
Timeout sacct -j JOBID –format=Elapsed,Timelimit
Segfault tail slurm-*.out
Module incorrect module list

 

MaxRSS = Maximum Resident Set Size (quantité maximale de mémoire RAM réellement utilisée par le job)

ReqMem = Requested Memory (quantité de mémoire demandée dans le script SLURM)