|
1 |
자원관리자
자원관리자(Resource Manager)는 보통 HPC 클러스터 환경에서만 접할 수 있는 도구로, 기본적으로 아래 그림과 같이(Backfill) 작업의 크기에 따라 가용한 자원에 작업을 분배하고 자원이 모두 사용중일 때는 대기열(queue) 에 작업을 쌓아 두었다가 사용가능한 자원이 확보되면, 대기하고 있던 작업을 시작시켜주는 역할을 하게 됩니다.
- 1. Resource Manager 대기열(queue) 과 Backfill
-
- 2. SLURM - Priority_and_Fair_Trees
-
- 3. SLURM 구성 파일
-
- SLURM 은 다음과 같은 파일에 의해 구성 됩니다.
| 위치 |
내용 |
| /etc/slurm.conf |
일반 Slurm 구성 정보, 관리 할 노드, 해당 노드가 파티션으로 그룹화되는 방법에 대한 정보 및 해당 파티션과 관련된 다양한 스케줄링 매개 변수를 지정. |
| /etc/gres.conf |
각 계산 노드의 GRES (Generic RESource)의 구성 정보를 지정.
GRES는 그래픽 처리 장치 (GPU), CUDA MPS (다중 프로세스 서비스) 및 인텔 MIC (다중 통합 코어) 를 지원 합니다.
일반적으로 GPU 구성에 대한 내용으로 작성 됩니다. |
- 위 두 설정파일의 NodeName 항목을 통해 클러스터에서 사용되는 노드들의 세부 구성정보를 살펴볼 수 있습니다.
cat /etc/slurm/slurm.conf | grep ^NodeName
cat /etc/slurm/gres.conf
sinfo
sinfolong
- 4. SLURM 명령
-
| 명령어 |
내용 |
| sinfo |
Slurm 노드 및 파티션에 대한 정보를 봅니다. alias (별칭) 를 통해 sinfolong 과 같은 명령을 추가하여 상세한 정보를 표시 합니다. |
| squeue |
Slurm 스케줄링 대기열에 있는 작업에 대한 정보를 봅니다. alias (별칭) 를 통해 squeuelong 과 같은 명령을 추가하여 상세한 정보를 표시 합니다. |
| srun |
실시간으로 실행할 작업을 제출하는 데 사용됩니다.
명령어를 노드에 직접 입력하거나 작업 결과를 즉시 확인할 수 있는 대화형 작업을 시작 합니다.
작업을 시작하기 위해 리소스를 할당 받아 노드에 진입하고 난 후에 작업이 끝나도 자동으로 종료되지 않으므로 클러스터 자원이 낭비되는 요인이 될 수 있습니다.
가급적 디버깅 용도로만 사용는 것을 권장 합니다.
일부 클러스터 시스템 에서는 srun 을 통한 작업의 제한시간이 sbatch 보다 짧게 설정 되는 경우가 있습니다. |
| sbatch |
Slurm에 배치(batch/일괄작업) 스크립트를 제출 합니다. 제출된 작업은 가용한 자원이 있는 경우 즉시 실행되며, 없는 경우 대기열(queue) 에서 보류(pending) 됩니다. |
| scancel |
제출된 작업을 취소 합니다. |
| scontrol |
작업, 작업 단계, 노드, 파티션, 예약 및 전체 시스템 구성을 포함한 Slurm 구성을 보거나 수정하는 데 사용 합니다. 일반 사용자의 경우 자신의 작업만 수정할 수 있습니다. (보는 것은 가능 합니다) |
| 상태 |
내용 |
| idle |
정상, 대기 중 |
| mix |
일부자원 사용중 |
| alloc |
모든자원 사용중 |
| down |
비정상, 연결 되어있지 않음. |
- 5. SLURM 우선순위 정책
-
아래 표시된 정책은 예시이며 클러스터의 구축목적 과 관리정책에 따라 다를 수 있습니다.
1) 기본정책
- 클러스터의 최대 작업시간 3일 (3-00:00:00) / 사용자의 최대 작업시간은 계정(Account) 별로 상이함.
- 실제 사용량(RawUsage)많은 사용자의 작업 우선순위(PRIORITY)가 낮아 집니다. (FairShare)
- 실제 사용량(RawUsage)이 동일하다면 기준 사용량(RawShares)이 많은 계정(그룹) 의 작업 우선순위(PRIORITY)가 높게 책정 됩니다.
- 집계된 사용량은 1주 단위로 절반으로 감소 됩니다. (PriorityDecayHalfLife=7-0)
- 집계된 사용량의 초기화 주기는 설정되지 않음. (PriorityUsageResetPeriod=0)
- 집계된 사용량은 관리자 권한으로 초기화 가능 (sacctmgr modify account $USERNAME set rawusage=0)
- 오랫동안 대기열에 머물러 있는 job은 7일 동안 우선순위 (Priority) 가 점차 상승 합니다. (PriorityMaxAge=7) / 최대 7일
- 적용 우선순위 : 1.QOS > 2.Association > 3. Partition
2) 사용자 개별 적용 정책
| 내용 |
명칭 |
값 |
| 실행 작업 |
MaxJobs= |
10 |
3) 계정(Account) 개별 적용 정책 (사용자 그룹)
| 내용 |
명칭 |
값 |
| 계정 이름 |
Account |
default |
| 기준 사용량 |
fairshare=(RawShares) |
10000 |
| 최대 실행 작업 |
GrpJobs= |
100 |
| 최대 제출 작업 |
GrpSubmit= |
200 |
| 최대 실행 시간 |
MaxWall=(일-시간:분:초) |
3-00:00:00 |
| 최대 GPU 수 |
GrpTRESS= |
gres/gpu=50 |
4) QOS 정책 / 기본 정책을 벗어나는 예외 적용
| 내용 |
명칭 |
값 |
| QOS 이름 |
Name |
small-fast |
| 우선 순위 |
Priority=(high->fast) |
150 |
| user당 최대 실행 작업 |
MaxJobsPU= |
10 |
| user당 최대 제출 작업 |
MaxSubmit= |
20 |
| 최대 실행 기간 |
MaxWall=(일-시간:분:초) |
3:00:00 |
| 최대 GPU 수 |
MaxTRES= |
gres/gpu=30 |
| node당 최대 GPU |
MaxTRESPerNode= |
gres/gpu=1 |
| node당 최소 GPU |
MinTRES= |
gres/gpu=4 |
5) 클러스터에 적용 되어 있는 설정 값 확인
ssh MASTER sacctmgr list Cluster
ssh MASTER sacctmgr list Account
ssh MASTER sacctmgr list User
ssh MASTER sacctmgr list Association
ssh MASTER sacctmgr list QOS
-
6) 작업 우선 순위 산정방식
Job_priority =
site_factor +
(PriorityWeightAge) * (age_factor) +
(PriorityWeightAssoc) * (assoc_factor) +
(PriorityWeightFairshare) * (fair-share_factor) +
(PriorityWeightJobSize) * (job_size_factor) +
(PriorityWeightPartition) * (partition_factor) +
(PriorityWeightQOS) * (QOS_factor +
SUM (TRES_weight_cpu * TRES_factor_cpu,
TRES_weight_ * TRES_factor_,
...)
- nice_factor
-
-
6. 참고자료 - 해외 대학 및 연구소의 HPC 관련 문서 및 자료 사이트
|