本文描述Linux集群的基本Slurm用法。
1. 一个简单的Slurm脚本
2. 提交作业
3. 列出作业
4. 获取作业细节
5. Suspend a job (root only)
6. Resume a job (root only)
7. Kill a job
用户可以杀死自己的作业,root可以杀死任何作业。
8. Hold a job
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
139 defq simple rstober PD 0:00 1 (Dependency)
138 defq simple rstober R 0:16 1 atom01
$ scontrol hold 139
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
139 defq simple rstober PD 0:00 1 (JobHeldUser)
138 defq simple rstober R 0:32 1 atom01
9. Release a job
$ scontrol release 139
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
139 defq simple rstober PD 0:00 1 (Dependency)
138 defq simple rstober R 0:46 1 atom01
10. List partitions
$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
defq* up infinite 1 down* atom04
defq* up infinite 3 idle atom[01-03]
cloud up infinite 2 down* cnode1,cnodegpu1
cloudtran up infinite 1 idle atom-head1
11. 作业依赖
首先提交一个简单的作业:
#!/usr/bin/env bash
#SBATCH -p defq
#SBATCH -J simple
sleep 60
Submit the job
$ sbatch simple.sh
Submitted batch job 149
现在,我们将提交另一个依赖于先前作业的作业。 有许多方法可以指定依赖条件,但是“singleton ”是最简单的。 Slurm -d singleton 参数告诉Slurm在之前所有具有相同名称的作业完成之前不要调度此作业。
$ sbatch -d singleton simple.sh
Submitted batch job 150
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
150 defq simple rstober PD 0:00 1 (Dependency)
149 defq simple rstober R 0:17 1 atom01
前提作业完成后,将调度从属作业。
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
150 defq simple rstober R 0:31 1 atom01
PS:
Slurm China社区,群里有很多大牛,感兴趣的同学可以加入。二维码失效了可以看评论区留言加我V。