Slurmfailover rapido di capacità insufficiente del cluster - AWS ParallelCluster

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Slurmfailover rapido di capacità insufficiente del cluster

A partire dallaAWS ParallelCluster versione 3.2.0, i cluster vengono eseguiti con la modalità di failover veloce con capacità insufficiente abilitata per impostazione predefinita. Ciò riduce al minimo il tempo impiegato per riprovare a mettere in coda un lavoro quando vengono rilevati errori di capacità insufficiente di EC2. Ciò è particolarmente efficace quando si configura il cluster con più tipi di istanze.

EC2 ha rilevato problemi di capacità insufficienti:
  • InsufficientInstanceCapacity

  • InsufficientHostCapacity

  • InsufficientReservedInstanceCapacity

  • MaxSpotInstanceCountExceeded

  • SpotMaxPriceTooLow: attivato se il prezzo della richiesta Spot è inferiore al prezzo minimo richiesto di gestione di una Richiesta Spot pari al prezzo minimo richiesto di gestione di una Richiesta Spot.

  • Unsupported: attivato con l'uso di un tipo di istanza che non è supportato in uno specificoRegione AWS.

In modalità di failure-over veloce con capacità insufficiente, se viene rilevato un errore di capacità insufficiente quando un lavoro viene assegnato a SlurmQueues/compute resource,AWS ParallelCluster esegue le seguenti operazioni:

  1. Imposta la risorsa di calcolo su uno stato disabilitato (DOWN) per un periodo di tempo predefinito.

  2. Viene utilizzatoPOWER_DOWN_FORCE per annullare i processi del nodo in errore della risorsa di calcolo e per sospendere il nodo in errore. Imposta il nodo in errorePOWER_DOWN (!) sullo statoIDLE and e quindi suPOWERING_DOWN (%).

  3. Richiede il lavoro a un'altra risorsa di calcolo.

I nodi statici e potenziati della risorsa di elaborazione disabilitata non sono interessati. I lavori possono essere completati su questi nodi.

Questo ciclo si ripete fino a quando il lavoro non viene assegnato correttamente a uno o più nodi di risorse di elaborazione. Per informazioni sugli stati dei nodi, vedere ilSlurmguida per la modalità a coda multipla.

Se non vengono trovate risorse di calcolo per eseguire il processo, il processo viene impostato sulloPENDING stato fino al termine del periodo di tempo predefinito. In questo caso, è possibile modificare il periodo di tempo predefinito come descritto nella sezione seguente.

Parametro di timeout della capacità insufficiente

insufficient_capacity_timeout

insufficient_capacity_timeoutspecifica il periodo di tempo (in secondi) in cui la risorsa di elaborazione viene mantenuta nello stato disabilitato (down) quando viene rilevato un errore di capacità insufficiente.

Per impostazione predefinita,insufficient_capacity_timeout è abilitato.

Il valore predefinitoinsufficient_capacity_timeout è 600 secondi (10 minuti).

Se ilinsufficient_capacity_timeout valore è minore o uguale a zero, la modalità di failure-over veloce con capacità insufficiente è disattivata.

È possibile modificare ilinsufficient_capacity_timeout valore aggiungendo il parametro nel file diclustermgtd configurazione che si trova/etc/parallelcluster/slurm_plugin/parallelcluster_clustermgtd.conf inHeadNode.

Il parametro può essere aggiornato in qualsiasi momento senza interrompere il parco di elaborazione.

Ad esempio:

  • insufficient_capacity_timeout=600:

    Se viene rilevato un errore di capacità insufficiente, la risorsa di elaborazione viene impostata su disabilitata (DOWN). Dopo 10 minuti, il nodo fallito viene impostato sullo statoidle~ (POWER_SAVING).

  • insufficient_capacity_timeout=60:

    Se viene rilevato un errore di capacità insufficiente, la risorsa di elaborazione è disattivata (DOWN). Dopo 1 minuto, il nodo fallito viene impostato sulloidle~ stato.

  • insufficient_capacity_timeout=0:

    La modalità di failure-over veloce con capacità insufficiente è disattivata. La risorsa di elaborazione non è disabilitata.

Nota

Potrebbe esserci un ritardo fino a un minuto tra il momento in cui i nodi si guastano con errori di capacità insufficiente e il momento in cui il demone di gestione del cluster rileva i guasti dei nodi. Questo perché il demone di gestione del cluster verifica la presenza di errori di capacità insufficiente del nodo e imposta le risorse di calcolo allodown stato a intervalli di un minuto.

Stato rapido in modalità failover con capacità insufficiente

Quando un cluster si trova rapidamente in modalità di failover con capacità insufficiente, è possibile verificarne lo stato e lo stato del nodo.

Stati dei nodi

Quando un lavoro viene inviato a un nodo dinamico della risorsa di calcolo e viene rilevato un errore di capacità insufficiente, il nodo viene inserito nellodown# stato con un motivo.

(Code:InsufficientInstanceCapacity)Failure when resuming nodes.

Quindi i nodi spenti (nodi inidle~ stato) vengono impostati sudown~ con motivo.

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

Il lavoro è richiesto ad altre risorse di calcolo in coda.

I nodi statici e i nodi delle risorse di calcolo cheUP non sono influenzati dalla modalità di failover veloce con capacità insufficiente.

Considera gli stati del nodo mostrati nell'esempio seguente.

$ 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]

Inoltriamo un lavoro a queue1 che richiede un nodo.

$ 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-1Il nodo viene avviato per eseguire il job. Tuttavia, l'istanza non è stata avviata a causa di un errore di capacità insufficiente. Il nodoqueue1-dy-c-1-1 è impostato sudown. Il nodo dinamico spento all'interno della risorsa di calcolo (queue2-dy-c-1) è impostato sudown.

Puoi controllare il motivo del nodo conscontrol 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]

Il job viene messo in coda su un altro tipo di istanza all'interno delle risorse di calcolo della coda.

Al termine,insufficient_capacity_timeout i nodi della risorsa di calcolo vengono ripristinati alloidle~ stato.

$ 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]

Dopo che gliinsufficient_capacity_timeout intervalli e i nodi della risorsa di calcolo sono stati ripristinati alloidle~ stato, loSlurm scheduler assegna ai nodi una priorità inferiore. Lo scheduler continua a selezionare nodi da altre risorse di calcolo in coda con pesi più elevati a meno che non si verifichi una delle seguenti situazioni:

  • I requisiti di invio di un lavoro corrispondono alla risorsa di elaborazione recuperata.

  • Non sono disponibili altre risorse di elaborazione perché sono esaurite.

  • slurmctldviene riavviato.

  • Il parco diAWS ParallelCluster elaborazione viene interrotto e avviato a spegnere e riaccendere tutti i nodi.

Registri correlati

I log relativi agli errori di capacità insufficiente e alla modalità di failover veloce con capacità insufficiente sono disponibili nelSlurmresumeclustermgtd registro e nel registro nel nodo principale.

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

Messaggi di errore quando un nodo non si avvia a causa di una capacità insufficiente.

[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 risorsa di calcolo c-1 in queue1 è disabilitata a causa della capacità insufficiente.

[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

Dopo la scadenza del timeout di capacità insufficiente, la risorsa di calcolo viene ripristinata, i nodi all'interno delle risorse di elaborazione sono impostati suidle~.

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