14.5 Slurm 접근 및 작업 실행
Slurm은 독립된 배치 작업 클러스터입니다. 작업 스크립트를 제출하면 스케줄러가 자원을 배정해 실행합니다. 본 환경은 선입선출(FIFO) 로 큐를 처리합니다.
14.5.1 Slurm 로그인 노드 접속
JupyterHub의 Terminal에서 Slurm 로그인 노드로 SSH 접속합니다.
bash
ssh -p ${SLURM_SSH_PORT} ${LDAP_USER}@${SLURM_LOGIN_HOST}접속 후 본인 계정과 공유 스토리지가 보이는지 확인합니다.
bash
whoami
ls -ld ${WORK_DIR}📸 화면 캡처
<Slurm 로그인 노드 접속 후 프롬프트 화면>
14.5.2 클러스터 상태 확인
bash
sinfo # 파티션/노드 상태 한눈에
sinfo -N -l # 노드별 상세
squeue # 전체 대기/실행 작업
squeue -u ${LDAP_USER} # 내 작업만sinfo로 사용 가능한 파티션(${SLURM_PARTITION})과 가용 노드 수를 먼저 확인하면 적절한 자원 요청에 도움이 됩니다.
📸 화면
<sinfo / squeue 출력 예시>
14.5.3 작업 스크립트 작성 (sbatch)
배치 작업은 #SBATCH 지시문으로 자원을 요청하는 스크립트로 작성합니다. 스크립트는 공유 스토리지(${WORK_DIR}/scripts)에 둡니다.
${WORK_DIR}/scripts/job_example.sh:
bash
#!/bin/bash
#SBATCH --job-name=analysis_test # 작업 이름(식별용)
#SBATCH --partition=PARTITION_NAME # ${SLURM_PARTITION} 값으로 치환
#SBATCH --nodes=1 # 노드 수
#SBATCH --ntasks=1 # 태스크 수
#SBATCH --cpus-per-task=4 # 태스크당 CPU
#SBATCH --mem=16G # 메모리
#SBATCH --time=02:00:00 # 최대 실행 시간(시:분:초)
#SBATCH --output=LOG_DIR/%x_%j.out # 표준출력 (%x=작업명, %j=작업ID)
#SBATCH --error=LOG_DIR/%x_%j.err # 표준에러
set -euo pipefail
# conda 환경 활성화 (Pod와 동일한 사내 conda 사용)
source ${WORK_DIR}/env.sh
conda activate ${CONDA_ENV_DIR}/analysis
echo "시작: $(date) / 노드: $(hostname)"
# 실제 분석 실행 (스크립트·데이터는 공유 스토리지 경로 그대로)
python ${WORK_DIR}/scripts/analyze.py \
--input ${DATA_DIR}/sample.txt \
--output ${WORK_DIR}/results/out.txt
echo "종료: $(date)"자원 요청은 실제 필요량에 맞게
--time, --mem, --cpus-per-task를 과도하게 크게 잡으면 스케줄링이 늦어지고 다른 사용자의 작업을 막습니다. 반대로 너무 작으면 시간 초과/메모리 부족으로 작업이 죽습니다. 처음에는 소규모로 시험한 뒤 실제 사용량을 보고 조정하세요(14.9.4 자원·효율 팁).
경로 치환
위 예시의 PARTITION_NAME, LOG_DIR는 #SBATCH 지시문 특성상 변수 확장이 제한적이라 직접 값으로 적는 것이 안전합니다(예: --output=/.../logs/%x_%j.out). 본문 그대로 두지 말고 실제 경로값으로 치환하세요.
14.5.4 작업 제출·모니터링·취소
bash
# 제출
sbatch ${WORK_DIR}/scripts/job_example.sh
# -> Submitted batch job 12345 (작업 ID 확인)
# 대기/실행 상태 확인
squeue -u ${LDAP_USER}
# 작업 상세/사용량 (종료 후 포함)
sacct -j 12345 --format=JobID,JobName,State,Elapsed,MaxRSS,ReqMem
# 취소
scancel 12345
scancel -u ${LDAP_USER} # 내 작업 전체 취소작업 상태 약어: PD(대기) R(실행) CG(정리중) CD(완료) F(실패).
14.5.5 대화형 작업 (srun / salloc)
디버깅이나 짧은 시험 실행은 대화형으로 자원을 받아 진행합니다.
bash
# 자원을 받아 즉시 명령 실행
srun --partition=${SLURM_PARTITION} --cpus-per-task=4 --mem=8G --time=00:30:00 --pty bash
# 또는 자원만 먼저 할당받고 작업
salloc --partition=${SLURM_PARTITION} --cpus-per-task=4 --mem=8G --time=00:30:00대화형 세션 점유 주의
대화형 세션은 사용하는 동안 자원을 계속 점유합니다. 디버깅이 끝나면 즉시 종료(exit) 하여 자원을 반납하세요. 장시간 계산은 대화형이 아니라 sbatch 배치로 돌리는 것이 원칙입니다.
14.5.6 로그·결과 위치
- 표준출력/에러:
#SBATCH --output/--error에 지정한 공유 스토리지 경로(${WORK_DIR}/logs) - 결과물: 스크립트에서
${WORK_DIR}/results등 공유 스토리지에 저장
공유 스토리지에 기록하므로 Pod(JupyterHub)에서도 같은 경로로 즉시 결과를 확인할 수 있습니다.
보안 주의
로그 파일에 민감 데이터(샘플 식별자, 경로에 포함된 개인정보 등)가 남지 않도록 출력 내용을 점검하고, 불필요한 로그는 분석 종료 후 정리하세요.