스케줄러(PBS)를 통한 작업 실행
5호기 누리온 시스템의 작업 스케줄러는 Portable Batch System (이하 PBS)을 사용한다. 이 장에서는 스케줄러를 통해 작업 제출하는 방법 및 관련 명령어들을 소개한다. 사용자가 작업 제출 시 사용할 수 있는 큐는 정해져 있으며, 큐 별로 사용자별 최대 제출할수 있는 작업의 수는 제한이 있고, 이 값은 시스템의 부하 정도에 따라 변동될 수 있다.
누리온 시스템은 배타적 노드 할당 정책을 기본적으로 적용하여, 한 노드에 한 사용자의 작업만이 실행될 수 있도록 보장한다. 이는 공유 노드 정책을 적용할 경우 종종 발생할 수 있는 사용자 어플리케이션의 심각한 성능 저하를 예방하기 위함이다. 그러나 상용 SW를 사용할 수 있는 큐의 경우는 노드의 규모가 크지 않아서 효율적인 자원 활용을 위해 공유 노드 정책을 적용한다.
사용자 작업은 로그인 노드를 통해서만 제출이 가능하며 또한, 일반 사용자가 계산노드에 직접적으로 접근할 수 없다.
또한, 사용자 작업은 /scratch/$USER 에서만 제출이 가능하다.
가. 큐 구성
Commercial 큐 (상용SW 수행을 위한 큐)와 디버깅을 위한 debug큐는 공유 노드 정책이 적용되어 가용 자원(CPU core) 범위 내에서 노드 당 여러개의 작업이 배치되며, 나머지 큐에서는 배타적 노드 정책으로 노드 당 하나의 작업만이 배치된다.
작업 큐
일반사용자가 사용할 수 있는 큐와 사용자별 제출 가능 작업 개수는 다음 표와 같다. (2021년 4월 기준)
※ 노드 구성은 시스템 부하에 따라 시스템 운영 중에 조정될 수 있음. (showq 명령어와 motd를 통해 노드 구성과 최대 작업가능개수를 수시로 확인할 수 있음)
1. 큐별 설명
2. 작업 제출 개수 제한
사용자별 최대 제출 작업 개수 : 초과하여 작업을 제출한 경우 제출 시점에 오류가 발생함.
사용자별 최대 실행 작업 개수 : 초과하여 작업을 제출한 경우 이전 작업이 끝날 때까지 기다려야 함.
3. 리소스 점유 제한
작업별 노드 점유 개수 (최대|최소) : 단일 작업에서 점유 노드 수가 최소~최대 범위를 벗어나는 경우 제출 시점에 오류가 발생한다. 사용자의 대기 및 실행 중인 작업의 점유 노드 개수와는 무관함.
4. KNL 메모리 모드에 따른 큐 구분(Cluster 모드는 전부 Quadrant)
exclusive, normal, long, debug 큐는 Cache 모드(MCDRAM을 L3캐시로 사용), flat큐는 Flat 모드(MCDRAM을 DDR4와 같이 RAM으로 사용)로 설정되어 있음.
시스템 보호를 위해 Cache 모드는 최대 가용 메모리 82GB, Flat 모드는 102GB 제한
5. Hyperthread off 설정으로 KNL 사용시 노드 당 최대 68 스레드, SKL 사용시 노드 당 최대 40 스레드 사용 가능
나. 작업 제출 및 모니터링
1. 배치 작업 제출
작업 스크립트 작성 및 예시
작업 스크립트 작성 시 아래 필수 키워드, 아래 작업 스크립트 예시와 별첨1 작업 스크립트 주요 키워드를 참고하여 작성 후 제출한다. 또한. 작업 스크립트 예시 파일은 /apps/shell/home/job_examples에서 확인할 수 있다.
PBS 작업 스케줄러 필수 옵션
자원 할당 변수 키워드
사용하고자 하는 자원을 select, ncpus, ompthreads, miprocs, walltime 등의 키워드로 지정
※ 누리온 사용자 편익 증대를 위한 자료 수집의 목적으로, 아래와 같이 PBS 옵션을 통한 사용 프로그램 정보 작성을 의무화한다. 즉, 사용하는 어플리케이션에 맞게 PBS의 -A 옵션을 아래 표를 참조하여 반드시 기입한 후 작업을 제출해야 한다. (2019년 4월부터 적용)
※ 어플리케이션 구분을 추가는 주기적으로 수집된 사용자 요구에 맞추어 진행됩니다. 추가를 원하시면 consult@ksc.re.kr로 해당 어플리케이션에 대한 추가 요청을 해주시기 바랍니다.
[Application별 PBS 옵션 이름표]
※ 예: VASP 사용자의 경우 PBS 프로그램 작업 스크립트에 #PBS -A vasp을 추가 작성
환경변수
PBS에서 배치 작업을 수행하기 위해서는 위에서 설명된 PBS 키워드들을 사용하여 작업 스크립트 파일을 작성해야 한다.
※ /apps/shell/home/job_examples 에서 작업제출 스크립트 예제 파일을 복사하여 사용 가능
Serial 프로그램 작업 스크립트 작성 예제(serial.sh)
※ 1노드 점유 순차, 사용 예제
※ 위 예제와 같이 #PBS –m, #PBS –M 옵션을 사용하여 작업을 제출하는 경우 작업이 실행될 때와 완료 시, 그리고 작업이 중단되는 경우에도 abc@def.com로 이메일 발송
OpenMP 프로그램 작업 스크립트 작성 예제(openmp.sh)
※ 1노드 점유, 노드 당 64 스레드(총 64 OpenMP 스레드) 사용 예제
MPI (IntelMPI)프로그램 작업 스크립트 작성 예제(mpi.sh)
※ 4노드 점유, 노드 당 64 프로세스(총 256 MPI 프로세스) 사용 예제
MPI (OpenMPI)프로그램 작업 스크립트 작성 예제(mpi.sh)
※ 4노드 점유, 노드 당 64 프로세스(총 256 MPI 프로세스) 사용 예제
MPI (Mvapich2) 프로그램 작업 스크립트 작성 예제(mpi_mvapich2.sh)
※ 4노드 점유, 노드 당 64 프로세스(총 256 MPI 프로세스) 사용 예제
※ mpirun 으로도 적은 규모의 노드에서는 실행이 가능하나, 많은 노드를 사용하는 작업의 경우 작업 전개가 정상적으로 진행되지 않을 수 있으니 위 예시와 같이 mpirun_rsh 으로 실행 권장
Hybrid(IntelMPI + OpenMP) 프로그램 작업 스크립트 작성 예제(hybrid_intel.sh)
※ 4노드 점유, 노드 당 2 프로세스, 프로세스 당 32 스레드(총 8 MPI 프로세스, 256 OpenMP 스레드) 사용 예제
Hybrid(openMPI + OpenMP) 프로그램 작업 스크립트 작성 예제(hybrid_openmpi.sh)
※ 4노드 점유, 노드 당 2 프로세스, 프로세스 당 32 스레드(총 8 MPI 프로세스, 256 OpenMP 스레드) 사용 예제
Hybrid(Mvapich2 + OpenMP) 프로그램 작업 스크립트 작성 예제(hybrid_mvapich2.sh)
※ 4노드 점유, 노드 당 2 프로세스, 프로세스 당 32 스레드(총 8 MPI 프로세스, 256 OpenMP 스레드) 사용 예제
※ mpirun 으로도 적은 규모의 노드에서는 실행이 가능하나, 많은 노드를 사용하는 작업의 경우 작업 전개가 정상적으로 진행되지 않을 수 있으니 위 예시와 같이 mpirun_rsh 으로 실행 권장
작성한 작업 스크립트 제출 예시
※ mpi.sh 파일은 예시로, 작성한 작업 스크립트 파일을 이용하여 작업을 제출
PBS 배치 작업을 수행하는 경우, 작업 중 STDOUT(표준 출력)과 STDERR(표준 에러)를 시스템 디렉터리의 output에 저장하였다가 작업 완료 후 사용자 작업 제출 디렉터리로 복사한다. 기본적으로, 작업 완료 시까지 작업 관련 내용을 확인할 수 없으나 다음 키워드를 추가하면 확인 가능하다.
PBS에 의해 생성되는 STDOUT / STDERR를 작업 실행 중 확인할 수 있는 키워드(/home01에 파일 생성)
리눅스의 Redirection 기능을 사용하여 작업 실행 확인
작업 이메일 알림 지정
2. 인터렉티브 작업 제출
인터렉티브 작업 제출의 경우 잡 스크립트 작성과는 달리 #PBS를 생략하고 –I –A 등의 옵션만 사용
※ 2시간 이상 미사용시 타임아웃으로 작업이 종료되고 자원이 회수됨, 인터렉티브 작업의 walltime은 최대 12시간으로 고정됨
배치 스크립트 대신 "-I" 옵션 사용
인터렉티브 작업 제출 시 그래픽 환경 사용 (-X)
※ 여기서 -l select 이하 구문의 내용은 사용자 수요에 따라 변경하여 사용하면 되나, 위 구문들(리소스 점유, 큐 이름, PBS 옵션 이름)은 반드시 작성하고 작업을 제출해야함
인터렉티브 작업 제출 시 기존 환경변수 상속 (-V)
※ 위 예제에서 소문자 l과 대문자 I를 유념하여 참조
3. 작업 모니터링
작업 모니터링 관련 명령어들은 로그인 노드에서만 사용 가능.
큐 조회
큐별 노드 유휴 자원 조회
현재 사용 계정으로 사용 가능한 큐리스트 조회
작업 상태 조회
※ Job Id: 작업번호.pbs
※ Name: 작업 스크립트의 #PBS –N 값
※ S: 작업의 동작 상태를 표시(R-수행 중/ Q-대기/ H-일시정지/ E-오류)
작업 속성 조회
작업 대기 시간 조회 (Estimated Start Time, 작업 시작 시각 추정)
※ 여기서, i는 H나 Q상태의 작업 리스트를 보여주는 플래그이고, -w는 자세한 정보를 옆으로 길게 출력하는 플래그임 (-w 플래그 사용시 터미널 창을 옆으로 확장하여 정렬을 맞춰주면 정보 확인이 용이함)
※ 사용자 작업스크립트의 walltime 정보 취합으로 계산된 예상치임
다. 작업 제어
작업 삭제
작업 suspend/resume
2022년 11월 8일에 마지막으로 업데이트되었습니다.
Last updated