Décrire les concepts du planificateur de clusters

Effectué

Une fois cette unité terminée, vous devez être en mesure de décrire les fonctions de base des planificateurs de travaux, des gestionnaires de ressources, du calcul haute performance et du calcul haut débit.

Planificateurs de travaux

Un planificateur de travaux de calcul de cluster est un composant logiciel qui gère des ressources de calcul (telles que les processeurs, la mémoire et le disque) et les affecte aux travaux soumis au cluster. Les planificateurs de travaux déterminent quels nœuds du cluster sont les plus appropriés pour exécuter un travail particulier en fonction de la disponibilité des ressources, de la priorité du travail et d’autres facteurs. Les planificateurs de travaux garantissent que plusieurs travaux s’exécutant en parallèle n’interfèrent pas les uns avec les autres. Les planificateurs de travaux incluent des files d’attente pour conserver les travaux en attente et une stratégie pour les planifier.

Les principaux objectifs d’un planificateur de travaux sont les suivants :

  • réduire le temps entre la soumission du travail et la fin du travail
  • optimiser l’utilisation du processeur
  • Optimiser le débit des travaux.

Les utilisateurs soumettent des travaux de traitement par lots non interactifs au planificateur. Le planificateur stocke les travaux de traitement par lots, évalue leurs besoins de ressources et leurs priorités, et distribue les travaux aux nœuds de calcul appropriés.

Le script de travail soumis par le biais du planificateur ajoute le travail à une file d’attente de travaux. En fonction des ressources disponibles dont le travail a besoin, le planificateur détermine quand le travail va quitter la file d’attente, et sur quels nœuds back-end le travail va s’exécuter.

Les planificateurs peuvent utiliser plusieurs stratégies de base pour déterminer le prochain travail à exécuter :

  • Premier arrivé, premier servi. Les travaux sont exécutés dans l’ordre exact de leur ordre d’arrivée dans la file d’attente. L’avantage est que cela garantit que chaque travail sera exécuté. Cependant, seul un petit nombre de travaux risque de rester en attente trop longtemps par rapport à leur durée d’exécution réelle.

  • Le travail le plus court en premier. En fonction de la durée d’exécution déclarée dans le script de travail, le planificateur estime la durée d’exécution du travail. Les travaux sont classés dans l’ordre croissant de leur durée d’exécution. Les travaux courts démarrent après un bref délai d’attente, alors que les travaux longs (ou ceux déclarés comme tels) peuvent ne jamais réellement démarrer.

  • Renvoi. Le planificateur applique le concept de « Premier arrivé, premier servi » sans empêcher l’exécution des travaux de longue durée. Le planificateur exécute le travail uniquement quand le premier travail dans la file d’attente peut être exécuté. Sinon, le planificateur parcourt toute la file d’attente pour voir s’il peut exécuter un autre travail sans que cela augmente le temps d’attente du premier travail dans la file d’attente. S’il trouve un travail à exécuter, le planificateur l’exécute immédiatement. Les travaux de petite taille restent généralement peu de temps dans la file d’attente.

Resource manager

Un gestionnaire de ressources de calcul de cluster alloue des ressources au sein d’un cluster de calcul. Les gestionnaires de ressources sont chargés de l’allocation de la mémoire, du processeur, du stockage et de la bande passante réseau aux travaux en cours d’exécution dans le cluster. Ce composant supervise l’utilisation des ressources au sein du cluster, détecte toutes les ressources inactives ou sous-utilisées et les réalloue à d’autres travaux ou tâches qui en ont besoin.

Vue d’ensemble de Slurm

Slurm est un planificateur de travaux open source et un gestionnaire de ressources pour l’exécution de charges de travail sur des clusters Linux. Slurm fournit une infrastructure extensible pour la gestion des ressources et la planification des travaux dans un environnement de cluster Linux. Il prend en charge un large éventail de types de travaux, notamment les travaux parallèles, les travaux par lots et les travaux interactifs. Slurm permet aux utilisateurs d’envoyer des travaux via diverses interfaces, notamment une interface de ligne de commande, une interface web et une API. Slurm est une solution populaire utilisée par un grand nombre des supercalculateurs les plus puissants et des clusters de calcul, et est disponible en tant qu’option lors de l’utilisation du calcul haute performance (HPC) sur Microsoft Azure.

Slurm vous permet de faire correspondre la ressource de calcul appropriée en fonction de critères de ressources, notamment les processeurs, les processeurs graphiques (GPU) et la mémoire.

