기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Slurm Workload Manager (slurm
)
클러스터 용량 크기 및 업데이트
클러스터의 용량은 클러스터가 확장할 수 있는 컴퓨팅 노드 수에 따라 정의됩니다. 컴퓨팅 노드는 AWS ParallelCluster 구성 의 컴퓨팅 리소스 내에 정의된 Amazon EC2 인스턴스에 의해 지원되며 (Scheduling/SlurmQueues/ComputeResources)
1:1을 에 매핑(Scheduling/SlurmQueues)
하는 대기열로 구성됩니다.Slurm 파티션.
컴퓨팅 리소스 내에서 클러스터()에서 항상 실행되어야 하는 최소 컴퓨팅 노드(인스턴스) 수와 컴퓨팅 리소스가 (MaxCount
3MinCount
)로 확장할 수 있는 최대 인스턴스 수를 구성할 수 있습니다.
클러스터 생성 시간 또는 클러스터 업데이트 시 는 클러스터에 정의된 각 컴퓨팅 리소스(Scheduling/SlurmQueues/ ComputeResources
)에 MinCount
대해 에 구성된 수만큼 Amazon EC2 인스턴스를 AWS ParallelCluster 시작합니다. 클러스터의 컴퓨팅 리소스에 대한 최소 노드 수를 포함하도록 시작된 인스턴스를 정적 노드 라고 합니다. 일단 시작되면 정적 노드는 클러스터에서 영구적이어야 하며 특정 이벤트 또는 조건이 발생하지 않는 한 시스템에 의해 종료되지 않습니다. 이러한 이벤트에는 예를 들어 Slurm 또는 Amazon EC2 상태 확인 및 변경 Slurm 노드 상태는 DRAIN 또는 입니다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
의 증가 -
컴퓨팅 리소스 MinCount 증가 및 적어도 MaxCount 동일한 양의 동일한 컴퓨팅 리소스 증가
고려 사항 및 제한
이 섹션에서는 클러스터 용량 크기를 조정할 때 고려해야 하는 중요한 요인, 제약 또는 제한 사항을 간략하게 설명합니다.
-
이름이
<Queue/Name>-*
인Scheduling/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueuesSlurmQueues
모든 컴퓨팅 노드에서 대기열을 제거하면 정적 및 동적 모두 에서 제거됩니다.Slurm 구성 및 해당 Amazon EC2 인스턴스가 종료됩니다. -
대기열
Scheduling/SlurmQueues/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueues-ComputeResourcesComputeResources
에서 컴퓨팅 리소스를 제거하면 정적 및 동적 모두 이름이<Queue/Name>-*-<ComputeResource/Name>-*
인 모든 컴퓨팅 노드가 에서 제거됩니다.Slurm 구성 및 해당 Amazon EC2 인스턴스가 종료됩니다.
컴퓨팅 리소스의 MinCount
파라미터를 변경할 때 MaxCount
가 MinCount
(정적 용량만 해당)과 같고 MaxCount
가 MinCount
(정적 및 동적 용량 혼합)보다 큰 경우 두 가지 시나리오를 구분할 수 있습니다.
정적 노드만 있는 용량 변경
-
MinCount == MaxCount
인 경우MinCount
(및MaxCount
)를 늘릴 때 정적 노드 수를 의 새 값으로 확장하여 클러스터를 구성MinCount
<Queue/Name>-st-<ComputeResource/Name>-<new_MinCount>
하고 시스템은 필요한 새 정적 용량을 충족하기 위해 Amazon EC2 인스턴스를 계속 시작하려고 시도합니다. -
MinCount == MaxCount
인 경우 N의 양MinCount
(및MaxCount
)을 줄일 때 마지막 N 정적 노드를 제거하여 클러스터가 구성<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<old_MinCount>]
되고 시스템은 해당 Amazon EC2 인스턴스를 종료합니다.-
초기 상태
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]
-
혼합 노드의 용량 변경
MinCount < MaxCount
가 N(변경되지 않은 상태로 유지MaxCount
된다고 가정)MinCount
만큼 증가할 경우 클러스터는 정적 노드 수를 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]
MinCount < MaxCount
, MinCount
및 가 동일한 양 NMaxCount
인 경우, 정적 노드 수를 ( MinCount
old_MinCount + N
)의 새 값으로 확장하여 클러스터를 구성<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount + N>
하고 시스템은 필요한 새 정적 용량을 충족하기 위해 Amazon EC2 인스턴스를 계속 시작하려고 시도합니다. 또한 새 노드를 적용하기 위해 동적 노드 수를 변경하지 않습니다.
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]
MinCount < MaxCount
인 경우 N(변경되지 않은 상태로 유지MaxCount
된다고 가정) MinCount
양을 줄이면 마지막 N 정적 노드 정적 노드를 제거하여 클러스터가 구성<Queue/Name>-st-<ComputeResource/Name>-[<old_MinCount - N>...<old_MinCount>
되고 시스템이 해당 Amazon EC2 인스턴스를 종료합니다. 또한 컴퓨팅 리소스의 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]
MinCount < MaxCount
, MinCount
및 MaxCount
가 동일한 양 N인 경우 클러스터는 마지막 N 정적 노드를 제거하여 구성<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<oldMinCount>]
되고 시스템은 해당 Amazon EC2 인스턴스를 종료합니다.
또한 새 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]
MinCount < MaxCount
인 경우 N(변경되지 않은 상태로 유지MinCount
된다고 가정) MaxCount
양을 줄이면 마지막 N 동적 노드를 제거하여 클러스터가 구성<Queue/Name>-dy-<ComputeResource/Name>-<old_MaxCount - N...<oldMaxCount>]
되고 시스템이 정적 노드에 running.No 영향을 미칠 것으로 예상되는 경우 해당 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 업데이트
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 인스턴스가 종료되는 모든 경우, 작업 요구 사항을 충족하는 다른 노드가 없는 경우를 제외하고 제거된 노드에서 실행되는 스배치 작업이 다시 대기열에 추가됩니다. 이 마지막 경우 상태가 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]
이렇게 하면 가 생성됩니다.Slurm 노드 maint_for_update
에 이름이 지정된 예약입니다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
(쉐프 서비스 레시피를 통해 수행) -
slurmctld
상태 확인(systemctl is-active --quiet slurmctld.service)
-
다시 로드 Slurm 구성
(scontrol reconfigure)
-
clustermgtd (supervisorctl start clustermgtd)
시작
자세한 내용은 Slurm를 참조하세요https://slurm.schedmd.com
AWS ParallelCluster 버전(들) | 지원 Slurm version |
---|---|
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 |