LabHub

HPC 와 Slurm · Slurm 구성요소와 설정 파일 · 실습

slurm.conf 작성하기

LabHub 에서 이어서 보기

목표

요구사항에 맞는 slurm.conf 를 처음부터 작성하고, 일관성 검증 스크립트를 직접 만듭니다.

왜 중요한가

Slurm 설정 오류는 에러가 늦게, 엉뚱한 곳에서 나타납니다. 노드가 INVAL 이나 DOWN 으로 빠지고 로그에 원인이 한 줄 찍혀 있는데, 그걸 안 보면 며칠 헤맵니다. 가장 흔한 두 가지는 CPUs 가 소켓×코어×스레드와 다른 것파티션이 정의되지 않은 노드를 참조하는 것입니다. 둘 다 사람이 손으로 계산하다 나는 실수이고, 둘 다 스크립트로 미리 잡을 수 있습니다.

실제 slurmd 는 돌리지 않습니다. 작성한 설정과 검증 스크립트를 채점합니다.

이 실습의 요구사항

단계

1. /etc/slurm/root/slurm 두 디렉터리를 만드세요.
2. /etc/slurm/slurm.conf 를 만들고 다음 키를 넣으세요.
ClusterName=labhub-hpc, SlurmctldHost=ctl01, SlurmUser=slurm, StateSaveLocation=/var/spool/slurmctld, SlurmdSpoolDir=/var/spool/slurmd, AuthType=auth/munge
3. 스케줄링 관련 키를 추가하세요.
SchedulerType=sched/backfill, SelectType=select/cons_tres, SelectTypeParameters=CR_Core_Memory, ProctrackType=proctrack/cgroup, TaskPlugin=task/cgroup,task/affinity
4. 노드 3대를 정의하세요. 각 줄은 NodeName= 으로 시작하고 Sockets, CoresPerSocket, ThreadsPerCore, CPUs, RealMemory, State 를 포함해야 합니다. CPUs 값이 소켓×코어×스레드와 일치해야 합니다.
5. 파티션 2개를 정의하세요. batchDefault=YESMaxTime=24:00:00, shortMaxTime=01:00:00 입니다. 두 파티션 모두 Nodes= 에 적은 노드가 4번에서 정의한 것이어야 합니다.
6. 로그와 계정 관련 키를 추가하세요.
SlurmctldLogFile=/var/log/slurm/slurmctld.log, SlurmdLogFile=/var/log/slurm/slurmd.log, JobAcctGatherType=jobacct_gather/cgroup, ReturnToService=2
7. munge 사용자와 그룹을 만들고, /etc/munge/munge.key1024바이트 랜덤 데이터로 생성한 뒤 권한 0400, 소유자 munge:munge 로 설정하세요.
8. /root/slurm/validate.sh 를 작성하세요. 첫 번째 인자로 slurm.conf 경로를 받아 다음 두 규칙을 검사하고, 위반이 없으면 종료 코드 0, 있으면 0 이 아닌 값으로 끝나야 합니다.

참고

단계 8개

  1. 설정 디렉터리 준비
  2. 기본 키 작성
  3. 스케줄러와 자원 선택
  4. 노드 정의
  5. 파티션 정의
  6. 로그와 계정
  7. munge 키 준비
  8. 일관성 검증 스크립트