Article
Checklist HPC — Utilisateur cluster SLURM
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)