

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tamanho e atualização da capacidade do cluster
<a name="slurm-cluster-capacity-size-and-update"></a>

A capacidade do cluster é definida pelo número de nós de computação que o cluster pode escalar. Os nós de computação são apoiados por EC2 instâncias da Amazon definidas nos recursos computacionais da AWS ParallelCluster configuração `(Scheduling/SlurmQueues/ ComputeResources)` e são organizados em filas `(Scheduling/SlurmQueues)` que mapeiam 1:1 para Slurm partições. 

Em um recurso de computação, é possível configurar o número mínimo de nós de computação (instâncias) que sempre devem ser mantidos em execução no cluster (`MinCount`) e o número máximo de instâncias para as quais o recurso computacional pode ser escalado ([`MaxCount` 3](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-ComputeResources-MaxCount)).

No momento da criação do cluster, ou após uma atualização do cluster, AWS ParallelCluster inicia quantas EC2 instâncias da Amazon estiverem configuradas `MinCount` para cada recurso computacional (`Scheduling/SlurmQueues/ ComputeResources`) definido no cluster. As instâncias lançadas para cobrir a quantidade mínima de nós para os recursos computacionais no cluster são chamadas de ***nós estáticos***. Uma vez iniciados, os nós estáticos devem ser persistentes no cluster e não são encerrados pelo sistema, a menos que ocorra um evento ou condição específica. Tais eventos incluem, por exemplo, o fracasso do Slurm ou exames EC2 de saúde da Amazon e a mudança do Slurm status do nó para DRAIN ou DOWN. 

As EC2 instâncias da Amazon, na faixa de `1` até `‘MaxCount - MinCount’` (`MaxCount `*menos*)` MinCount)`, lançadas sob demanda para lidar com o aumento da carga do cluster, são chamadas de nós ***dinâmicos***. Sua natureza é efêmera, eles são iniciados para atender a trabalhos pendentes e são encerrados quando permanecem ociosos por um período de tempo definido `Scheduling/SlurmSettings/ScaledownIdletime` na configuração do cluster (padrão: 10 minutos).

Os nós estáticos e os nós dinâmicos estão obedecem ao seguinte padrão de nomenclatura:
+ Os nós estáticos são `<Queue/Name>-st-<ComputeResource/Name>-<num>`, em que `<num> = 1..ComputeResource/MinCount`
+ Os nós dinâmicos são `<Queue/Name>-dy-<ComputeResource/Name>-<num>`, em que `<num> = 1..(ComputeResource/MaxCount - ComputeResource/MinCount)`

Por exemplo, dada a seguinte AWS ParallelCluster configuração: 

```
Scheduling:  
    Scheduler: Slurm  
    SlurmQueues:    
        - Name: queue1      
            ComputeResources:        
                - Name: c5xlarge          
                    Instances:            
                        - InstanceType: c5.xlarge          
                        MinCount: 100          
                        MaxCount: 150
```

