Linux,  Programming

[Linux] Slurm 사용법

slurm은 cluster server 상에서 작업을 관리하기 위한 프로그램으로, node간 통신을 통해 작업 management가 이루어진다.

sinfo

sinfo는 노드들의 status를 확인하는 명령어다.

$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE  NODELIST
batch     up     infinite     2 alloc  adev[8-9]
batch     up     infinite     6 idle   adev[10-15]
debug*    up        30:00     8 mix    adev[0-7]

위 경우 각 노드들이 다른 상태들을 가지는 경우인데, 각 state에 대한 설명은 다음과 같다.

StateDescription
alloc1개 이상의 job이 node에 할당 된 경우
idleAny job도 node에 할당되지 않은 경우
mix해당 node들이 alloc과 idle이 섞여 있는 경우

alloc state의 경우 1개 이상의 job이 allocation 된 경우를 말

예시: Slurm Workload Manager – sinfo (schedmd.com)

srun

즉각적인 작업 요청 및 대기를 할 때 사용하기 때문에, 작업이 밀려있지 않고 간단한 작업을 할 때 자주 사용한다.

OptionDescription
-N [# of nodes]수행하고자 하는 노드 수를 명시
Ex.) srun -N 4 a.out
-l각 노드의 index를 함께 출력
Ex.)
1: 1st node output
2: 2nd node output

squeue

제출된 job을 scheduling queue에서 확인하는 명령어다.

OptionDescription
-u [user name]특성 사용자의 작업 목록을 확인하는 옵션
Ex.) squeue -u shumin

공식 문서: Slurm Workload Manager – squeue (schedmd.com)

sbatch

$ sbatch [TARGET SCRIPT]

Job queue에 작업을 넣을 때 사용하는 명령어로, 오래 걸리거나 다수의 작업을 요청 할 때 주로 사용한다. 해당 명령에 대한 수행 후 stdout 및 stderr 결과는 *.out 파일로 redirection 된다.

공식 문서: Slurm Workload Manager – sbatch (schedmd.com)

OptionDescription
-N [# of nodes]수행하고자 하는 노드 수를 명시
Ex.) sbatch -N 4 a.out

그리고 sbatch 명령어를 수행 할 때 input으로 script를 넣어서 수행을 용이하게 사용 할 수 있다. Input script에는 반드시 #! queue-bang을 넣어줘야 한다.

#!/bin/sh
# run script, run.sh
srun -l echo "Hello World"
$ sbatch -N 4 ./run.sh
$ cat 123.out
1: Hello World
2: Hello World
3: Hello World
4: Hello World

scancel

$ scancel [JOB ID]

Job queue에서 작업을 취소 할 때 사용하는 명령어다.

OptionDescription
-u [USER NAME]특정 user name을 가지는 job들을 queue에서 제거
Ex.) scancel -u shumin

공식 문서: Slurm Workload Manager – scancel (schedmd.com)

Leave a Reply

Your email address will not be published. Required fields are marked *