Slurm Workload Manager (slurm) - AWS ParallelCluster

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Slurm Workload Manager (slurm)

클러스터 용량 크기 및 업데이트

클러스터의 용량은 클러스터가 확장할 수 있는 컴퓨팅 노드의 수로 정의됩니다. 컴퓨팅 노드는 AWS ParallelCluster (Scheduling/SlurmQueues/ComputeResources) 구성의 컴퓨팅 리소스 내에 정의된 Amazon EC2 인스턴스에 의해 지원되며 파티션에 1:1 로 (Scheduling/SlurmQueues) 매핑되는 대기열로 구성됩니다. Slurm

컴퓨팅 리소스 내에서 클러스터에서 항상 실행되어야 하는 최소 컴퓨팅 노드 (인스턴스) 수 () 와 컴퓨팅 리소스가 (3MinCount) 까지 확장할 수 있는 최대 인스턴스 수를 구성할 수 있습니다. MaxCount

클러스터 생성 시 또는 클러스터 업데이트 시 클러스터에 정의된 각 컴퓨팅 리소스 (Scheduling/SlurmQueues/ ComputeResources ) 에 MinCount 대해 구성된 수만큼 Amazon EC2 인스턴스를 AWS ParallelCluster 시작합니다. 클러스터의 컴퓨팅 리소스에 필요한 최소한의 노드를 포함하도록 시작된 인스턴스를 정적 노드라고 합니다. 정적 노드는 일단 시작되면 클러스터에서 영구 유지되며 특정 이벤트나 상황이 발생하지 않는 한 시스템에서 종료되지 않습니다. 이러한 이벤트에는 Amazon EC2 상태 점검 실패, Slurm 노드 상태가 DRAIN Slurm 또는 DOWN으로 변경되는 경우가 포함됩니다.

클러스터의 증가된 부하를 1 처리하기 위해 ‘MaxCount - MinCount’ 온디맨드로 시작되는 MaxCount ~마이너스 MinCount) 범위의 Amazon EC2 인스턴스를 동적 노드라고 합니다. 그 특성은 일시적이며 보류 중인 작업을 처리하기 위해 시작되며 클러스터 Scheduling/SlurmSettings/ScaledownIdletime 구성에서 정의한 기간 (기본값: 10분) 동안 유휴 상태를 유지하면 종료됩니다.

정적 노드와 동적 노드는 다음 이름 지정 스키마를 준수합니다.

  • 정적 노드는 다음과 같습니다<Queue/Name>-st-<ComputeResource/Name>-<num>. <num> = 1..ComputeResource/MinCount

  • 동적 노드, <Queue/Name>-dy-<ComputeResource/Name>-<num> 위치 <num> = 1..(ComputeResource/MaxCount - ComputeResource/MinCount)

예를 들어 다음과 같은 AWS ParallelCluster 구성이 제공됩니다.

Scheduling: Scheduler: Slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: c5xlarge Instances: - InstanceType: c5.xlarge MinCount: 100 MaxCount: 150

에 다음과 같은 노드가 정의됩니다. 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]

컴퓨팅 리소스에 리소스가 MinCount == MaxCount 있는 경우 해당하는 모든 컴퓨팅 노드는 정적이며 클러스터 생성/업데이트 시 모든 인스턴스가 시작되고 계속 실행됩니다. 예:

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]

클러스터 용량 업데이트

클러스터 용량 업데이트에는 대기열 추가 또는 제거, 컴퓨팅 리소스, 컴퓨팅 리소스 변경이 포함됩니다. MinCount/MaxCount AWS ParallelCluster 버전 3.9.0부터 대기열 크기를 줄이려면 클러스터 업데이트를 실행하기 전에 컴퓨팅 플릿을 중지하거나 TERMINATE로 QueueUpdateStrategy설정해야 합니다. 다음과 같은 경우에는 컴퓨팅 플릿을 중지하거나 TERMINATE로 설정할 QueueUpdateStrategy필요가 없습니다.

  • 스케줄링에 새 대기열 추가/ SlurmQueues

  • 대기열에 새 컴퓨팅 리소스 추가 Scheduling/SlurmQueues/ComputeResources

  • 컴퓨팅 리소스 증가 MaxCount

  • 컴퓨팅 리소스 증가 MaxCount 및 동일 컴퓨팅 리소스 최소 양 증가 MinCount

