Slurm 命令

Slurm命令 功能
sinfo 查看集群分区状态
squeue 查看作业队列
srun, salloc 交互式运行作业
sbatch 提交作业
scancel 取消作业
scontrol 查看和修改作业参数
sacct 查看已完成作业


1作业提交

链接

用户使用sbatch命令提交作业脚本,其基本格式为sbatch jobfile。jobfile为作业脚本文件。在批处理作业脚本中,脚本第一行以”#!”字符开头,并指定脚本文件的解释程序,如 sh,bash。接下来写作业使用到的调度系统参数,以#开头,最后写作业运行的程序命令。
用户可使用sbatch命令提交用户作业脚本。示例如下

  1. sbatch xxx.sbatch

作业提交脚本格式编写如下,作业控制指令以”#SBATCH”开头,其他注释以”#”开头。例如wrf测试脚本run.sbatch如下:

  1. #!/bin/bash
  2. #SBATCH -J wrf
  3. #SBATCH --comment=WRF
  4. #SBATCH -n 128
  5. #SBATCH --ntasks-per-node=32
  6. #SBATCH -p normal
  7. #SBATCH -o %j
  8. #SBATCH -e %j

sbatch常用选项

作业控制参数如下:

选项 含义 类型 示例
-J 作业名称,使用squeue看到的作业名 字符串 -J wrf;表示作业名称为”wrf”
-n 作业申请的总cpu核心数 数值 -n 240;表示作业申请240个cpu核心
-N 作业申请的节点数 数值 -N 10 表示作业申请10个计算节点
-p 指定作业提交的队列 字符串 -p silicon表示将作业提交到silicon队列
—ntasks-per-node 指定每个节点运行进程数 数值 —ntasks-per-node=32表示每个节点运行32个进程(任务)
—cpus-per-task= 指定任务需要的处理器数目 数值 —cpus-per-task=1 表示每个任务占用1个处理器核
-t 指定作业的执行时间,若超过该时间,作业将会被杀死 数值 -t 30 表示作业的执行时间不超过30分钟
-o 指定作业标准输出文件的名称,不能使用shell环境变量 字符串 -o %j,表示使用作业号作为作业标准输出文件的名称,%J表示作业号
-e 指定作业标准错误输出文件的名称,不能使用shell环境变量 字符串 -e %j,表示使用作业号作为作业标准错误输出文件的名称
-w, —nodelist=hosts… 指定分配特定的计算节点 字符串 -w t0100,t0101 表示使用t0100 t0101等2个节点
-x, —exclude=hosts… 指定不分配特定的阶段节点 字符串 -x t0100,t0101 表示不使用t0100 t0101等2个节点
—exclusive 指定作业独占计算节点 字符串 sbatch –exclusivetest.job
—mem= 指定作业在每个节点使用的内存限制。 数字 —mem=2G 限定作业在每个节点最多占用2G的最大内存。
—mem-per-cpu= 限定每个进程占用的内存数。 数字 —mem-per-cpu=512M 限定作业每个进程占用的最大内存。
-d, —dependency= 作业依赖关系设置 字符串 -d after:123 表示本作业须待作业123开始以后再执行
—gres= 指定每个节点使用通用资源名称及数量 字符串 —gres=加速卡:2 表示本作业使用加速卡,且每个节点使用2卡

2作业查询

链接

用户使用squeue命令可以查看作业信息,例如acdnrbtv用户执行命令,输出如下:

  1. squeue
  2. JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
  3. 4741409 xhacnorma wrf acdnrbtv R 27:44 4 haba[0135-0138]

其中JOBID表示任务ID编号,PARTITION表示作业所在队列(分区),NAME表示任务名称,USER为用户,ST为作业状态,TIME为已运行时间,NODES表示占用节点数,NODELIST(REASON)为任务运行的节点列表或者原因说明。另外,状态列中R-Runing(正在运行),PD-PenDing(资源不足,排队中),CG-COMPLETING(作业正在完成中),CA-CANCELLED(作业被人为取消),CD-COMPLETED(作业运行完成),F-FAILED 作业运行失败,NF-NODE_FAIL节点问题导致作业运行失败,PR 作业被抢占,S 作业被挂起,TO 作业超时被杀。

squeue
—jobs 查看指定JOB IDS的作业信息
—name= 查看指定名称的作业信息
—partition= 查看指定分区的作业信息
—priority 按照优先级查看作业信息
—state= 指定状态查看作业信息
—users= 指定用户名称查看作业信息

作业状态

R PD CG CD
正在运行 正在排队 即将完成 已完成

3队列信息查询

分区信息查询-sinfo

用户在使用时,首先需要了解哪些分区可以使用。在计算服务中,使用sinfo命令查询队列信息。根据命令输出,可以看到当前节点所在集群的作业调度系统的队列情况,并可看到每个分区可访问的空闲节点数量、节点名称。
命令的默认输出中,PARTITION表示分区、NODES表示节点数、STATE表示节点运行状态、NODELIST表示节点列表。其中状态一列中idle表示节点处于空闲状态,可接收新的作业;allocated表示节点已经分配了一个或者多个作业且所有核心用满,在作业释放前不能再被分配作业;mix状态为使用部分核心,仍可以被分配作业;drain状态表示对应节点已经下线;drng表示已下线但仍有作业在运行。需要关注的是PARTITION和STATE两列。PARTITION指示任务可提交到的分区(即队列)。下表列出关于sinfo命令常用选项,更多选项可通过man sinfo命令查看sinfo手册。

sinfo
-a, —all 查看所有分区信息
-d, —dead 查看处于dead状态的详细信息
-l, —long 查看分区详细信息
-N, —Node 查看节点信息
-n node-name 查看指定节点状态
-p , —partition= 查看指定分区信息
-t , —state= 查看指定状态的节点