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 instâncias do Amazon EC2 definidas nos recursos computacionais AWS ParallelCluster da (Scheduling/SlurmQueues/ComputeResources) configuração e são organizados em (Scheduling/SlurmQueues) filas que mapeiam 1:1 para partições. Slurm
No momento da criação do cluster, ou após uma atualização do cluster, AWS ParallelCluster inicia quantas instâncias do Amazon EC2 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. Esses eventos incluem, por exemplo, a falha das verificações de integridade do Slurm ou do Amazon EC2 e a alteração do status do nó do Slurm para DRAIN ou DOWN.
As instâncias do Amazon EC2, no intervalo de 1 a ‘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, elas são lançadas para atender a trabalhos pendentes e são encerradas quando ficam ociosas por um tempo definido por 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 no 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 o tiverMinCount == MaxCount, todos os nós de computação correspondentes serão estáticos e todas as instâncias serão iniciadas no creation/update momento do cluster e mantidas em funcionamento. 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:
-
Adicionar novas filas ao Agendamento/ SlurmQueues
-
Adicionar novos recursos computacionais
Scheduling/SlurmQueues/ComputeResourcesa uma fila -
Aumentar a
MaxCountde 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 computacionais com nome<Queue/Name>-*, tanto estáticos quanto dinâmicos, serão removidos da configuração do Slurm, e as instâncias correspondentes do Amazon EC2 serão encerradas. -
Ao remover um recurso computacional
Scheduling/SlurmQueues/ComputeResourcesde uma fila, todos os nós de computação com nome<Queue/Name>-*-<ComputeResource/Name>-*, tanto estáticos quanto dinâmicos, serão removidos da configuração do Slurm, e as instâncias correspondentes do Amazon EC2 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 será configurado estendendo o número de nós estáticos até o novo valor deMinCount<Queue/Name>-st-<ComputeResource/Name>-<new_MinCount>e o sistema continuará tentando iniciar instâncias do Amazon EC2 para atender à nova capacidade estática necessária. -
Se
MinCount == MaxCount, ao diminuirMinCount(eMaxCount) em N, o cluster será 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 do 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
-30emMinCounteMaxCount: 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
Se MinCount < MaxCount, ao aumentar MinCount em uma quantidade N (supondo que MaxCount será mantido inalterado), o cluster será 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 instâncias do Amazon EC2 para atender à nova capacidade estática necessária. Além disso, para honrar a capacidade MaxCount 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 do 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]
Se MinCount < MaxCount, ao aumentar MinCount e MaxCount com a mesma quantidade N, o cluster será 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 instâncias do Amazon EC2 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]
Se MinCount < MaxCount, ao diminuir MinCount em N (supondo que MaxCount seja mantido inalterado), o cluster será 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 do Amazon EC2. Além disso, para honrar a capacidade MaxCount 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 instância do Amazon EC2 será inicializada, 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 em N, o cluster será 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 do 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 MaxCount a quantidade N (supondo que MinCount seja mantido inalterado), o cluster será configurado removendo os últimos N nós dinâmicos <Queue/Name>-dy-<ComputeResource/Name>-<old_MaxCount -
N...<oldMaxCount>] e o sistema encerrará as instâncias correspondentes do Amazon EC2 caso elas estejam 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 instâncias do Amazon EC2 são encerradas, um trabalho em lote em execução nos nós removidos será enfileirado novamente, 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_FAIL 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 uma reserva do Slurm 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á uma reserva do Slurm chamada maint_for_update 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 a reserva do Slurm tiver sido definida apenas em nós removidos durante esse processo, a reserva de manutenção será excluída automaticamente. Em vez disso, se você tiver criado uma reserva do Slurm em nós que ainda estão presentes após a atualização do redimensionamento do cluster, poderá ser necessário remover a reserva de manutenção desses nós após a execução da atualização de redimensionamento, usando o seguinte comando:
sudo -i scontrol delete ReservationName=maint_for_update
Para conferir mais detalhes sobre a reserva do Slurm, consulte o documento oficial da 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 configuração de partições do Slurm atualizada com base na configuração do AWS ParallelCluster
-
Reiniciar
slurmctld(feito por meio da fórmula do serviço do Chef) -
Verificar status do
slurmctld(systemctl is-active --quiet slurmctld.service) -
Recarregar configuração do Slurm
(scontrol reconfigure) -
Iniciar
clustermgtd (supervisorctl start clustermgtd)
Para saber mais sobre o Slurm, consulte https://slurm.schedmd.com
Versões de cluster e SLURM suportadas
A tabela a seguir lista as Slurm versões AWS ParallelCluster e AWS compatíveis.
| AWS ParallelCluster versão (ões) | Versão do Slurm compatível |
|---|---|
|
3.13.0 |
24.05.07 |
|
3.12.0 |
23.11.10 |
|
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 |