HPC & GPU Engineering/AI Infrastructure Engineer

[HPC/GPU 클러스터 운영 Zero to Hero 23편] Slurm 트러블슈팅 – Pending·Fail 상태 원인 분석과 해결

ygtoken 2025. 8. 11. 21:18
728x90

 

왜 Slurm 트러블슈팅이 중요한가

 

HPC/GPU 클러스터 운영에서 Slurm은 모든 Job 스케줄링의 중심이지만, 항상 매끄럽게 동작하는 것은 아닙니다.

사용자들은 종종 Job이 PD(Pending) 상태에서 오래 대기하거나, F(Failed) 상태로 종료되는 문제를 겪습니다.

운영자는 이러한 상태 코드의 의미를 이해하고, 원인을 빠르게 분석해 해결해야 자원 낭비와 사용자 불만을 줄일 수 있습니다.

 


 

1. Slurm Job 상태 코드 이해

상태 코드 의미
PD (Pending) 큐에 있지만 실행 대기 중
R (Running) 실행 중
CG (Completing) 실행 종료 중
CD (Completed) 정상 완료
F (Failed) 오류로 종료
TO (Timeout) 최대 실행 시간 초과
CA (Cancelled) 취소됨

 


 

2. Pending 상태 주요 원인 분석

 

PD 상태의 Job은 여러 이유로 자원이 배정되지 않은 상태입니다.

원인별 구분

  1. 자원 부족
    • GPU/CPU/메모리 등 요청량을 만족하는 노드 없음
    • 해결: sinfo로 노드 상태 확인 후 자원 요청 수정
  2. 파티션 제한
    • 요청한 파티션이 비활성 상태이거나 MaxTime 제한
    • 해결: scontrol show partition으로 파티션 상태 점검
  3. QoS/Fairshare 정책
    • 우선순위 낮아 대기
    • 해결: sprio -j JOBID로 우선순위 원인 확인
  4. Job 의존성(Dependency)
    • 다른 Job이 끝나야 실행됨
    • 해결: scontrol show job JOBID에서 Dependency 확인

 


 

3. Fail 상태 주요 원인 분석

 

F 상태는 Job이 실행 중 오류로 종료된 경우입니다.

 

원인별 구분

  1. 스크립트 오류
    • 잘못된 명령, 모듈 로드 실패
    • 해결: Job 로그(--output, --error) 분석
  2. 환경 변수/라이브러리 불일치
    • CUDA, NCCL, MPI 버전 차이
    • 해결: 모듈 버전 통일, 컨테이너 사용 검토
  3. 자원 초과
    • 메모리 제한(--mem) 초과
    • 해결: 요청량 상향 조정, 코드 메모리 최적화
  4. 노드 장애
    • GPU 오류, 네트워크 불안정
    • 해결: scontrol update NodeName=nodeX State=DRAIN 후 점검

 


 

4. 상태 진단 명령어 정리

# Job 상태 상세 확인
scontrol show job JOBID

# 파티션 상태 확인
scontrol show partition

# 노드 상태 확인
sinfo -N -l

# 우선순위 분석
sprio -j JOBID

# Slurm 로그 확인 (운영자)
tail -f /var/log/slurm/slurmctld.log

 


 

5. GPU Job 특화 트러블슈팅

  • GPU 메모리 부족
nvidia-smi

→ 다른 Job이 GPU를 점유 중이면 Slurm 할당과 실제 사용 불일치 가능

→ 해결: Slurm 설정에서 SelectTypeParameters=CR_GPU로 GPU 강제 할당

 

  • NCCL 초기화 실패
    • IB/NVLink 통신 불가
    • 해결: ibstatnvidia-smi topo -m으로 네트워크 경로 점검

 


 

6. 운영 시나리오 예시

상황 명령어 조치
Job이 계속 Pending sprio -j JOBID 우선순위 조정 또는 QoS 변경
GPU Job 실패 Job 로그 분석 CUDA/NCCL 버전 확인
특정 노드에서만 실패 sinfo -N -l 해당 노드 DRAIN 후 복구
메모리 부족으로 실패 Job 로그 + --mem 증설 코드 메모리 최적화

 


 

7. 장점과 단점

장점

  • 상태 코드와 원인을 체계적으로 파악 가능
  • 문제 해결 속도 향상
  • 사용자 커뮤니케이션 근거 확보

 

단점

  • 원인 복합 발생 시 분석 난이도 상승
  • 운영자 경험 의존도 높음

 


 

8. 실무 팁

  • 항상 Job 로그를 --output--error로 분리 저장
  • Pending Job이 다수일 경우, 정책(QoS, Fairshare) 조정 검토
  • Fail Job은 원인별 통계 작성 → 재발 방지책 마련
  • GPU Job은 Slurm 할당 자원과 nvidia-smi 출력 불일치 여부 반드시 확인

 


 

정리하며

Slurm 트러블슈팅 능력은 HPC/GPU 클러스터 운영자의 문제 해결 속도와 직결됩니다.

Pending과 Fail 상태를 신속하게 구분하고, 자원·정책·환경 문제를 정확히 진단하는 것이 핵심입니다.

다음 24편에서는 Slurm 로그 분석과 성능 튜닝 – 효율적인 Job 실행 환경 만들기를 다뤄, 운영 안정성과 성능을 동시에 높이는 방법을 소개하겠습니다.

 

728x90