Skip to main content

Slurm作业管理系统

Slurm ( Simple Linux Utility for Resource Management ,http://slurm.schedmd.com/ )是开源的、具有容错性和高度可扩展大型和小型 Linux集群资源管理和作业调度系统。超级计算系统可利用 Slurm 进行资源和作业管理,以避免相互干扰,提高运行效率。所有需运行的作业无论是用于程序调试还是业务计算均必须通过交互式并行 srun、批处理式 sbatch 或分配式 salloc 等命令提交,提交后可以利用相关命令查询作业状态等。

一. 常用命令

sinfo       #查看分区状态
squeue #查看队列中的作业
scontrol #查看作业详细信息
scancel #取消已经提交的作业
sbatch #批处理式提交作业
salloc #分配式运行作业

1. 查看分区状态

sinfo
  • CPU分区命名规则为c-核心数-每核心内存大小,如c-8-4:表示单节点规格为8核,每核心有4G内存,即节点规格为8核32G。

  • GPU分区命名规则为g-卡号-每节点卡数,如g-v100-2:表示有两张显卡型号为tesla v100的gpu节点。

2. 查看作业队列

squeue
  • JOBID:作业号

  • ST:状态 (R:运行中;CF:配置中;PD:排队中)。

3. 查看所有作业详细信息

scontrol show jobs

4. 取消作业号为20的作业

scancel 20

二. 提交作业的方式

1. 使用sbatch批处理模式提交作业

sbatch命令可以提交任务至一个或多个计算节点,实现并行计算。

sbatch命令的一些常用选项

参数功能
-N申请的节点数量
-p指定计算节点规格,使用sinfo查看所支持的规格
-n指定任务数,即并行程序运行多少个进程
-c每进程使用的cpu核心数
-q指定队列类型,列如:-q eco 指定使用经济型队列,如果队列未开启经济型,则启动标准型

参考运行程序:demo.sh

#!/bin/bash
sleep 6000

提交示例:

  • 使用2个4核心节点启动8个并行任务。
sbatch -N 2 -p c-4-1 -n 8 -c 1 demo.sh
  • 1个4核心节点启动4个并行任务。
sbatch -N 1 -p c-4-1 -n 4 -c 1 demo.sh
  • 1个4核心节点启动4个并行任务。
sbatch -p c-4-1 -n 4 demo.sh
  • 1个4核心节点启动1个并行任务, 该任务使用4个cpu核心。
sbatch -p c-4-1 -n 1 -c 4 demo.sh
  • 2个4核心节点启动2个并行任务, 每个任务使用4个cpu核心。
sbatch -p c-4-1 -n 2 -c 4 demo.sh

2. 使用salloc分配模式提交作业

salloc命令可以用来分配节点,用户可以在获取分配的计算节点后,ssh进入直接运行相关计算程序,主要用来调式程序执行。

使用步骤(案例):

Step1. salloc申请计算节点;

salloc -N 1 -p c-8-2 &

Step2. ssh登录到分配的计算节点;

ssh c-8-2-worker0001

Step3. 调试或运行程序;

./demo.sh

Step4. 结束程序运行后释放分配的节点;

scancel 17