728x90
HPC에서 스케줄링이 중요한 이유
HPC 클러스터는 수십, 수백 명의 사용자가 동시에 Job을 제출합니다.
GPU와 CPU는 한정된 자원이고, 연구자는 누구나 가능한 한 빨리 결과를 얻고 싶어 합니다.
이 상황에서 운영자가 자원을 수동으로 분배할 수는 없습니다. 따라서 Slurm과 같은 스케줄러가 자동으로 자원 분배와 Job 실행 순서를 관리해야 합니다.
스케줄링 정책은 단순히 “누가 먼저 제출했는가”의 문제가 아니라,
- GPU와 CPU 자원의 효율적 활용
- 여러 사용자 간 공정성 유지
- 클러스터 전체 생산성 극대화
- 를 목표로 합니다.
Slurm 스케줄링 정책의 주요 개념
Slurm은 다양한 정책을 조합해 사용자가 원하는 자원 분배 전략을 만들 수 있습니다.
1. FIFO (First In, First Out)
- 기본 정책. 먼저 제출된 Job이 먼저 실행됩니다.
- 단순하지만, 대규모 Job이 먼저 들어오면 뒤에 작은 Job이 오래 대기할 수 있습니다.
2. Backfilling
- 대규모 Job이 대기 중일 때, 그 사이 자원을 활용해 작은 Job을 끼워 넣는 방식입니다.
- GPU/CPU 자원을 놀리지 않고 활용할 수 있다는 장점이 있습니다.
3. Fairshare
- 사용자별, 그룹별로 가중치를 부여해 자원 점유 비율을 관리합니다.
- 예: 어떤 사용자가 최근 클러스터 자원을 많이 사용했다면, 새로운 Job은 낮은 우선순위를 받습니다.
4. Priority 기반
- Job 우선순위를 점수로 환산하여 실행 순서를 정합니다.
- 점수 요소: 제출 시간, 사용자 Fairshare, QoS, Partition, Age factor
Slurm 스케줄링 정책 비교
| 정책 유형 | 특징 | 장점 | 단점 |
| FIFO | 먼저 제출한 Job 먼저 실행 | 단순, 이해하기 쉬움 | 큰 Job이 큐를 독점할 수 있음 |
| Backfilling | 자원 공백에 작은 Job을 끼워 넣음 | 자원 활용률 극대화 | 예측이 어려워 사용자 혼란 가능 |
| Fairshare | 사용자별 자원 사용량을 가중치로 반영 | 공정성 확보, 특정 사용자 독점 방지 | 설정이 복잡함 |
| Priority Score | 다양한 요소로 점수화 후 우선순위 결정 | 유연한 자원 관리 가능 | 운영자가 점수 요소를 잘 설계해야 함 |
자원 관리 전략
스케줄링 정책만큼 중요한 것이 **자원 관리(Resource Management)**입니다.
Slurm은 다음과 같은 방법으로 GPU, CPU, 메모리를 관리합니다.
Partition(파티션)
- Job이 실행될 수 있는 자원 그룹을 정의합니다.
- 예: gpu 파티션, long 파티션, debug 파티션
- 연구자는 Job 제출 시 --partition 옵션을 통해 특정 자원군을 선택합니다.
QoS (Quality of Service)
- 사용자 그룹별 정책 제어 도구
- 예: 일반 사용자는 최대 100개의 Job만 제출 가능, VIP 연구자는 500개까지 가능
Node & GPU 관리
- Slurm은 gres.conf 파일을 통해 GPU 리소스를 관리합니다.
- Multi-GPU 환경에서는 MIG(Multi-Instance GPU)나 GPU Affinity 설정도 함께 고려합니다.
# 예시: GPU Job 제출
sbatch --gres=gpu:4 --partition=gpu job.sh
운영자가 직면하는 문제와 해결 사례
- 대규모 Job이 큐를 독점하는 경우
- 정책: FIFO만 적용했을 때 발생
- 해결: Backfilling 활성화 + Fairshare 적용
- 일부 사용자 GPU 독점 현상
- 원인: 자주 Job을 제출하는 사용자가 계속 우선 배정
- 해결: Fairshare와 QoS 적용 → 사용자별 점유 비율 제한
- 짧은 Job이 무시되는 문제
- 원인: 긴 Job에 밀려 대기 시간 과도
- 해결: Priority 정책에서 Age factor 조정 → 오래 대기한 Job 가중치 상승
모니터링과 튜닝
스케줄링 정책이 잘 동작하는지 확인하려면 지속적인 모니터링이 필요합니다.
# 대기 중인 Job 확인
squeue
# 현재 Fairshare 점수 확인
sshare
Prometheus + Grafana 환경에서는 Job 대기 시간, GPU 활용률, Partition별 점유율을 시각화해 정책의 효과를 확인할 수 있습니다.
HPC 운영자의 체크리스트
- FIFO + Backfilling 조합으로 자원 활용 극대화
- Fairshare 정책으로 사용자 간 공정성 보장
- QoS 설정으로 Job 제출/실행 개수 제한
- 정기적으로 Partition 사용률 점검 후 리밸런싱
- GPU/MIG 자원은 gres.conf 및 Slurm plugin으로 세밀하게 관리
정리하며
Slurm 스케줄링 정책은 HPC 클러스터의 심장과도 같습니다.
운영자는 효율성과 공정성이라는 두 가지 목표 사이에서 균형을 잡아야 합니다.
- FIFO와 Backfilling으로 자원 낭비를 막고
- Fairshare와 Priority로 사용자 불만을 최소화하며
- QoS와 Partition으로 클러스터를 안정적으로 운영할 수 있습니다.
잘 설계된 스케줄링 정책은 단순히 Job을 실행하는 것을 넘어, 연구자와 운영자 모두가 만족할 수 있는 지속 가능한 HPC 환경을 만듭니다.
728x90