Suivre et contrôler ses jobs SLURM
Le suivi d'un job permet de vérifier son état, sa durée, ses ressources et ses éventuels messages d'erreur. Utilisez l'identifiant du job renvoyé par sbatch, srun ou Open OnDemand.
Voir ses jobs
Afficher les jobs en cours ou en attente :
squeue -u "$USER"
Afficher une vue plus détaillée :
squeue -u "$USER" \
-o "%.18i %.9P %.24j %.8T %.10M %.10l %.6D %R"
Afficher tous les jobs d'un utilisateur :
squeue -u <identifiant>
Comprendre les états
| Code | État | Signification |
|---|---|---|
PD | PENDING | Job en attente |
R | RUNNING | Job en cours |
CG | COMPLETING | Job en finalisation |
CD | COMPLETED | Job terminé avec succès |
F | FAILED | Job terminé avec une erreur |
CA | CANCELLED | Job annulé |
TO | TIMEOUT | Durée maximale atteinte |
OOM | — | Mémoire dépassée |
NF | NODE_FAIL | Défaillance d'un nœud |
Comprendre l'attente
Pour voir la raison d'attente :
squeue -j <job_id> \
-o "%.18i %.9P %.20j %.8T %.10M %.10l %.6D %R"
Raisons courantes :
- ressources occupées ;
- priorité insuffisante ;
- quota ou limite du projet ;
- durée ou ressources difficiles à placer ;
- dépendance non satisfaite ;
- partition indisponible.
Afficher les détails d'un job
scontrol show job <job_id>
Cette commande affiche notamment :
- la partition ;
- le compte ;
- les ressources demandées ;
- le nœud attribué ;
- les dates de soumission, début et fin ;
- les dépendances ;
- les fichiers de sortie et d'erreur.
Consulter l'historique
Pour un job terminé :
sacct -j <job_id>
Pour les ressources utilisées :
sacct -j <job_id> \
--format=JobID,JobName,State,ExitCode,Elapsed,AllocCPUS,MaxRSS,AllocTRES
Ces données permettent de comparer les ressources demandées et réellement consommées.
Consulter les logs
Si le script contient :
#SBATCH --output=logs/%x-%j.out
#SBATCH --error=logs/%x-%j.err
Consultez les fichiers :
less logs/mon-calcul-<job_id>.out
less logs/mon-calcul-<job_id>.err
Pour suivre un fichier pendant l'exécution :
tail -f logs/mon-calcul-<job_id>.out
Annuler un job
Annuler un job précis :
scancel <job_id>
Annuler tous ses jobs :
scancel -u "$USER"
La commande scancel -u "$USER" annule tous vos jobs autorisés. Utilisez-la avec prudence.
Annuler une tâche d'un job array :
scancel <job_id>_<array_index>
Contrôler un job en cours
Afficher le nœud utilisé :
squeue -j <job_id> -o "%.18i %.9P %.20j %.8T %.10M %.10l %.6D %R"
Afficher les détails du nœud :
scontrol show node <nom-du-nœud>
Pour un job GPU, vérifiez le GPU depuis le job ou ses logs :
nvidia-smi
Les outils de mesure disponibles peuvent dépendre des droits et de la configuration du centre.
Job terminé avec erreur
Vérifiez dans l'ordre :
- l'état du job avec
sacct; - le code de sortie ;
- le fichier
.err; - le fichier
.out; - les ressources consommées ;
- les modules et environnements chargés.
Commandes utiles :
sacct -j <job_id> --starttime=now-1day
scontrol show job <job_id>
Problèmes fréquents
TIMEOUT
La durée maximale a été atteinte. Mesurez le temps nécessaire, demandez une durée adaptée ou découpez le traitement.
OUT_OF_MEMORY ou OOM
La mémoire demandée était insuffisante. Augmentez progressivement --mem, réduisez la taille des lots ou traitez les données par étapes.
FAILED
Le programme a renvoyé une erreur. Consultez les logs et vérifiez les chemins, modules, paramètres et fichiers d'entrée.
Job toujours en attente
Vérifiez la raison avec squeue. Une demande trop importante peut être plus difficile à planifier qu'une demande plus modeste.
Open OnDemand
Depuis Open OnDemand :
- utilisez Jobs pour voir les sessions ;
- consultez le statut et le message affiché ;
- récupérez l'identifiant du job SLURM ;
- annulez les sessions inutilisées avec l'action proposée.
Fermer l'onglet du navigateur ne garantit pas l'arrêt du job.