[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에 대한 설명은 다음과 같다.
State | Description |
---|---|
alloc | 1개 이상의 job이 node에 할당 된 경우 |
idle | Any job도 node에 할당되지 않은 경우 |
mix | 해당 node들이 alloc과 idle이 섞여 있는 경우 |
alloc state의 경우 1개 이상의 job이 allocation 된 경우를 말
예시: Slurm Workload Manager – sinfo (schedmd.com)
srun
즉각적인 작업 요청 및 대기를 할 때 사용하기 때문에, 작업이 밀려있지 않고 간단한 작업을 할 때 자주 사용한다.
Option | Description |
---|---|
-N [# of nodes] | 수행하고자 하는 노드 수를 명시 Ex.) srun -N 4 a.out |
-l | 각 노드의 index를 함께 출력 Ex.) 1: 1st node output |
squeue
제출된 job을 scheduling queue에서 확인하는 명령어다.
Option | Description |
---|---|
-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)
Option | Description |
---|---|
-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에서 작업을 취소 할 때 사용하는 명령어다.
Option | Description |
---|---|
-u [USER NAME] | 특정 user name을 가지는 job들을 queue에서 제거 Ex.) scancel -u shumin |