Article de reference

Gestionnaire de charge de travail Slurm

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...

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.
le Lawrence Livermore National Laboratory , SchedMD , Linux NetworX, Hewlett-Packard et Groupe Bull , en tant que gestionnaire de ressources logiciel libre. Sa première version a été publiée en 2002. Inspiré du logiciel propriétaire Quadrics RMS , il partage une syntaxe similaire. Son nom est une référence à la boisson gazeuse de Futurama . Plus de 250 personnes à travers le monde ont contribué au projet. Depuis, Slurm est devenu un ordonnanceur de tâches par lots sophistiqué, capable de répondre aux exigences de nombreux grands centres de calcul.

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 :

Usage

Slurm distingue plusieurs étapes pour une tâche.

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.