个人的网站学习记录
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}'

参考资料

  1. Fluent | Research IT | Trinity College Dublin
  2. ANSYS - Research Computing Documentation
  3. Fluent Guide - Storrs HPC Wiki
  4. 福建省超级计算中心- Slurm系统

最后修改于 2019-11-14