Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Slurm Workload Manager (slurm
)
Taille et mise à jour de la capacité du cluster
La capacité du cluster est définie par le nombre de nœuds de calcul que le cluster peut dimensionner. Les nœuds de calcul sont soutenus par EC2 des instances Amazon définies dans les ressources de calcul de la AWS ParallelCluster configuration (Scheduling/SlurmQueues/ComputeResources)
et sont organisés en files d'attente (Scheduling/SlurmQueues)
mappées 1:1 à Slurm cloisons.
Au sein d'une ressource de calcul, il est possible de configurer le nombre minimum de nœuds de calcul (instances) qui doivent toujours continuer à fonctionner dans le cluster (MinCount
), ainsi que le nombre maximum d'instances que la ressource de calcul peut atteindre (MaxCount
3).
Au moment de la création du cluster, ou lors d'une mise à jour du cluster, AWS ParallelCluster lance autant d'EC2instances Amazon que cela est configuré MinCount
pour chaque ressource de calcul (Scheduling/SlurmQueues/ ComputeResources
) définie dans le cluster. Les instances lancées pour couvrir le nombre minimal de nœuds pour une ressource de calcul dans le cluster sont appelées nœuds statiques. Une fois démarrés, les nœuds statiques sont censés être persistants dans le cluster et le système ne les arrête pas, sauf si un événement ou une condition spécifique se produit. Ces événements incluent, par exemple, l'échec de Slurm ou les EC2 bilans de santé d'Amazon et la modification du Slurm statut du nœud vers DRAIN ouDOWN.
Les EC2 instances Amazon, de l'ordre de deux 1
à ‘MaxCount -
MinCount’
(MaxCount
moins) MinCount)
, lancées à la demande pour faire face à l'augmentation de la charge du cluster, sont appelées nœuds dynamiques. Leur nature est éphémère, ils sont lancés pour exécuter des tâches en attente et sont interrompus une fois qu'ils restent inactifs pendant une période définie Scheduling/SlurmSettings/ScaledownIdletime
dans la configuration du cluster (par défaut : 10 minutes).
Les nœuds statiques et les nœuds dynamiques sont conformes au schéma de dénomination suivant :
-
Nœuds statiques
<Queue/Name>-st-<ComputeResource/Name>-<num>
où<num> = 1..ComputeResource/MinCount
-
Nœuds dynamiques
<Queue/Name>-dy-<ComputeResource/Name>-<num>
où<num> = 1..(ComputeResource/MaxCount - ComputeResource/MinCount)
Par exemple, étant donné la AWS ParallelCluster configuration suivante :
Scheduling: Scheduler: Slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: c5xlarge Instances: - InstanceType: c5.xlarge MinCount: 100 MaxCount: 150
Les nœuds suivants seront définis dans Slurm
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
Lorsqu'une ressource de calcul l'estMinCount == MaxCount
, tous les nœuds de calcul correspondants seront statiques et toutes les instances seront lancées au moment de la création/de la mise à jour du cluster et maintenues opérationnelles. Par exemple :
Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: c5xlarge Instances: - InstanceType: c5.xlarge MinCount: 100 MaxCount: 100
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
Mise à jour des capacités du cluster
La mise à jour de la capacité du cluster inclut l'ajout ou la suppression de files d'attente, de ressources de calcul ou la modification MinCount/MaxCount
d'une ressource de calcul. À partir de AWS ParallelCluster la version 3.9.0, la réduction de la taille d'une file d'attente nécessite l'arrêt ou la QueueUpdateStrategyconfiguration du parc informatique avant qu'une TERMINATE mise à jour du cluster n'ait lieu. Il n'est pas nécessaire d'arrêter le parc informatique ou de QueueUpdateStrategydéfinir le TERMINATE moment où :
-
Ajouter de nouvelles files d'attente à la planification/
SlurmQueues
-
Ajouter de nouvelles ressources de calcul
Scheduling/SlurmQueues/ComputeResources
à une file d'attente -
Augmenter la valeur
MaxCount
d'une ressource de calcul -
Augmentation MinCount d'une ressource de calcul et augmentation MaxCount de la même ressource de calcul d'au moins la même quantité
Considérations et restrictions
Cette section vise à décrire tous les facteurs, contraintes ou limitations importants à prendre en compte lors du redimensionnement de la capacité du cluster.
-
Lorsque vous supprimez une file d'attente de
Scheduling/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueuesSlurmQueues
tous les nœuds de calcul<Queue/Name>-*
dont le nom est statique ou dynamique, elle sera supprimée du Slurm configuration et les EC2 instances Amazon correspondantes seront résiliées. -
Lorsque vous supprimez une ressource
Scheduling/SlurmQueues/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueues-ComputeResourcesComputeResources
de calcul d'une file d'attente, tous les nœuds de calcul portant un nom<Queue/Name>-*-<ComputeResource/Name>-*
, qu'ils soient statiques ou dynamiques, seront supprimés du Slurm configuration et les EC2 instances Amazon correspondantes seront résiliées.
Lorsque vous modifiez le MinCount
paramètre d'une ressource de calcul, nous pouvons distinguer deux scénarios différents, s'il MaxCount
est maintenu égal à MinCount
(capacité statique uniquement) et s'il MaxCount
est supérieur à MinCount
(capacité statique et dynamique mixte).
Changements de capacité avec des nœuds statiques uniquement
-
Si
MinCount == MaxCount
, lors de l'augmentationMinCount
(etMaxCount
), le cluster est configuré en étendant le nombre de nœuds statiques à la nouvelle valeur deMinCount
<Queue/Name>-st-<ComputeResource/Name>-<new_MinCount>
et que le système continue d'essayer de lancer des EC2 instances Amazon pour atteindre la nouvelle capacité statique requise. -
Si
MinCount == MaxCount
, lors de la diminutionMinCount
(etMaxCount
) du montant N, le cluster est configuré en supprimant les N derniers nœuds statiques<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<old_MinCount>]
et le système met fin aux EC2 instances Amazon correspondantes.-
État initial
MinCount = MaxCount = 100
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Mise à jour
-30
surMinCount
etMaxCount: MinCount = MaxCount = 70
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]
-
Changements de capacité avec des nœuds mixtes
SiMinCount < MaxCount
, lors d'une augmentation MinCount
d'un montant N (en supposant que MaxCount
cela restera inchangé), le cluster sera configuré en étendant le nombre de nœuds statiques à la nouvelle valeur de MinCount
(old_MinCount + N
) : <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount +
N>
et le système continuera à essayer de lancer des EC2 instances Amazon pour atteindre la nouvelle capacité statique requise. De plus, pour respecter la MaxCount
capacité de la ressource de calcul, la configuration du cluster est mise à jour en supprimant les N derniers nœuds dynamiques : <Queue/Name>-dy-<ComputeResource/Name>-[<MaxCount -
old_MinCount - N>...<MaxCount - old_MinCount>]
et le système mettra fin aux EC2 instances Amazon correspondantes.
-
État initial :
MinCount = 100; MaxCount = 150
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Mettre à jour +30 vers
MinCount : MinCount = 130 (MaxCount = 150)
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-20] queue1* up infinite 130 idle queue1-st-c5xlarge-[1-130]
SiMinCount < MaxCount
, lors de l'augmentation MinCount
et MaxCount
de la même quantité N, le cluster sera configuré en étendant le nombre de nœuds statiques à la nouvelle valeur de MinCount
(old_MinCount + N
) : <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount +
N>
et le système continuera à essayer de lancer des EC2 instances Amazon pour atteindre la nouvelle capacité statique requise. De plus, aucune modification ne sera apportée au nombre de nœuds dynamiques pour honorer le nouveau
Valeur MaxCount
.
-
État initial :
MinCount = 100; MaxCount = 150
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Mettre à jour +30 vers
MinCount : MinCount = 130 (MaxCount = 180)
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 130 idle queue1-st-c5xlarge-[1-130]
SiMinCount < MaxCount
, lors MinCount
de la diminution du montant N (en supposant qu'il MaxCount
restera inchangé), le cluster sera configuré en supprimant les N derniers nœuds statiques (nœuds statiques) <Queue/Name>-st-<ComputeResource/Name>-[<old_MinCount -
N>...<old_MinCount>
et le système mettra fin aux EC2 instances Amazon correspondantes. De plus, pour respecter la MaxCount
capacité de la ressource de calcul, la configuration du cluster est mise à jour en augmentant le nombre de nœuds dynamiques afin de combler le vide. MaxCount - new_MinCount:
<Queue/Name>-dy-<ComputeResource/Name>-[1..<MazCount -
new_MinCount>]
Dans ce cas, comme il s'agit de nœuds dynamiques, aucune nouvelle EC2 instance Amazon ne sera lancée à moins que le planificateur n'ait des tâches en attente sur les nouveaux nœuds.
-
État initial :
MinCount = 100; MaxCount = 150
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Mise à jour -30 le
MinCount : MinCount = 70 (MaxCount = 120)
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 80 idle~ queue1-dy-c5xlarge-[1-80] queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]
SiMinCount < MaxCount
, lors de la diminution MinCount
et MaxCount
de la même quantité N, le cluster sera configuré en supprimant les N derniers nœuds statiques <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount -
N>...<oldMinCount>]
et le système mettra fin aux EC2 instances Amazon correspondantes.
De plus, aucune modification ne sera apportée au nombre de nœuds dynamiques pour respecter la nouvelle MaxCount
valeur.
-
État initial :
MinCount = 100; MaxCount = 150
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Mise à jour -30 le
MinCount : MinCount = 70 (MaxCount = 120)
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 80 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]
SiMinCount < MaxCount
, lors de la diminution MaxCount
du montant N (en supposant MinCount
qu'il reste inchangé), le cluster est configuré en supprimant les N derniers nœuds dynamiques <Queue/Name>-dy-<ComputeResource/Name>-<old_MaxCount -
N...<oldMaxCount>]
et le système arrête les EC2 instances Amazon correspondantes dans le cas où elles étaient en cours d'exécution. Aucun impact n'est attendu sur les nœuds statiques.
-
État initial :
MinCount = 100; MaxCount = 150
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
-
Mise à jour -30 le
MaxCount : MinCount = 100 (MaxCount = 120)
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-20] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
Impacts sur les emplois
Dans tous les cas où des nœuds sont supprimés et des EC2 instances Amazon résiliées, une tâche sbatch exécutée sur les nœuds supprimés sera remise en file d'attente, sauf si aucun autre nœud ne répond aux exigences de la tâche. Dans ce dernier cas, la tâche échouera avec le statut NODE _ FAIL et disparaîtra de la file d'attente ; dans ce cas, elle devra être soumise à nouveau manuellement.
Si vous prévoyez d'effectuer une mise à jour de redimensionnement du cluster, vous pouvez empêcher les tâches de s'exécuter sur les nœuds qui seront supprimés lors de la mise à jour planifiée. Cela est possible en configurant les nœuds à supprimer lors de la maintenance. Sachez que le fait de configurer un nœud en maintenance n'aura aucune incidence sur les tâches qui sont déjà en cours d'exécution sur le nœud.
Supposons qu'avec la mise à jour prévue pour le redimensionnement du cluster, vous allez supprimer le qeueu-st-computeresource-[9-10
[nœud]. Vous pouvez créer un Slurm réservation avec la commande suivante
sudo -i scontrol create reservation ReservationName=maint_for_update user=root starttime=now duration=infinite flags=maint,ignore_jobs nodes=qeueu-st-computeresource-[9-10]
Cela créera un Slurm réservation nommée maint_for_update
sur les nœudsqeueu-st-computeresource-[9-10]
. À partir du moment où la réservation est créée, aucune autre tâche ne peut être exécutée sur les nœudsqeueu-st-computeresource-[9-10]
. Sachez que la réservation n'empêchera pas l'attribution éventuelle de tâches sur les nœudsqeueu-st-computeresource-[9-10]
.
Après la mise à jour du redimensionnement du cluster, si Slurm la réservation a été définie uniquement sur les nœuds supprimés lors de la mise à jour du redimensionnement, la réservation de maintenance sera automatiquement supprimée. Si au contraire vous aviez créé un Slurm réservation sur les nœuds toujours présents après la mise à jour du redimensionnement du cluster, nous souhaiterons peut-être supprimer la réservation de maintenance sur les nœuds une fois la mise à jour du redimensionnement effectuée, à l'aide de la commande suivante
sudo -i scontrol delete ReservationName=maint_for_update
Pour plus de détails sur Slurm réservation, voir le document officiel de SchedMD ici.
Processus de mise à jour du cluster en cas de modification de capacité
Lors d'un changement de configuration du planificateur, les étapes suivantes sont exécutées pendant le processus de mise à jour du cluster :
-
Arrêtez AWS ParallelCluster
clustermgtd (supervisorctl stop clustermgtd)
-
Générer des mises à Slurm configuration des partitions à partir de AWS ParallelCluster la configuration
-
Redémarrage
slurmctld
(effectué via la recette du service Chef) -
Vérifier le
slurmctld
statut(systemctl is-active --quiet slurmctld.service)
-
Reload (Recharger) Slurm configuration
(scontrol reconfigure)
-
Démarrage de
clustermgtd (supervisorctl start clustermgtd)
Pour plus d'informations sur Slurm, voir https://slurm.schedmd.com
AWS ParallelCluster version (s) | Pris en charge Slurm version |
---|---|
3.11.0 |
23,1,110 |
3,9.2, 3,9.3, 3.10.0 |
23,11.7 |
3.9.0, 3.9.1 |
23,11.4 |
3.8.0 |
23,02,7 |
3.7.2 |
23,02,6 |
3.7.1 |
23,02,5 |
3.7.0 |
23,02,4 |
3.6.0, 3.6.1 |
23,02,2 |
3.5.0, 3.5.1 |
22,05,8 |
3.4.0, 3.4.1 |
22,05,7 |
3.3.0, 3.3.1 |
22,05,5 |
3.1.4, 3.1.5, 3.2.0, 3.2.1 |
21.08.8-2 |
3.1.2, 3.1.3 |
21,08,6 |
3.1.1 |
21,08,5 |
3.0.0 |
20,11,8 |
Rubriques
- Configuration de plusieurs files d'attente
- Slurm guide pour le mode de file d'attente multiple
- Slurmmode protégé par cluster
- Slurmbasculement rapide d'une capacité insuffisante du cluster
- Slurmplanification basée sur la mémoire
- Allocation de plusieurs types d'instances avec Slurm
- Mise à l'échelle du cluster pour les nœuds dynamiques
- Slurm comptabilité avec AWS ParallelCluster
- Slurmpersonnalisation de la configuration
- Slurmprolog et epilog
- Taille et mise à jour de la capacité du cluster