Skip to content

14.9 HPC 사용 팁

분석을 더 안정적이고 효율적으로 수행하기 위한 실전 팁을 모았습니다.

14.9.1 장시간 작업과 세션 끊김 대비

원격 접속은 네트워크 문제·시간 초과로 끊길 수 있습니다. 세션이 끊겨도 작업이 살아남도록 합니다.

배치로 돌리는 것이 1순위

  • 오래 걸리는 계산은 대화형이 아니라 sbatch(Slurm) / spark-submit(Spark) 으로 제출합니다. 배치 작업은 사용자의 SSH 세션과 무관하게 클러스터에서 실행됩니다.

터미널 멀티플렉서 (tmux / screen)

대화형 작업이나 제출 단말을 오래 유지해야 한다면 tmux를 사용합니다.

bash
tmux new -s work        # 세션 생성
# (작업 수행)
# Ctrl-b 다음 d  -> 분리(detach). 접속이 끊겨도 세션 유지
tmux ls                 # 세션 목록
tmux attach -t work     # 다시 붙기

nohup (간단한 경우)

bash
nohup python ${WORK_DIR}/scripts/long_task.py > ${WORK_DIR}/logs/task.log 2>&1 &

TIP

tmux/nohup제출 단말의 세션 유지용입니다. 실제 무거운 계산은 가능하면 Slurm/Spark 배치로 클러스터에 올리는 것이 가장 안전합니다.

14.9.2 인증·세션 만료 대비

  • 배치 작업(sbatch/spark-submit)은 제출 후 사용자 세션과 분리되므로, 세션 만료의 영향을 덜 받습니다. 장시간 작업을 배치로 돌리는 또 다른 이유입니다.
  • 만약 Kerberos 등 시간제한 토큰을 사용하는 환경이라면 토큰 갱신 주기를 운영팀에 확인하세요.

14.9.3 체크포인트·재시작

  • 며칠 단위 작업은 중간 결과를 주기적으로 공유 스토리지에 저장(체크포인트)하여, 중단 시 처음부터 다시 하지 않도록 설계합니다.
  • Slurm --time 한도에 걸려 종료될 수 있으므로, 한 작업을 적당한 크기로 나누거나 재시작 가능한 구조로 만듭니다.
  • Hail은 중간 산출물을 MatrixTable로 저장해 두면 이후 단계부터 다시 시작할 수 있습니다.

14.9.4 자원·효율 팁

  • 사용량 측정 후 조정: sacct -j <ID> --format=MaxRSS,Elapsed,State로 실제 메모리/시간을 보고 다음 요청을 조정합니다.
  • 소규모 → 본실행: 새 파이프라인은 작은 샘플로 검증한 뒤 전체로 확장합니다.
  • 자원 현황 먼저 확인: 제출 전 sinfo(Slurm)·Spark UI로 여유를 확인하면 대기 시간을 줄일 수 있습니다.
  • Spark 파티션/메모리: Hail 작업이 느리거나 메모리 부족이면 executor 메모리·코어와 데이터 파티션 수를 조정합니다. 단, Spark/Hail 버전 자체는 변경하지 않습니다(14.6장).
  • conda 환경은 공유 스토리지에: 환경을 ${CONDA_ENV_DIR}에 두면 Pod 재생성 후에도 재사용·재현이 쉽습니다.

14.9.5 자주 쓰는 흐름 단축

  • 14.1장env.sh를 셸 시작 시 자동 로드하면 변수 입력을 줄일 수 있습니다(예: 개인 셸 설정에서 source).
  • 반복 제출하는 작업은 스크립트화(14.11.2 샘플 스크립트)하여 ${WORK_DIR}/scripts에 보관하고 재사용합니다.

보안 주의

편의를 위해 비밀번호·토큰을 스크립트나 환경 파일에 평문으로 저장하지 마세요. 로그를 자동 저장할 때도 민감정보가 포함되지 않는지 확인합니다.