고려 사항 및 제한

이 섹션은 클러스터 용량 크기를 조정할 때 고려해야 하는 중요한 요소, 제약 조건 또는 제한 사항을 간략하게 설명하기 위한 것입니다.

컴퓨팅 리소스의 MinCount 파라미터를 변경할 때 두 가지 시나리오를 구분할 수 있습니다. MaxCount 하나는 같게 유지되고 MinCount (정적 용량만 해당) 이면 MinCount (정적 용량과 동적 용량이 혼합된 경우MaxCount) 보다 크다는 것입니다.

정적 노드에서만 용량이 변경됩니다.

  • 증가 MinCount (및MaxCount) 시 정적 노드의 수를 새로운 값까지 확장하여 클러스터를 구성하고 시스템은 새로운 필수 정적 용량을 충족하기 위해 Amazon EC2 인스턴스를 계속 시작하려고 시도합니다. MinCount == MaxCount MinCount <Queue/Name>-st-<ComputeResource/Name>-<new_MinCount>

  • 양 N을 줄이면 MinCount (및MaxCount) 마지막 N개의 정적 노드를 <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<old_MinCount>] 제거하여 클러스터가 구성되고 시스템은 해당 Amazon EC2 인스턴스를 종료합니다. MinCount == MaxCount

    • 초기 상태 MinCount = MaxCount = 100

    • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
    • MinCount-30 에서 업데이트 MaxCount: MinCount = MaxCount = 70

    • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]

혼합 노드의 용량 변경

N만큼 MinCount 증가하면 MinCount < MaxCount (변경되지 않은 상태로 유지된다고 가정MaxCount) 정적 노드 수가 새 값인 MinCount (old_MinCount + N) :까지 확장되어 클러스터가 <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount + N> 구성되고 시스템은 새로운 필수 정적 용량을 충족하기 위해 Amazon EC2 인스턴스를 계속 시작하려고 시도합니다. 또한 컴퓨팅 리소스의 MaxCount 용량을 유지하기 위해 마지막 N개의 동적 노드를 제거하여 클러스터 구성을 업데이트합니다<Queue/Name>-dy-<ComputeResource/Name>-[<MaxCount - old_MinCount - N>...<MaxCount - old_MinCount>]. 그러면 시스템이 해당 Amazon EC2 인스턴스를 종료합니다.

  • 초기 상태: 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]
  • +30으로 업데이트 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]

같은 양 N을 MinCount 늘리면 정적 노드 수를 새 값인 MinCount (old_MinCount + N) <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount + N> :까지 확장하여 클러스터를 구성하고 시스템은 새로운 필수 정적 용량을 충족하기 위해 Amazon EC2 인스턴스를 계속 시작하려고 시도합니다. MinCount < MaxCount MaxCount 또한 새 노드를 적용하기 위해 동적 노드 수는 변경되지 않습니다.

MaxCount USD 상당.

  • 초기 상태: 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]
  • +30으로 업데이트 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]

N개의 양을 MinCount 줄이면 (변경되지 않은 상태로 유지된다고 가정MaxCount) 마지막 N개의 정적 노드 정적 노드를 <Queue/Name>-st-<ComputeResource/Name>-[<old_MinCount - N>...<old_MinCount> 제거하여 클러스터를 구성하고 시스템은 해당 Amazon EC2 인스턴스를 종료합니다. MinCount < MaxCount 또한 컴퓨팅 리소스의 MaxCount 용량을 늘리기 위해 동적 노드 수를 늘려 격차를 메우는 MaxCount - new_MinCount: <Queue/Name>-dy-<ComputeResource/Name>-[1..<MazCount - new_MinCount>] 방식으로 클러스터 구성을 업데이트합니다. 이 경우 동적 노드는 동적 노드이므로 스케줄러가 새 노드에 보류 중인 작업이 없는 한 새 Amazon EC2 인스턴스가 시작되지 않습니다.

  • 초기 상태: 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]
  • 업데이트 -30 켜기 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]

