Slurmbasculement rapide d'une capacité insuffisante du cluster - AWS ParallelCluster

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.

Slurmbasculement rapide d'une capacité insuffisante du cluster

À partir de AWS ParallelCluster la version 3.2.0, les clusters s'exécutent avec le mode de basculement rapide en cas de capacité insuffisante activé par défaut. Cela permet de réduire le temps passé à essayer à nouveau de mettre une tâche en file d'attente lorsque des erreurs liées à une capacité insuffisante d'Amazon EC2 sont détectées. Cela est particulièrement efficace lorsque vous configurez votre cluster avec plusieurs types d'instances.

Amazon EC2 a détecté des défaillances de capacité insuffisantes :
  • InsufficientInstanceCapacity

  • InsufficientHostCapacity

  • InsufficientReservedInstanceCapacity

  • MaxSpotInstanceCountExceeded

  • SpotMaxPriceTooLow: Activé si le prix de la demande Spot est inférieur au prix minimum requis pour le traitement des demandes Spot.

  • Unsupported: Activé avec l'utilisation d'un type d'instance qui n'est pas pris en charge dans un environnement spécifique Région AWS.

En mode de défaillance rapide en cas d'insuffisance de capacité, si une erreur de capacité insuffisante est détectée lorsqu'une tâche est affectée à un SlurmQueues/compute resource, procédez comme suit AWS ParallelCluster  :

  1. Il met la ressource de calcul à l'état désactivé (DOWN) pendant une période prédéfinie.

  2. Il est utilisé POWER_DOWN_FORCE pour annuler les tâches du nœud défaillant sur les ressources de calcul et pour suspendre le nœud défaillant. Il place le nœud défaillant à l'POWER_DOWN (!)état IDLE et, ensuite, àPOWERING_DOWN (%).

  3. Il confie la tâche à une autre ressource de calcul.

Les nœuds statiques et sous tension de la ressource de calcul désactivée ne sont pas affectés. Les tâches peuvent être effectuées sur ces nœuds.

Ce cycle se répète jusqu'à ce que la tâche soit correctement assignée à un ou plusieurs nœuds de ressources informatiques. Pour plus d'informations sur les états des nœuds, consultez leSlurmguide pour le mode de file d'attente multiple.

Si aucune ressource de calcul n'est trouvée pour exécuter la tâche, la tâche est réglée sur l'PENDINGétat jusqu'à ce que la période prédéfinie soit écoulée. Dans ce cas, vous pouvez modifier la période prédéfinie comme décrit dans la section suivante.

Paramètre de temporisation de capacité insuffisant

insufficient_capacity_timeout

insufficient_capacity_timeoutindique la durée (en secondes) pendant laquelle la ressource de calcul est maintenue dans l'état désactivé (down) lorsqu'une erreur de capacité insuffisante est détectée.

Par défaut, insufficient_capacity_timeout est activé.

La valeur par défaut insufficient_capacity_timeout est de 600 secondes (10 minutes).

Si la insufficient_capacity_timeout valeur est inférieure ou égale à zéro, le mode de défaillance rapide en cas d'insuffisance de capacité est désactivé.

Vous pouvez modifier la insufficient_capacity_timeout valeur en ajoutant le paramètre dans le fichier de clustermgtd configuration situé /etc/parallelcluster/slurm_plugin/parallelcluster_clustermgtd.conf dans leHeadNode.

Le paramètre peut être mis à jour à tout moment sans arrêter le parc informatique.

Par exemple :

  • insufficient_capacity_timeout=600:

    Si une erreur de capacité insuffisante est détectée, la ressource de calcul est définie sur Disabled (DOWN). Au bout de 10 minutes, son nœud défaillant passe à l'état idle~ (POWER_SAVING).

  • insufficient_capacity_timeout=60:

    Si une erreur de capacité insuffisante est détectée, la ressource de calcul est désactivée (DOWN). Au bout d'une minute, son nœud défaillant est réglé sur idle~ cet état.

  • insufficient_capacity_timeout=0:

    Le mode de défaillance rapide en cas d'insuffisance de capacité est désactivé. La ressource de calcul n'est pas désactivée.

Note

Il peut s'écouler jusqu'à une minute entre le moment où les nœuds tombent en panne en raison d'erreurs de capacité insuffisante et le moment où le démon de gestion du cluster détecte les défaillances des nœuds. Cela est dû au fait que le démon de gestion du cluster vérifie les défaillances de capacité insuffisante des nœuds et définit les ressources de calcul à down intervalles d'une minute.

État du mode de basculement rapide en cas de capacité insuffisante

Lorsqu'un cluster est en mode de basculement rapide en capacité insuffisante, vous pouvez vérifier son état et l'état de ses nœuds.

États des nœuds

Lorsqu'une tâche est soumise à un nœud dynamique de ressources informatiques et qu'une erreur de capacité insuffisante est détectée, le nœud est placé dans down# cet état avec raison.

(Code:InsufficientInstanceCapacity)Failure when resuming nodes.

Ensuite, les nœuds éteints (nœuds en idle~ état) sont définis down~ avec raison.

(Code:InsufficientInstanceCapacity)Temporarily disabling node due to insufficient capacity.

La tâche est mise en file d'attente vers les autres ressources de calcul de la file d'attente.

