Décrire les concepts du planificateur de clusters
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 les disques) 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 programmes de traitement par lots, évalue leurs besoins en 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 de leur ordre d’arrivée dans la file d’attente. L’avantage est que cela garantit que chaque travail sera exécuté. Cependant, 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 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é. Autrement, 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.
Gestionnaire des ressources
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 et des clusters de calcul les plus puissants, 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 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 :
- Envoi de travaux : La première étape consiste à envoyer un travail au planificateur Slurm en créant un script de travail qui inclut les besoins en ressources et l’ensemble des commandes requises par le travail.
- 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 les partitions 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.
- 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.
- 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.
- Achèvement du travail : La dernière étape est l’achèvement du travail, au cours de laquelle 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.
- 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. Voici quelques commandes utilisateur Slurm courantes :
Commande | Fonction |
---|---|
sacct |
Cette commande indique les informations de comptabilité des travaux et des étapes des travaux concernant les travaux qui sont actifs ou terminés. |
salloc |
Utilisez cette commande pour 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 |
Cette commande attache 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 |
Il s’agit d’un 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 |
Cette commande affiche des informations sur les partitions et les nœuds gérés par Slurm. |
sprio |
Utilisez cette commande pour afficher des informations sur les composants qui ont un impact sur la priorité d’un travail. |
squeue |
Utilisez cette commande pour 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 |
Utilisez cette commande pour afficher des informations sur les ressources utilisées par les travaux ou les étapes de travail en cours d’exécution. |
strigger |
Utilisez cette commande pour configurer ou afficher des déclencheurs d’événements afin de 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 |
Utilisez cette commande pour afficher les informations d’état sur les travaux, les partitions et les nœuds gérés par Slurm. |
Vous pouvez en apprendre davantage sur les commandes Slurm dans le Guide d’utilisateur de démarrage rapide Slurm.