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 환경 변수


variablessummary
PBS_O_HOSTQsub 명령이 실행되고 있는 호스트
PBS_O_QUEUE작업이 제출된 원래 큐의 이름
PBS_O_WORKDIRQsub 명령의 현재 작업 디렉토리의 절대 경로
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

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

qstat

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

State 별 상태 설명

optionssummary
B적어도 하나 이상의 subjob이 돌아가는중
Ejob이 돌아가다 빠져나옴
Fjob이 끝남
Hjob 대기중
Mjob이 다른 서버로 이동함
Qjob이 queue에 들어감
Rjob 돌아가는중
Sjob 정지먹음
Tjob이 새로운 위치로 이동
U키보드입력 때문에 cycle-harvesting job이 정지먹음
Wjob넣은 사람이 입력한 시작시간이 될때까지 기다리는중
Xsubjob다 돌아감 또는 삭제됨
This post is licensed under CC BY 4.0 by the author.

© Subin Cho. Some rights reserved.

Using the Chirpy theme for Jekyll.