N개를 MinCount 줄이면 마지막 N개의 정적 노드를 <Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<oldMinCount>] 제거하여 클러스터를 구성하고 시스템은 해당 Amazon EC2 인스턴스를 종료합니다. MinCount < MaxCount MaxCount

또한 새 MaxCount 값을 반영하기 위해 동적 노드의 수를 변경하지 않을 예정입니다.

  • 초기 상태: 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]
  • 업데이트 -30 켜기 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]

N개의 양을 줄이면 MaxCount (변경되지 않은 상태로 유지된다고 가정MinCount) 마지막 N개의 동적 노드를 <Queue/Name>-dy-<ComputeResource/Name>-<old_MaxCount - N...<oldMaxCount>] 제거하여 클러스터를 구성하고 시스템은 해당 Amazon EC2 인스턴스가 실행 중일 때 해당 Amazon EC2 인스턴스를 종료합니다. 정적 노드에는 영향이 없을 것으로 예상됩니다. MinCount < MaxCount

  • 초기 상태: 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]
  • 업데이트 -30 켜기 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]

작업에 미치는 영향

노드가 제거되고 Amazon EC2 인스턴스가 종료되는 모든 경우, 작업 요구 사항을 충족하는 다른 노드가 없는 한 제거된 노드에서 실행 중인 sbatch 작업은 대기열에 다시 추가됩니다. 마지막 경우에는 작업이 NODE_FAIL 상태로 실패하고 대기열에서 사라집니다. 이 경우 수동으로 다시 제출해야 합니다.

클러스터 크기 조정 업데이트를 수행하려는 경우 계획된 업데이트 중에 제거될 노드에서 작업이 실행되지 않도록 할 수 있습니다. 이는 유지 관리 시 제거될 노드를 설정하여 가능합니다. 유지 관리 중인 노드를 설정해도 결국 해당 노드에서 이미 실행 중인 작업에는 영향을 미치지 않는다는 점에 유의하십시오.

계획된 클러스터 크기 조정 업데이트를 통해 해당 노드를 qeueu-st-computeresource-[9-10 제거한다고 가정해 보겠습니다.] 다음 명령으로 Slurm 예약을 생성할 수 있습니다.

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]

그러면 maint_for_update 노드에 이름이 지정된 Slurm 예약이 생성됩니다qeueu-st-computeresource-[9-10]. 예약이 생성된 시점부터 더 이상 노드에 작업이 실행될 수 없습니다qeueu-st-computeresource-[9-10]. 예약을 한다고 해서 결국 노드에 작업이 할당되는 것을 막지는 못한다는 점에 qeueu-st-computeresource-[9-10] 유의하십시오.

클러스터 크기 조정 업데이트 후 크기 조정 업데이트 중에 제거된 노드에만 Slurm 예약이 설정된 경우 유지 관리 예약은 자동으로 삭제됩니다. 대신 클러스터 크기 조정 업데이트 후에도 여전히 존재하는 노드에 대한 Slurm 예약을 생성한 경우, 크기 조정 업데이트를 수행한 후 다음 명령을 사용하여 노드의 유지 관리 예약을 제거할 수 있습니다.

sudo -i scontrol delete ReservationName=maint_for_update

Slurm예약에 대한 자세한 내용은 여기에서 공식 SchedMD 문서를 참조하십시오.

용량 변경에 대한 클러스터 업데이트 프로세스

스케줄러 구성이 변경되면 클러스터 업데이트 프로세스 중에 다음 단계가 실행됩니다.

  • 중지 AWS ParallelCluster clustermgtd (supervisorctl stop clustermgtd)

  • 구성에서 업데이트된 Slurm 파티션 AWS ParallelCluster 구성 생성

  • 재시작 slurmctld (Chef 서비스 레시피를 통해 완료)

  • slurmctld상태 확인 (systemctl is-active --quiet slurmctld.service)

  • 구성 다시 불러오기 Slurm (scontrol reconfigure)

  • clustermgtd (supervisorctl start clustermgtd) 시작

Slurm에 대한 자세한 내용은 https://slurm.schedmd.com을 참조하세요. 다운로드에 대해서는 https://github.com/SchedMD/slurm/tags를 참조하세요. 소스 코드는 https://github.com/SchedMD/slurm을 참조하세요.

AWS ParallelCluster 버전 (들) 지원되는 Slurm 버전

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