Les nœuds statiques des ressources de calcul et les nœuds qui UP ne sont pas affectés par le mode de basculement rapide en capacité insuffisante.

Examinez les états des nœuds illustrés dans l'exemple suivant.

$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 30 idle~ queue1-dy-c-1-[1-15],queue1-dy-c-2-[1-15] queue2 up infinite 30 idle~ queue2-dy-c-1-[1-15],queue2-dy-c-2-[1-15]

Nous soumettons à queue1 une tâche qui nécessite un nœud.

$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 1 down# queue1-dy-c-1-1 queue1* up infinite 15 idle~ queue1-dy-c-2-[1-15] queue1* up infinite 14 down~ queue1-dy-c-1-[2-15] queue2 up infinite 30 idle~ queue2-dy-c-1-[1-15],queue2-dy-c-2-[1-15]

queue1-dy-c-1-1Le nœud est lancé pour exécuter la tâche. Cependant, l'instance n'a pas pu être lancée en raison d'une erreur de capacité insuffisante. queue1-dy-c-1-1Le nœud est défini surdown. Le nœud dynamique hors tension au sein de la ressource de calcul (queue2-dy-c-1) est défini surdown.

Vous pouvez vérifier la raison du nœud avecscontrol show nodes.

$ scontrol show nodes queue1-dy-c-1-1 NodeName=broken-dy-c-2-1 Arch=x86_64 CoresPerSocket=1 CPUAlloc=0 CPUTot=96 CPULoad=0.00 ... ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s Reason=(Code:InsufficientInstanceCapacity)Failure when resuming nodes [root@2022-03-10T22:17:50] $ scontrol show nodes queue1-dy-c-1-2 NodeName=broken-dy-c-2-1 Arch=x86_64 CoresPerSocket=1 CPUAlloc=0 CPUTot=96 CPULoad=0.00 ... ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s Reason=(Code:InsufficientInstanceCapacity)Temporarily disabling node due to insufficient capacity [root@2022-03-10T22:17:50]

La tâche est mise en file d'attente vers un autre type d'instance dans les ressources de calcul de la file d'attente.

Une fois ce insufficient_capacity_timeout délai écoulé, les nœuds de la ressource de calcul sont remis à l'idle~état.

$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 30 idle~ queue1-dy-c-1-[1-15],queue1-dy-c-2-[1-15] queue2 up infinite 30 idle~ queue2-dy-c-1-[1-15],queue2-dy-c-2-[1-15]

Une fois que les nœuds de la ressource de calcul se sont insufficient_capacity_timeout écoulés et que leur idle~ état est rétabli, le Slurm planificateur leur attribue une priorité inférieure. Le planificateur continue de sélectionner des nœuds parmi d'autres ressources de calcul de file d'attente avec des pondérations plus élevées, sauf si l'une des situations suivantes se produit :

  • Les exigences de soumission d'une tâche correspondent à la ressource de calcul récupérée.

  • Aucune autre ressource de calcul n'est disponible car elle est à pleine capacité.

  • slurmctldest redémarré.

  • Le parc AWS ParallelCluster informatique est arrêté et démarre pour mettre hors tension et alimenter tous les nœuds.

Journaux connexes

Les journaux relatifs aux erreurs de capacité insuffisante et au mode de basculement rapide en cas d'insuffisance de capacité se trouvent dans Slurm le resume journal et dans le clustermgtd journal du nœud principal.

Slurm resume (/var/log/parallelcluster/slurm_resume.log)

Messages d'erreur lorsqu'un nœud ne parvient pas à démarrer en raison d'une capacité insuffisante.

[slurm_plugin.instance_manager:_launch_ec2_instances] - ERROR - Failed RunInstances request: dcd0c252-90d4-44a7-9c79-ef740f7ecd87 [slurm_plugin.instance_manager:add_instances_for_nodes] - ERROR - Encountered exception when launching instances for nodes (x1) ['queue1-dy-c-1-1']: An error occurred (InsufficientInstanceCapacity) when calling the RunInstances operation (reached max retries: 1): We currently do not have sufficient p4d.24xlarge capacity in the Availability Zone you requested (us-west-2b). Our system will be working on provisioning additional capacity. You can currently get p4d.24xlarge capacity by not specifying an Availability Zone in your request or choosing us-west-2a, us-west-2c.
Slurm clustermgtd (/var/log/parallelcluster/clustermgtd)

La ressource de calcul c-1 de la file d'attente 1 est désactivée en raison d'une capacité insuffisante.

[slurm_plugin.clustermgtd:_reset_timeout_expired_compute_resources] - INFO - The following compute resources are in down state due to insufficient capacity: {'queue1': {'c-1': ComputeResourceFailureEvent(timestamp=datetime.datetime(2022, 4, 14, 23, 0, 4, 769380, tzinfo=datetime.timezone.utc), error_code='InsufficientInstanceCapacity')}}, compute resources are reset after insufficient capacity timeout (600 seconds) expired

Une fois le délai d'expiration de la capacité insuffisante expiré, la ressource de calcul est réinitialisée et les nœuds des ressources de calcul sont définis sur. idle~

[root:_reset_insufficient_capacity_timeout_expired_nodes] - INFO - Reset the following compute resources because insufficient capacity timeout expired: {'queue1': ['c-1']}