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á.
Slurm Workload Manager (slurm
)
Tamanho e atualização da capacidade do cluster
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.
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 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 QueueUpdateStrategyconfigurada como TERMINATE antes que uma atualização do cluster ocorra. Não é necessário interromper a frota de computação ou configurar QueueUpdateStrategypara TERMINATE quando:
-
Adicionando novas filas ao Scheduling/ 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
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
-
Se
MinCount == MaxCount
, ao aumentarMinCount
(eMaxCount
), 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 diminuirMinCount
(eMaxCount
) 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
emMinCount
eMaxCount: 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
SeMinCount < 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 +30 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]
SeMinCount < 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 +30 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]
SeMinCount < 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]
SeMinCount < 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]
SeMinCount < 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
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. Neste último caso, o trabalho falhará com o status NODE_FAIL e desaparecerá da fila; se for o caso, será necessário reenviá-lo 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ósqeueu-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.
Processo de atualização do cluster em alterações de capacidade
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)
Para obter mais informações sobre Slurm, consulte https://slurm.schedmd.com
Versões de cluster e SLURM suportadas
A tabela a seguir lista o AWS ParallelCluster e Slurm versões que AWS suportam.
AWS ParallelCluster versão (ões) | Compatível Slurm version |
---|---|
3.11.0 |
23.11.10 |
3.9.2, 3.9.3, 3.10.0 |
23.11.7 |
3.9.0, 3.9.1 |
23.11.4 |
3.8.0 |
23.02.7 |
3.7.2 |
23.02.6 |
3.7.1 |
23.02.5 |
3.7.0 |
23.02.4 |
3.6.0, 3.6.1 |
23.02.2 |
3.5.0, 3.5.1 |
22.05.8 |
3.4.0, 3.4.1 |
22.05.7 |
3.3.0, 3.3.1 |
22.05.5 |
3.1.4, 3.1.5, 3.2.0, 3.2.1 |
21.08.8-2 |
3.1.2, 3.1.3 |
21.08.6 |
3.1.1 |
21.08.5 |
3.0.0 |
20.11.8 |