Slurm Workload Manager (slurm) - AWS ParallelCluster

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 (MaxCount3).

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

  • 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 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 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

  • SeMinCount == MaxCount, ao aumentar MinCount (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.

  • SeMinCount == MaxCount, ao diminuir MinCount (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 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

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 (MinCountsupondo 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 (MaxCountMinCountsupondo 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. Para downloads, consulte https://github.com/SchedMD/slurm/tags. Para o código-fonte, consulte https://github.com/SchedMD/slurm.

Cluster e SLURM versões compatíveis

A tabela a seguir lista o AWS ParallelCluster e Slurm versões que AWS suportam.

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