Le gestionnaire de charge de travail Slurm , anciennement connu sous le nom de Simple Linux Utility for Resource Management ( SLURM ), ou simplement Slurm , est un planificateur de tâches gratuit et open source pour les noyaux Linux et de type Unix , utilisé par de nombreux supercalculateurs et clusters informatiques du monde entier .
Slurm utilise un algorithme d'optimisation basé sur la planification par courbe de Hilbert ou la topologie de réseau en arbre gras afin d'optimiser la localité des affectations de tâches sur les ordinateurs parallèles. Il offre trois fonctions clés :
- attribution d'un accès exclusif et/ou non exclusif à des ressources (nœuds informatiques) aux utilisateurs pendant une certaine durée afin qu'ils puissent effectuer un travail,
- fournissant un cadre pour démarrer, exécuter et surveiller le travail, généralement un travail parallèle tel que l'interface de passage de messages (MPI) sur un ensemble de nœuds alloués, et
- Arbitrer les conflits d'accès aux ressources en gérant une file d'attente de tâches en attente.
En 2010, les développeurs de Slurm ont fondé SchedMD , qui assure la maintenance du code source officiel, le développement, le support commercial de niveau 3 et la formation. Un support commercial est également disponible auprès de Bull , Cray et Science + Computing (filiale d' Atos ).TOP500 .
Structure
Slurm est conçu de manière très modulaire, avec une centaine de plugins optionnels. Dans sa configuration la plus simple, il s'installe et se configure en quelques minutes. Des configurations plus sophistiquées offrent l'intégration de bases de données pour la comptabilité, la gestion des ressources et la priorisation des charges de travail.
Caractéristiques
Les fonctionnalités de Slurm incluent :
- Aucun point de défaillance unique, démons de sauvegarde, options de tâches tolérantes aux pannes
- Hautement évolutif (planifie jusqu'à 100 000 tâches indépendantes sur les 100 000 sockets d' IBM Sequoia )
- Haute performance (jusqu'à 1000 soumissions de tâches par seconde et 600 exécutions de tâches par seconde)
- Logiciel libre et open source ( Licence publique générale GNU )
- Hautement configurable avec une centaine de plugins
- Planification équitable des comptes bancaires hiérarchisés
- Planification préemptive et par groupes (découpage temporel des tâches parallèles)
- Intégré à une base de données pour la comptabilité et la configuration
- Allocation des ressources optimisée pour la topologie du réseau et la topologie sur le nœud (sockets, cœurs et hyperthreads)
- Réservation à l'avance
- Les nœuds inactifs peuvent être mis hors tension.
- Il est possible de démarrer différents systèmes d'exploitation pour chaque tâche.
- Planification des ressources génériques (par exemple, unité de traitement graphique )
- Comptabilisation en temps réel jusqu'au niveau de la tâche (identification des tâches spécifiques présentant une utilisation élevée du processeur ou de la mémoire)
- Limites de ressources par utilisateur ou compte bancaire
- Comptabilisation de la consommation d'énergie par tâche
- Prise en charge de l'environnement parallèle IBM (PE/POE)
- Prise en charge des tableaux de tâches
- Profilage des tâches (échantillonnage périodique de l'utilisation du processeur, de la mémoire, de la consommation d'énergie, du réseau et du système de fichiers pour chaque tâche)
- Algorithmes sophistiqués de priorisation des tâches multifactorielles
- Prise en charge de MapReduce+
- Prise en charge d' une mémoire tampon de rafale qui accélère le transfert de données scientifiques
- Soutien aux ressources génériques hétérogènes
- Politique de remise en file d'attente automatique des tâches basée sur la valeur de sortie
Plateformes prises en charge
Les versions récentes de Slurm fonctionnent uniquement sous Linux . Les versions plus anciennes avaient été portées sur quelques autres systèmes d'exploitation POSIX , notamment les BSD ( FreeBSD , NetBSD et OpenBSD ) , mais cela n'est plus possible car Slurm requiert désormais les cgroups pour ses opérations principales. Les clusters exécutant des systèmes d'exploitation autres que Linux devront utiliser un autre système de traitement par lots, tel que LPJS . Slurm prend également en charge plusieurs architectures informatiques spécifiques, notamment :
- Les modèles IBM BlueGene /Q, y compris l' IBM Sequoia de 20 pétaflops
- Cray XT, XE et Cascade
- Tianhe-2 est un système de 33,9 pétaflops doté de 32 000 puces Intel Ivy Bridge et de 48 000 puces Intel Xeon Phi , pour un total de 3,1 millions de cœurs.
- Environnement parallèle IBM
- Anton
Usage

Le slurmsystème comporte trois parties principales :
slurmctld, un démon de contrôle central fonctionnant sur un seul nœud de contrôle (avec éventuellement des sauvegardes de basculement ) ;- De nombreux nœuds de calcul, chacun avec un ou plusieurs
slurmddémons ; - Les clients qui se connectent au nœud gestionnaire, souvent via ssh .
- Les clients peuvent envoyer des commandes au démon de contrôle, qui les acceptera et répartira la charge de travail entre les démons de calcul.
Pour les clients, les principales commandes sont srun(mettre en file d'attente une tâche interactive), sbatch(mettre en file d'attente une tâche), squeue(imprimer la file d'attente des tâches) et scancel(supprimer une tâche de la file d'attente).mode batch ou en mode interactif . En mode interactif, un nœud de calcul lance une interface en ligne de commande, y connecte le client et exécute la tâche. L'utilisateur peut alors observer et interagir avec la tâche pendant son exécution. Les tâches interactives sont généralement utilisées pour le débogage initial, puis, une fois celui-ci terminé, la même tâche est soumise à nouveau sbatch. Pour une tâche en mode batch, ses stdoutrésultats stderrsont généralement enregistrés dans des fichiers texte pour une analyse ultérieure.