Post

PBS server system

서버 재구축하면서 OS를 SGE에서 PBS로 변경했고 전달받은 사용방법을 문서화하는 의미로 여기에 정리한다.

자주쓰는 command

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# status 확인용
pbsnodes -aSj

## qlogin 
qsub -I -l nodes=AMD01:ppn=32 -q AMD 
# in rocks2
qlogin -q anode64.q@anode64-1 -pe pe_slots 64

# job 넣기
qusb -v -l nodes=AMD01:ppn=32 -q AMD xx.pbs

# 필요한 memory 양 알아보기
qstat -explain C -j #job_num 
> mem_max xxxG

:eyes:사용법 간단요약


:star: -q를 반드시 지정해 줘야함
:star: -v포함 모든 옵션 .pbs앞에 써줘야 먹음
:star: $1 이런건 .sh 파일일때 적용가능

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#PBS -N Project12_preprocessing
#PBS -r n
#PBS -e /st05/subin/Project12_LLC/02_Preprocessing/log
#PBS -o /st05/subin/Project12_LLC/02_Preprocessing/log
#PBS -M subin.cho@i.ewha.ac.kr

source ~/.bash_profile

main_dir=/st05/subin/Project12_LLC/02_Preprocessing
input_dir=/st05/subin/Project12_LLC/01_RawData
reference_dir=/home/subin/source/CellRanger_reference/refdata-gex-mm10-2020-A

cd $main_dir

cellranger count --id=$id \
                 --transcriptome=$reference_dir \
                 --fastqs=$input_dir \
                 --sample=$fastq \
                 --nosecondary


이렇게 작성하고 cellranger.pbs

1
qsub -v id=D15_ig,fastq=LLC_D15_ig_total -l nodes=AMD02:ppn=32 -q AMD cellranger.pbs



PBS는 배치 환경 표준을 따르며,
배치 작업을 수용, 작업의 특성을 컨트롤, 작업을 준 노드에 결과물을 줄(? 뭔소리지) 수 있는 시스템이다.

Job 실행 컨트롤 기능

  • 가장 기본적인 기능
  • job을 실행 및 정지, 우선순위 설정 가능

병렬 작업처리 기능

  • 리눅스를 포함한 다양한 플랫폼에서 병렬화를 위한 패키지를 지원한다.
  • 기존에 쓰던 SGE와 차별화되는 점인듯. 원래 SGE에서는 노후화도 문제가 됐을 수 있지만, 병렬로 job을 넣었을때, 쪼개져 들어간 계산들이 하나로 제대로 모이지 않고 IOerror가 많이 났었음.

PBS 환경 변수


variables summary
PBS_O_HOST Qsub 명령이 실행되고 있는 호스트
PBS_O_QUEUE 작업이 제출된 원래 큐의 이름
PBS_O_WORKDIR Qsub 명령의 현재 작업 디렉토리의 절대 경로
PBS_JOBID 배치 시스템에 의해 지정된 작업ID
PBS_JOBNAME 사용자가 제공한 작업이름
PBS_NODEFILE 작업에 지정된 노드 목록
PBS_QUEUE 작업이 실행되는 큐의 이름

Submit script


Parallel Job (MPI)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash

### 연산에 사용할 자원 설정, 해석은 아래에
#PBS -l select=1:ncpus=8:mpiprocs=8

### Job name 설정
#PBS -N Jobname

### 연산에 사용할 queue 지정 (반드시! INT, AMD etc.)
#PBS -q workq

### 작업을 다시 시작할지 여부
#PBS -r n

### 표준 입출력 파일을 하나로 출력, error 및 log 를 한파일로 제공
#PBS -j oe

### 따로도 가능하다
#PBS -e /home/log
#PBS -o /home/log

################이 아래에 코드작성
cd $PBS_O_WORKDIR
MPI_EXEC="/opt/mpi/intel-14.0/openmpi-4.0.3/bin/mpirun"
### which mpi하면 path알 수 있음

NPROC='wc -l < $PBS_NODEFILE'

$MPI_EXEC -machinefile $PBS_NODEFILE -n $NPROC ./exec > output.txt

  • PBS에 등록된 node순서대로 작업 제출시 #PBS -l select=1:ncpus=8:mpiprocs=8
    node 1개 8core MPI 계산 = 총 8core 사용

  • 특정 node 지정해 작업 제출시 #PBS -l nodes=AMD01:ppn=8+nodes=AMD03:ppn=8
    AMD01에서 8core, AMD03에서 8core 써서 총 16core사용

Serial Job

1
2
3
4
5
6
7
8
9
#!/bin/bash
#PBS -l select=1:ncpus=1
#PBS -N jobname
#PBS -1 workq
#PBS -r n
#PBS -j oe

아래 코드 작성

Job submission

1
qsub submit_script.sh

Delete the job

이미 실행/대기 상태인 큐를 지우는 명령어 qdel. 큐를 지우기 위해서는 job id가 필요하다. job id는 qstat으로 확인가능

1
qdel job_ID(숫자)

HOST 상태 확인하기


pbsnodes

options summary
-a 모든 호스트 및 모든 속성 표시
-H 지정된 호스트 및 지정된 호스트의 모든 vnode에 대한 모든 속성 표시
-I Down되거나 offline으로 표시된 모든 호스트 표시
-aSj 모든 호스트의 정보를 헤더별로 표시

qstat

options summary
-n 작업별 간략한 내용 표시
-f 작업별 상세한 내용표시
-Q Queue별 진행중인 작업 표시
-f -J job_id 특정작업에 대한 상세한 내용 표시

State 별 상태 설명

options summary
B 적어도 하나 이상의 subjob이 돌아가는중
E job이 돌아가다 빠져나옴
F job이 끝남
H job 대기중
M job이 다른 서버로 이동함
Q job이 queue에 들어감
R job 돌아가는중
S job 정지먹음
T job이 새로운 위치로 이동
U 키보드입력 때문에 cycle-harvesting job이 정지먹음
W job넣은 사람이 입력한 시작시간이 될때까지 기다리는중
X subjob다 돌아감 또는 삭제됨
This post is licensed under CC BY 4.0 by the author.

© Subin Cho. Some rights reserved.

Using the Chirpy theme for Jekyll.