Os seguintes nós serão definidos em 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]
```

Quando um recurso computacional tiver `MinCount == MaxCount`, todos os nós de computação correspondentes serão estáticos e todas as instâncias serão iniciadas no momento da criação/atualização do cluster e mantidas ativas e em execução. Por exemplo: 

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

## Atualização da capacidade do cluster
<a name="cluster-capacity-update-c2"></a>

A atualização da capacidade do cluster inclui adicionar ou remover filas, recursos computacionais ou alterar o `MinCount/MaxCount` de um recurso computacional. A partir da AWS ParallelCluster versão 3.9.0, reduzir o tamanho de uma fila exige que a frota de computação seja interrompida ou [QueueUpdateStrategy](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-QueueUpdateStrategy)configurada como TERMINATE antes que uma atualização do cluster ocorra. Não é necessário interromper a frota de computação ou configurar [QueueUpdateStrategy](Scheduling-v3.md#yaml-Scheduling-SlurmSettings-QueueUpdateStrategy)para TERMINATE quando: 
+ Adicionar novas filas ao Agendamento/ [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)

   
+ Adicionar novos recursos computacionais `Scheduling/SlurmQueues/ComputeResources` a uma fila
+ Aumentar a `MaxCount` de um recurso computacional
+ Aumento MinCount de um recurso computacional e aumento MaxCount do mesmo recurso computacional em pelo menos a mesma quantidade

## Considerações e limitações
<a name="cluster-considerations-limitations"></a>

Esta seção tem como objetivo descrever fatores, restrições ou limitações importantes que devem ser levados em consideração ao redimensionar a capacidade do cluster.
+ Ao remover uma fila de `Scheduling/SlurmQueues` todos os nós de computação com nome`<Queue/Name>-*`, tanto estático quanto dinâmico, será removida do Slurm a configuração e as EC2 instâncias correspondentes da Amazon serão encerradas.
+ Ao remover um recurso `Scheduling/SlurmQueues/ComputeResources` de computação de uma fila, todos os nós de computação com nome`<Queue/Name>-*-<ComputeResource/Name>-*`, estático e dinâmico, serão removidos do Slurm a configuração e as EC2 instâncias correspondentes da Amazon serão encerradas.

Ao alterar o parâmetro `MinCount` de um recurso computacional, podemos distinguir dois cenários diferentes: se `MaxCount` for mantido igual a `MinCount` (somente capacidade estática) e se `MaxCount` for maior que `MinCount` (capacidade estática e dinâmica mista).

### Alterações de capacidade somente com nós estáticos
<a name="capacity-changes-static-nodes"></a>
+ Se`MinCount == MaxCount`, ao aumentar `MinCount` (e`MaxCount`), o cluster for configurado estendendo o número de nós estáticos até o novo valor de, `MinCount` `<Queue/Name>-st-<ComputeResource/Name>-<new_MinCount>` e o sistema continuar tentando iniciar EC2 instâncias da Amazon para atender à nova capacidade estática necessária.
+ Se`MinCount == MaxCount`, ao diminuir `MinCount` (e`MaxCount`) da quantidade N, o cluster for configurado removendo os últimos N nós estáticos `<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<old_MinCount>]` e o sistema encerrará as instâncias correspondentes da Amazon EC2 .
  + Estado inicial `MinCount = MaxCount = 100`
  + 

    ```
    $ sinfo
    PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
    queue1*      up   infinite    100   idle queue1-st-c5xlarge-[1-100]
    ```
  + Atualizar `-30` em `MinCount` e `MaxCount: MinCount = MaxCount = 70`
  + 

    ```
    $ sinfo
    PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
    queue1*      up   infinite     70   idle queue1-st-c5xlarge-[1-70]
    ```

### Alterações de capacidade com nós mistos
<a name="mixed-node-capacity-changes"></a>

Se`MinCount < MaxCount`, `MinCount` ao aumentar em uma quantidade N (supondo que `MaxCount` será mantido inalterado), o cluster for configurado estendendo o número de nós estáticos até o novo valor de `MinCount` (`old_MinCount + N`): `<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount + N>` e o sistema continuará tentando iniciar EC2 instâncias da Amazon para atender à nova capacidade estática necessária. Além disso, para honrar a `MaxCount` capacidade do recurso computacional, a configuração do cluster é atualizada *removendo os últimos N nós dinâmicos*: `<Queue/Name>-dy-<ComputeResource/Name>-[<MaxCount - old_MinCount - N>...<MaxCount - old_MinCount>]` e o sistema encerrará as instâncias correspondentes da Amazon EC2 .
+ Estado inicial: `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]
  ```
+ Atualização \$130 para `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]
  ```

Se`MinCount < MaxCount`, ao aumentar `MinCount` e `MaxCount` com a mesma quantidade N, o cluster for configurado estendendo o número de nós estáticos para o novo valor de `MinCount` (`old_MinCount + N`): `<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount + N>` e o sistema continuará tentando iniciar EC2 instâncias da Amazon para atender à nova capacidade estática necessária. Além disso, nenhuma alteração será feita no número de nós dinâmicos para honrar o novo

 `MaxCount` value.
+ Estado inicial: `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]
  ```
+ Atualização \$130 para `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]
  ```

Se`MinCount < MaxCount`, ao diminuir a quantidade N (`MinCount`supondo que `MaxCount` será mantida inalterada), o cluster será configurado removendo os últimos N nós estáticos de nós estáticos `<Queue/Name>-st-<ComputeResource/Name>-[<old_MinCount - N>...<old_MinCount>` e o sistema encerrará as instâncias correspondentes da Amazon. EC2 Além disso, para honrar a `MaxCount` capacidade do recurso computacional, a configuração do cluster é atualizada ampliando o número de nós dinâmicos para preencher a lacuna. `MaxCount - new_MinCount: <Queue/Name>-dy-<ComputeResource/Name>-[1..<MazCount - new_MinCount>]` Nesse caso, como esses são nós dinâmicos, nenhuma nova EC2 instância da Amazon será lançada, a menos que o agendador tenha trabalhos pendentes nos novos nós.
+ Estado inicial: `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]
  ```
+ Atualização -30 no `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]
  ```

Se`MinCount < MaxCount`, ao diminuir `MinCount` e `MaxCount` com a mesma quantidade N, o cluster for configurado removendo os últimos N nós estáticos `<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<oldMinCount>]` e o sistema encerrará as instâncias correspondentes da Amazon EC2 .

 Além disso, nenhuma alteração será feita no número de nós dinâmicos para honrar o novo valor `MaxCount`.
+ Estado inicial: `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]
  ```
+ Atualização -30 no `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]
  ```

Se`MinCount < MaxCount`, ao diminuir a quantidade N (`MaxCount``MinCount`supondo que seja mantida inalterada), o cluster for configurado removendo os últimos N nós dinâmicos `<Queue/Name>-dy-<ComputeResource/Name>-<old_MaxCount - N...<oldMaxCount>]` e o sistema encerrará as EC2 instâncias correspondentes da Amazon no caso de elas estarem em execução. Nenhum impacto é esperado nos nós estáticos.
+ Estado inicial: `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]
  ```
+ Atualização -30 no `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]
  ```

## Impactos nos empregos
<a name="job-impacts"></a>

Em todos os casos em que os nós são removidos e as EC2 instâncias da Amazon encerradas, um trabalho em lote executado nos nós removidos será colocado novamente na fila, a menos que não haja outros nós que satisfaçam os requisitos do trabalho. Nesse último caso, o trabalho falha com o status NODE\$1FAIL e desaparece da fila e deve ser reenviado manualmente.

Se você estiver planejando executar uma atualização de redimensionamento de cluster, poderá impedir que os trabalhos sejam executados nos nós que serão removidos durante a atualização planejada. Isso é possível configurando os nós para serem removidos na manutenção. Esteja ciente de que a configuração de um nó em manutenção não afetará os trabalhos que já estiverem em execução no nó.

Suponha que, com a atualização de redimensionamento do cluster planejada, você vai remover o nó `qeueu-st-computeresource-[9-10`]. Você pode criar um Slurm reserva com o seguinte comando

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

Isso criará um Slurm reserva `maint_for_update` nomeada nos nós`qeueu-st-computeresource-[9-10]`. Quando a reserva é criada, nenhum outro trabalho pode ser executado nos nós `qeueu-st-computeresource-[9-10]`. Esteja ciente de que a reserva não impedirá que os trabalhos sejam alocados nos nós `qeueu-st-computeresource-[9-10]`.

Após a atualização do redimensionamento do cluster, se o Slurm A reserva foi definida somente nos nós que foram removidos durante a atualização de redimensionamento. A reserva de manutenção será excluída automaticamente. Se, em vez disso, você tivesse criado um Slurm reserva em nós que ainda estão presentes após a atualização de redimensionamento do cluster. Talvez desejemos remover a reserva de manutenção nos nós após a atualização de redimensionamento ser executada, usando o seguinte comando 

```
sudo -i scontrol delete ReservationName=maint_for_update
```

Para obter detalhes adicionais sobre Slurm reserva, veja o documento oficial do SchedMD [aqui.](https://slurm.schedmd.com/reservations.html)

## Processo de atualização do cluster em alterações de capacidade
<a name="changes-per-process"></a>

Após uma alteração na configuração do agendador, as seguintes etapas são executadas durante o processo de atualização do cluster:
+ Pare AWS ParallelCluster `clustermgtd (supervisorctl stop clustermgtd)`
+ Gerar atualização Slurm configuração de partições a partir da AWS ParallelCluster configuração
+ Reiniciar `slurmctld` (feito por meio da fórmula do serviço do Chef)
+ Verificar status do `slurmctld` `(systemctl is-active --quiet slurmctld.service)`
+ Reload (Recarregar) Slurm configuração `(scontrol reconfigure)`
+ Iniciar `clustermgtd (supervisorctl start clustermgtd)`