HPC & GPU Engineering/AI Infrastructure Engineer

[HPC/GPU 클러스터 운영 Linux Deep Dive 15편] Slurm 스케줄링 정책과 자원 관리 전략 – 공정성과 효율성을 모두 잡는 방법

ygtoken 2025. 8. 16. 09:56
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

 


 

운영자가 직면하는 문제와 해결 사례

 

  1. 대규모 Job이 큐를 독점하는 경우
    • 정책: FIFO만 적용했을 때 발생
    • 해결: Backfilling 활성화 + Fairshare 적용
  2. 일부 사용자 GPU 독점 현상
    • 원인: 자주 Job을 제출하는 사용자가 계속 우선 배정
    • 해결: Fairshare와 QoS 적용 → 사용자별 점유 비율 제한
  3. 짧은 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