Slurm 命令
Slurm命令 | 功能 |
---|---|
sinfo | 查看集群分区状态 |
squeue | 查看作业队列 |
srun, salloc | 交互式运行作业 |
sbatch | 提交作业 |
scancel | 取消作业 |
scontrol | 查看和修改作业参数 |
sacct | 查看已完成作业 |
1作业提交
用户使用sbatch命令提交作业脚本,其基本格式为sbatch jobfile。jobfile为作业脚本文件。在批处理作业脚本中,脚本第一行以”#!”字符开头,并指定脚本文件的解释程序,如 sh,bash。接下来写作业使用到的调度系统参数,以#开头,最后写作业运行的程序命令。
用户可使用sbatch命令提交用户作业脚本。示例如下
sbatch xxx.sbatch
作业提交脚本格式编写如下,作业控制指令以”#SBATCH”开头,其他注释以”#”开头。例如wrf测试脚本run.sbatch如下:
#!/bin/bash
#SBATCH -J wrf
#SBATCH --comment=WRF
#SBATCH -n 128
#SBATCH --ntasks-per-node=32
#SBATCH -p normal
#SBATCH -o %j
#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用户执行命令,输出如下:
squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
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 |
查看指定分区信息 |
-t |
查看指定状态的节点 |