Le planificateur de travaux Slurm a les fonctions importantes suivantes :

  • Alloue l’accès aux nœuds de calcul dans des clusters HPC de calcul haute performance aux utilisateurs afin que leurs tâches puissent être exécutées.
  • Fournit une infrastructure pour le démarrage, l’exécution et la supervision du travail sur un ensemble de nœuds alloués.
  • Arbitre un conflit concernant des ressources en gérant une file d’attente des travaux en attente.

Travaux Slurm

Lorsque vous utilisez Slurm pour exécuter un travail sur un cluster HPC Linux, les étapes générales suivantes se produisent :

  1. Envoi du travail. La première étape consiste à envoyer un travail au planificateur Slurm par le biais de la création d’un script de travail qui inclut les besoins en ressources et l’ensemble des commandes requises par le travail.
  2. Allocation du travail. L’étape suivante implique que le planificateur Slurm examine les besoins en ressources du travail, comme le nombre de nœuds, les processeurs et la mémoire nécessaires, ainsi que d’autres contraintes telles que la partition et les limites de temps. En fonction de ces exigences, le planificateur détermine les meilleures ressources disponibles à allouer pour le travail, compte tenu de l’utilisation actuelle du cluster et des autres travaux en attente.
  3. Mise en file d’attente des travaux. Le planificateur détermine si les ressources demandées sont disponibles. Si les ressources sont immédiatement disponibles, le travail s’exécute. Si les ressources demandées ne sont pas disponibles immédiatement, le travail est placé dans une file d’attente. Le planificateur évalue en permanence les travaux en file d’attente et leurs priorités pour allouer les ressources à mesure qu’elles deviennent disponibles.
  4. Exécution du travail. Une fois que les ressources nécessaires sont allouées au travail, le travail Slurm commence à s’exécuter sur les nœuds attribués. Les tâches spécifiées dans le script s’exécutent sur les nœuds.
  5. Achèvement du travail. La dernière étape est l’achèvement du travail au cours duquel les ressources de calcul sont remises à la disposition du cluster, et le planificateur met à jour l’état du travail sur « Terminé ». La sortie du travail et tous les messages d’erreur qui ont éventuellement été générés pendant l’exécution du travail sont enregistrés dans les fichiers de sortie désignés.
  6. Comptabilité des travaux et création de rapports. Slurm génère des données comptables relatives aux travaux terminés, notamment l’utilisation des ressources et le temps d’exécution.

Commandes Slurm

Vous utilisez un ensemble d’utilitaires en ligne de commande pour effectuer des actions sur un cluster de calcul géré via Slurm. Certaines commandes utilisateur Slurm courantes sont listées dans le tableau ci-dessous.

Commande Fonction
sacct Indique les informations de comptabilité des travaux et des étapes des travaux concernant les travaux qui sont actifs ou terminés.
salloc Permet d’allouer des ressources pour un travail en temps réel. Vous permet de générer un interpréteur de commandes et d’activer des commandes srun dans le but de lancer des tâches parallèles.
sattach Attachez des fonctionnalités de signal d’entrée, de sortie et d’erreur standard à un travail ou une étape de travail en cours d’exécution.
sbatch Utilisez cette commande pour soumettre un script de travail en vue d’une exécution ultérieure. Ces scripts incluent généralement une ou plusieurs commandes srun pour lancer des tâches parallèles.
scancel Utilisez cette commande pour transférer un fichier sur les nœuds nécessaires.
scontrol Outil d’administration Slurm qui vous permet d’afficher et de modifier l’état Slurm. La plupart des commandes scontrol nécessitent des privilèges racine.
sinfo Affiche des informations sur les partitions et les nœuds gérés par Slurm.
sprio Permet d’afficher des informations sur les composants qui ont un impact sur la priorité d’un travail.
squeue Permet d’afficher l’état des travaux ou des étapes de travail.
srun Utilisez cette commande pour envoyer un travail en vue de son exécution ou pour déclencher des étapes de travail en temps réel. Vous pouvez utiliser srun pour spécifier les besoins en ressources, comme le nombre minimal et maximal de nœuds, le nombre de processeurs et les caractéristiques des nœuds.
sstat Permet d’afficher des informations sur les ressources utilisées par l’exécution des travaux ou des étapes de travail.
strigger Configurez ou affichez des déclencheurs d’événements pour savoir, par exemple, quelles actions effectuer en cas d’échec d’un nœud ou quand un travail se rapproche d’une limite de temps.
sview Permet d’afficher les informations d’état sur les travaux, les partitions et les nœuds gérés par Slurm.

Vous pouvez en apprendre plus sur les commandes Slurm ici : https://slurm.schedmd.com/quickstart.html