

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 con capacità insufficiente del cluster
<a name="slurm-short-capacity-fail-mode-v3"></a>

A partire dalla AWS ParallelCluster versione 3.2.0, i cluster vengono eseguiti con la modalità di failover rapido 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 si configura la coda con più risorse di elaborazione che utilizzano tipi di istanze diversi.

**Amazon EC2 ha rilevato errori di capacità insufficienti:**
+ `InsufficientInstanceCapacity`
+ `InsufficientHostCapacity`
+ `InsufficientReservedInstanceCapacity`
+ `MaxSpotInstanceCountExceeded`
+ `SpotMaxPriceTooLow`: attivato se il prezzo della richiesta Spot è inferiore al prezzo minimo di gestione delle richieste Spot richiesto.
+ `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`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)/[`compute resource`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-ComputeResources), AWS ParallelCluster effettua le seguenti operazioni:

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

1. 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 (%)`

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

I nodi statici e accesi della risorsa di elaborazione disattivata non sono interessati. 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. [Slurmguida per la modalità a coda multipla](multiple-queue-mode-slurm-user-guide-v3.md)

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
<a name="slurm-short-capacity-fail-mode-parameter-v3"></a>

**`insufficient_capacity_timeout`**

`insufficient_capacity_timeout`specifica 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.

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 relativo nodo guasto 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 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`

## Stato rapido della modalità di failover con capacità insufficiente
<a name="slurm-short-capacity-fail-mode-status-v3"></a>

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

### Stati dei nodi
<a name="slurm-short-capacity-fail-mode-nodes-v3"></a>

Quando un lavoro viene inviato a un nodo dinamico di risorse di calcolo e viene rilevato un errore di capacità insufficiente, il nodo viene posizionato 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 in 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-1`Il nodo viene avviato per eseguire il lavoro. Tuttavia, l'istanza non è stata avviata a causa di un errore di capacità insufficiente. `queue1-dy-c-1-1`Il nodo è impostato su`down`. Il nodo dinamico spento all'interno della risorsa di calcolo (`queue2-dy-c-1`) è impostato `down` su.

Puoi controllare il motivo del nodo con`scontrol 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à.
+ `slurmctld`viene riavviato.
+ La flotta di AWS ParallelCluster elaborazione viene interrotta e avviata a spegnere e accendere tutti i nodi.

### Log correlati
<a name="slurm-protected-mode-logs-v3"></a>

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 viene avviato 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']}
```