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.
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 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. 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. 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 ouDOWN.
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 em conformidade com o seguinte esquema de nomenclatura:
-
Nodos estáticos
<Queue/Name>-st-<ComputeResource/Name>-<num>
onde<num> = 1..ComputeResource/MinCount
-
Nodos 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 TERMINATE para funcionar antes que uma atualização do cluster ocorra. Não é necessário interromper a frota de computação nem QueueUpdateStrategydefinir 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, será removida do Slurm a configuração e as EC2 instâncias correspondentes da Amazon 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>-*
, tanto estático quanto dinâmico, serão removidos do Slurm a configuração e as EC2 instâncias correspondentes da Amazon 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 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 AmazonEC2.-
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 AmazonEC2.
-
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 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]
-
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 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 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 correspondentes da AmazonEC2.
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
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 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 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 falhará com o status NODE _ FAIL e desaparecerá da fila; se for o caso, ele precisará ser reenviado 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 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]
. 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 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 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)
-
Gerar atualização Slurm configuração de partições 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)
-
Reload (Recarregar) Slurm configuração
(scontrol reconfigure)
-
Iniciar
clustermgtd (supervisorctl start clustermgtd)
Para obter mais informações sobre Slurm, veja https://slurm.schedmd.com
AWS ParallelCluster versão (ões) | Compatível Slurm versão |
---|---|
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 |
Tópicos
- Configuração de várias filas
- Slurm guia para o modo de fila múltipla
- 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
- Slurm contabilidade com AWS ParallelCluster
- Personalização de configuração do Slurm
- Slurmprolog e epilog
- Tamanho e atualização da capacidade do cluster