Slurmfailover rapido e insufficiente della capacità 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 e insufficiente della capacità del cluster

A partire dalla AWS 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 Amazon EC2. Ciò è particolarmente efficace quando configuri il cluster con più tipi di istanze.

Amazon EC2 ha rilevato errori di capacità insufficienti:
  • InsufficientInstanceCapacity

  • InsufficientHostCapacity

  • InsufficientReservedInstanceCapacity

  • MaxSpotInstanceCountExceeded

  • SpotMaxPriceTooLow: attivato se il prezzo della richiesta Spot è inferiore al prezzo minimo richiesto per l'evasione delle richieste Spot.

  • Unsupported: Attivato con l'uso di un tipo di istanza che non è supportato in uno specifico. Regione AWS

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

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

  2. Viene utilizzato POWER_DOWN_FORCE per annullare i job del nodo in errore della risorsa di calcolo e per sospendere il nodo in errore. Imposta il nodo in errore POWER_DOWN (!) sullo stato IDLE and e quindi su. POWERING_DOWN (%)

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

I nodi statici e accesi della risorsa di elaborazione disattivata non vengono influenzati. I lavori possono essere completati su questi nodi.

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

Se non viene trovata alcuna risorsa di elaborazione per eseguire il processo, il processo viene impostato PENDING sullo stato fino allo scadere 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 disabled (down) quando viene rilevato un errore di capacità insufficiente.

Per impostazione predefinita, insufficient_capacity_timeout è abilitato.

L'impostazione predefinita insufficient_capacity_timeout è 600 secondi (10 minuti).

Se il insufficient_capacity_timeout valore è inferiore o uguale a zero, la modalità di failure-over rapido della capacità insufficiente viene disattivata.

È possibile modificare il insufficient_capacity_timeout valore aggiungendo il parametro nel file di clustermgtd configurazione che si trova in. /etc/parallelcluster/slurm_plugin/parallelcluster_clustermgtd.conf HeadNode

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

Per esempio:

  • insufficient_capacity_timeout=600:

    Se viene rilevato un errore di capacità insufficiente, la risorsa di calcolo viene impostata su disabled (). DOWN Dopo 10 minuti, il nodo in cui si è verificato l'errore viene impostato sullo stato idle~ (POWER_SAVING).

  • insufficient_capacity_timeout=60:

    Se viene rilevato un errore di capacità insufficiente, la risorsa di calcolo è disattivata (DOWN). Dopo 1 minuto, il relativo nodo guasto viene impostato sullo idle~ stato.

  • insufficient_capacity_timeout=0:

    La modalità di failure-over rapido della capacità insufficiente è disattivata. La risorsa di calcolo non è disabilitata.

Nota

Potrebbe verificarsi un ritardo fino a un minuto tra il momento in cui i nodi si guastano a causa di errori di capacità insufficiente e il momento in cui il daemon di gestione del cluster rileva i guasti dei nodi. Questo perché il daemon di gestione del cluster verifica la presenza di errori di capacità insufficiente dei nodi e imposta lo stato delle risorse di calcolo a intervalli di un minuto. down

Rapido stato della modalità di failover con capacità insufficiente

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

Stati del nodo

Quando un lavoro viene inviato a un nodo dinamico di risorse di calcolo e viene rilevato un errore di capacità insufficiente, il nodo viene collocato nello down# stato corrispondente.

(Code:InsufficientInstanceCapacity)Failure when resuming nodes.

Quindi i nodi spenti (nodi in idle~ stato) vengono impostati down~ con motivo.

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

Il lavoro viene richiesto ad altre risorse di elaborazione presenti nella coda.

I nodi statici delle risorse di elaborazione e i nodi che UP non sono interessati dalla modalità di failover rapida con capacità insufficiente.

Considerate gli stati dei nodi 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 lavoro. Tuttavia, l'istanza non è riuscita ad avviarsi a causa di un errore di capacità insufficiente. queue1-dy-c-1-1Il nodo è impostato sudown. Il nodo dinamico spento all'interno della risorsa di calcolo (queue2-dy-c-1) è impostato down su.

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 lavoro 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 allo stato. idle~

$ 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 gli insufficient_capacity_timeout intervalli e i nodi della risorsa di calcolo sono stati ripristinati idle~ allo stato, lo Slurm 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 condizioni:

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

  • Non sono disponibili altre risorse di elaborazione perché sono al massimo della loro capacità.

  • slurmctldviene riavviato.

  • La flotta di AWS ParallelCluster elaborazione viene interrotta e avviata a spegnere e accendere tutti i nodi.

Log correlati

I log relativi agli errori di capacità insufficiente e alla modalità di failover rapido e insufficiente sono disponibili nel Slurm resume clustermgtd registro e nel nodo principale.

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

Messaggi di errore quando un nodo non riesce ad avviarsi 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 nella coda 1 è 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 elaborazione viene reimpostata e i nodi all'interno delle risorse di calcolo vengono impostati su. idle~

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