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 EC2 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 partições. Slurm
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).
No momento da criação do cluster, ou após uma atualização do cluster AWS ParallelCluster , executa quantas instâncias do EC2 forem 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. Depois de 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 EC2 e a alteração do status do nó Slurm para DRAIN Slurm ou DOWN.
As instâncias do EC2, 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 em conformidade com o seguinte esquema de nomenclatura:
-
Nódulos estáticos
<Queue/Name>-st-<ComputeResource/Name>-<num>
onde<num> = 1..ComputeResource/MinCount
-
Nódulos dinâmicos
<Queue/Name>-dy-<ComputeResource/Name>-<num>
onde<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 o tiverMinCount == 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 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 a adição ou remoção de filas, recursos computacionais ou a alteraçã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 -
Aumentando a
MaxCount
quantidade 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 quaisquer 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/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueuesSlurmQueues
todos os nós de computação com nome<Queue/Name>-*
, tanto estático quanto dinâmico, ela será removida da Slurm configuração e as instâncias EC2 correspondentes serão encerradas. -
Ao remover um recurso computacional
Scheduling/SlurmQueues/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueues-ComputeResourcesComputeResources
de uma fila, todos os nós de computação com nome<Queue/Name>-*-<ComputeResource/Name>-*
, estático e dinâmico, serão removidos da Slurm configuração e as instâncias EC2 correspondentes serão encerradas.
Ao alterar o MinCount
parâmetro de um recurso computacional, podemos distinguir dois cenários diferentes: se MaxCount
é mantido igual a MinCount
(somente capacidade estática) e se MaxCount
é 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 instâncias do EC2 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 EC2 correspondentes.-
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 instâncias do EC2 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 EC2 correspondentes.
-
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]
-
Atualize +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 instâncias do 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]
-
Atualize +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 dos nós estáticos <Queue/Name>-st-<ComputeResource/Name>-[<old_MinCount -
N>...<old_MinCount>
e o sistema encerrará as instâncias EC2 correspondentes. 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 instância do EC2 será iniciada, 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 ativada
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 EC2 correspondentes.
Além disso, nenhuma alteração será feita no número de nós dinâmicos para honrar o novo MaxCount
valor.
-
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 ativada
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
supondo que MinCount
será 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 instâncias EC2 correspondentes 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 ativada
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 EC2 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 falhará com o status NODE_FAIL e desaparecerá da fila; nesse caso, será necessário reenviá-lo manualmente.
Se você planeja realizar uma atualização de redimensionamento do cluster, pode 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 a serem removidos na manutenção. Esteja ciente de que a configuração de um nó em manutenção não afetaria as tarefas que eventualmente já estão sendo executadas no nó.
Suponha que, com a atualização planejada de redimensionamento do cluster, você remova o nóqeueu-st-computeresource-[9-10
]. Você pode criar uma 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á uma Slurm reserva nomeada maint_for_update
nos nósqeueu-st-computeresource-[9-10]
. A partir do momento em que a reserva é criada, nenhuma outra tarefa pode ser executada nos nósqeueu-st-computeresource-[9-10]
. Esteja ciente de que a reserva não impedirá que os trabalhos sejam eventualmente alocados nos nósqeueu-st-computeresource-[9-10]
.
Após a atualização do redimensionamento do cluster, se a Slurm reserva tiver sido definida somente nos nós que foram removidos durante a atualização do redimensionamento, a reserva de manutenção será excluída automaticamente. Se, em vez disso, você tiver criado uma Slurm reserva nos nós que ainda estão presentes após a atualização do redimensionamento do cluster, talvez queiramos remover a reserva de manutenção nos 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 obter detalhes adicionais sobre a Slurm reserva, consulte o documento oficial do SchedMD aqui
Processo de atualização do cluster sobre mudanças 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)
-
Gere a configuração de Slurm partições atualizada a partir da AWS ParallelCluster configuração
-
Reiniciar
slurmctld
(feito por meio da receita do serviço Chef) -
Verifique o
slurmctld
status(systemctl is-active --quiet slurmctld.service)
-
Recarregar configuração Slurm
(scontrol reconfigure)
-
Iniciar
clustermgtd (supervisorctl start clustermgtd)
Para obter informações sobre Slurm, consulte https://slurm.schedmd.com
AWS ParallelCluster versão (ões) | Versão do Slurm compatível |
---|---|
3.9.0 |
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 |
Tópicos
- Configuração de várias filas
- Guia do Slurm para o modo de várias filas
- Modo protegido por cluster do Slurm
- Failover rápido de capacidade insuficiente do cluster Slurm
- Programação baseada em memória do Slurm
- Alocação a vários tipos de instância com o Slurm
- Dimensionamento de clusters para nós dinâmicos
- Slurmcontabilidade com AWS ParallelCluster
- Personalização de configuração do Slurm
- Slurm prolog e epilog
- Tamanho e atualização da capacidade do cluster