Slurm作业系统常用命令
记录的Slurm脚本常用命令
sbatch
提交作业
提交一个批脚本到作业调度系统中:
参数 | 介绍 |
---|---|
--help |
显示sbatch命令的使用帮助信息; |
-A |
指定计费账户; |
-D, --chdir= |
指定工作目录; |
--get-user-env |
获取用户的环境变量; |
--gres= |
使用gpu这类资源,如申请两块gpu则–gres=gpu:2 |
-J, --job-name= |
指定该作业的作业名; |
--mail-type= |
指定状态发生时,发送邮件通知,有效种类为(NONE, BEGIN, END, FAIL, REQUEUE, ALL); |
--mail-user= |
发送给对应邮箱; |
-n, --ntasks= |
sbatch并不会执行任务,当需要申请相应的资源来运行脚本,默认情况下一个任务一个核心,–cpus-per-task参数可以修改该默认值; |
-c, --cpus-per-task= |
每个任务所需要的核心数,默认为1; |
--ntasks-per-node= |
每个节点的任务数,–ntasks参数的优先级高于该参数,如果使用–ntasks这个参数,那么将会变为每个节点最多运行的任务数; |
-o, --output= |
输出文件,作业脚本中的输出将会输出到该文件; |
-p, --partition= |
将作业提交到对应分区; |
-q, --qos= |
指定QOS; |
-t, --time= |
设置限定时间; |
sinfo
节点状态查看
sinfo
sinfo show node node05
:节点信息查看
参数 | 介绍 |
---|---|
--help |
显示sinfo命令的使用帮助信息; |
-d |
查看集群中没有响应的节点; |
-i |
每隔相应的秒数,对输出的分区节点信息进行刷新 |
-n |
显示指定节点的信息,如果指定多个节点的话用逗号隔开; |
-N |
按每个节点一行的格式来显示信息; |
-p |
显示指定分区的信息,如果指定多个分区的话用逗号隔开; |
-r |
只显示响应的节点; |
-R |
显示节点不正常工作的原因; |
-o |
显示指定的输出信息,指定的方式为%[[.]size]type,“.”表示右对齐,不加的话表示左对齐;size表示输出项的显示长度;type为需要显示的信息。可以指定显示的常见信息如下; |
%a |
是否可用状态 |
%A |
以”allocated/idle”的格式来显示节点数,不要和”%t” or “%T”一起使用 |
%c |
节点的核心数 |
%C |
“allocated/idle/other/total”格式显示核心总数 |
%D |
节点总数 |
%E |
节点不可用的原因 |
%m |
每个节点的内存大小(单位为M) |
%N |
节点名 |
%O |
CPU负载 |
%P |
分区名,作业默认分区带“*” |
%r |
只有root可以提交作业(yes/no) |
%R |
分区名 |
%t |
节点状态(紧凑形式) |
%T |
节点的状态(扩展形式) |
例:sinfo -o "%.15P %.5a %.10l %.6D %.6t %N"
scontrol
综合查询和控制
scontrol show <command>
查看状态和配置命令:
COMMAND | 解释 |
---|---|
job | 显示作业信息 |
node | 显示节点信息 |
partition | 显示队列信息 |
config | 显示配置信息 |
scontrol
控制作业命令
COMMAND | 解释 |
---|---|
scontrol suspend jobid | 挂起作业 |
scontrol resume jobid | 恢复作业 |
scontrol requeue jobid | 作业重新排队 |
scontrol hold id/name | 保留作业 |
scontrol release id/name | 释放作业 |
squeue
:用于查看作业队列中作业的信息
参数 | 介绍 |
---|---|
--help |
显示squeue命令的使用帮助信息; |
-A |
显示指定账户下所有用户的作业,如果是多个账户的话用逗号隔开; |
-i |
每隔相应的秒数,对输出的作业信息进行刷新 |
-j |
显示指定作业号的作业信息,如果是多个作业号的话用逗号隔开; |
-n |
显示指定节点上的作业信息,如果指定多个节点的话用逗号隔开; |
-t |
显示指定状态的作业信息,如果指定多个状态的话用逗号隔开; |
-u |
显示指定用户的作业信息,如果是多个用户的话用逗号隔开; |
-w |
显示指定节点上运行的作业,如果是多个节点的话用逗号隔开; |
-o |
显示指定的输出信息,指定的方式为%[[.]size]type,size表示输出项的显示长度,type为需要显示的信息。可以指定显示的常见信息如下; |
%a |
账户信息 |
%C |
核心数 |
%D |
节点数 |
%i |
作业ID |
%j |
作业名 |
%l |
作业时限 |
%P |
分区 |
%q |
优先级 |
%R |
状态PD作业显示原因,状态R的作业显示节点 |
scancel
取消作业
参数 | 介绍 |
---|---|
--help |
显示scancel命令的使用帮助信息; |
-A |
取消指定账户的作业,如果没有指定job_id,将取消所有; |
-n |
取消指定作业名的作业; |
-p |
取消指定分区的作业; |
-q |
取消指定qos的作业; |
-t |
取消指定作态的作业,”PENDING”, “RUNNING” 或 “SUSPENDED”; |
-u |
取消指定用户下的作业; |
作业提交和控制
sbatch ## 提交脚本排队执行,批处理模式
salloc ## 创建资源申请并启动shell用于运行作业,交互模式
srun ## 创建资源申请并启动作业步(通常是MPI作业)
sattach ## 连接正在运行的作业步的标准输出和错误等
scancel ## 取消作业或作业步
系统状态
sinfo ## 查看节点和分区的状态
squeue ## 查看作业和作业步的状态
scontrol ## 查看或更新各种对象(如集群、分区、作业、作业步、预约等)的状态
记账统计
sacct ## 报告作业/作业步的记账信息
sstat ## 报告正在运行的作业/作业步的信息,包含状态采集
sreport ## 从集群、分区、用户、账号等角度统计资源使用情况
调度配置
sacctmgr ##调度数据库配置管理工具,包括集群、用户、账号等增删,以及资源限制策略的配置
sprio ## 查看作业优先级的具体构成因素
sshare ## 查看个账号的公平共享相关数据
sdiag ## 显示调度模块的操作统计信息,包括运行周期、作业状态统计、RPC类型统计等等
其他命令
sbcast ## 在作业中传输特定的文件到分配的计算节点中
strigger ## 事件触发器管理工具
smap ## 图像化的查看作业、节点等状态信息
sview ## 图像化的查看系统(作业、分区、预约等)的状态1,修改系统配置
Slurm脚本示例之Fluent
#!/bin/bash
#SBATCH --job-name=fluentest
#SBATCH --nodes=1
#SBATCH --ntasks=8
###SBATCH --ntasks-per-node=8
###SBATCH --gres=gpu:1
#SBATCH --partition=low
#SBATCH --output=job.log
#SBATCH --error=job.err
###SBATCH --begin=12:00
###SBATCH -t 24:00:00
###SBATCH --mem=220G
Version=3ddp
JOU_FILE=test.jou
LOG_FILE=run.log
ERR_FILE=run.err
echo "--- This job is:$SLURM_JOB_NAME($SLURM_JOBID)"
echo "--- Current working directory is:${PWD}"
NTASKS=`echo $SLURM_TASKS_PER_NODE | cut -c1-2`
NPROCS=`expr $SLURM_NNODES \* $NTASKS`
echo "--- Running on ${NPROCS} processes (cores) on the following nodes:"
FLUENTNODES="$(scontrol show hostnames)"
echo $FLUENTNODES
echo "--- Starting job at:`date`"
module purge
module load /etc/modulefiles/mpi/openmpi-x86_64
export PATH=/public/software/ansys/v182/fluent/bin:$PATH
fluent $Version -t$NPROCS -mpi=intel -g -pid -cnf=$FLUENTNODES -i $JOU_FILE 1> $LOG_FILE 2> $ERR_FILE
#fluent $Version -t$NPROCS -g -pid -cnf=$FLUENTNODES -i $JOU_FILE 1> $LOG_FILE 2> $ERR_FILE
##fluent -pethernet -g $Version -t$ncpus -cnf=pnodes -i $INPUT >$OUTPUT 2>&1
echo "--- Job finished at:`date`"
squeue | grep $SLURM_JOB_NAME | awk '{print "--- Total CPU hours:"$4}'
Slurm脚本示例之CFX
#!/bin/bash
#SBATCH --job-name=cfxtest
#SBATCH --nodes=1
#SBATCH --ntasks=8
###SBATCH --ntasks-per-node=8
###SBATCH --gres=gpu:1
#SBATCH --partition=low
#SBATCH --output=job.log
#SBATCH --error=job.err
#SBATCH -t 24:00:00
###SBATCH --begin=12:00
###SBATCH -t 24:00:00
###SBATCH --mem=220G
echo "--- This job is:$SLURM_JOB_NAME($SLURM_JOBID)"
echo "--- Current working directory is:${PWD}"
NTASKS=`echo $SLURM_TASKS_PER_NODE | cut -c1-2`
NPROCS=`expr $SLURM_NNODES \* $NTASKS`
echo "--- Running on ${NPROCS} processes (cores) on the following nodes:"
CFXNODES="$(scontrol show hostnames)"
echo $CFXNODES
echo "--- Starting job at:`date`"
export cfxinstall='/public/software/ansys/v182/CFX/bin'
export Jrun=`pwd`
$cfxinstall/cfx5solve -fullpath $Jrun/Unnamed0.9st -def $Jrun/Unnamed0.9st.def -ini $Jrun/Unnamed0.9.res -part $NPROCS -par-dist "$CFXNODES" -parallel -start-method "Intel MPI Distributed Parallel"
##$cfxinstall/cfx5solve -fullpath $Jrun/UnnamedST -def $Jrun/UnnamedST.def -part $ncpus -par-dist "$pnodes" -start-method "Intel MPI Distributed Parallel"
echo "--- Job finished at:`date`"
squeue | grep $SLURM_JOB_NAME | awk '{print "--- Total CPU hours:"$4}'
参考资料
- Fluent | Research IT | Trinity College Dublin
- ANSYS - Research Computing Documentation
- Fluent Guide - Storrs HPC Wiki
- 福建省超级计算中心- Slurm系统
最后修改于 2019-11-14