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

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 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 instâncias do EC2 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 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 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 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 (MinCountsupondo 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 (MaxCountsupondo 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. Para downloads, consulte https://github.com/SchedMD/slurm/tags. Para obter o código-fonte, consulte https://github.com/SchedMD/slurm.

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