Skip to content

Présentation de SLURM

SLURM (Simple Linux Utility for Resource Management) est un gestionnaire de ressources et un ordonnanceur de tâches, sous licence libre (GPL). La documentation est disponible ici : Documentation SLURM.

Pour les utilisateurs familiers d'autres job scheduler, la pierre de rosette est un bon point de départ: rosetta.pdf.

SLURM permet de prendre en compte l'architecture logique des CPU (sockets / cores / threads), de pouvoir réserver précisément des ressources pour les jobs, et utilise les fonctionnalités du kernel Linux (telles que les cgroups pour contenir les jobs dans leurs ressources réservées.

Définitions

node
Un nœud de calcul est un serveur du cluster qui fournit des ressources (CPU, RAM, GPU) pour l'exécution des jobs.
partition
Les nœuds de calcul sont répartis selon différents critères dans des partitions. Les critères de partitionnement peuvent être variés (durée des jobs, caractéristiques des nœuds, ou projet spécifique). Un nœud de calcul peut être partagé entre plusieurs partitions. Un job sera exécuté sur une et une seule partition. Une partition est l'équivalent dans SLURM des files d'attente.
job / step / task
Un job correspond à l'allocation de ressources de calcul (CPU, RAM) à un utilisateur pour un temps donné. Les jobs sont asynchrones c'est-à-dire qu'ils ne s'exécutent pas immédiatement, ils seront mis en attente le temps que les ressources soient disponibles. Les jobs sont ordonnancés par le scheduler suivant différents critères (ressources demandés, priorités, disponibilités, partitions...). Un job est composé d'étapes (steps) qui vont lancer des tâches (tasks) à exécuter sur les ressources allouées. Une étape est définie dans un job via la commande srun. Une tâche correspond généralement à un processus.
CPU / socket / core / thread
Un CPU est une unité logique de calcul vue par l'OS. SLURM permet de gérer précisément la topologie des processeurs des nœuds de calcul et distingue le processeur physique (socket), le cœur physique (core) et le coeur logique (thread). Un CPU va donc correspondre soit à un cœur logique (si l'hyperthreading est activé), soit à un cœur physique. La bonne pratique consiste à utiliser un processus (ou un thread) par CPU.

Topologie des processeurs

Commandes fréquentes

Les commandes les plus fréquentes de SLURM sont :

  • sbatch: soumission d'un job
  • srun : soumission d'un job interactif ou exécution d'une étape (step) dans un job
  • scancel : annulation d'un job
  • sinfo : infos sur les partitions (files d'attentes)
  • squeue : infos sur les jobs
  • sprio : infos sur les priorités des jobs en attentes
  • sstat : infos sur les ressources consommées par un job