Slurm作业调度系统使用记录

本文详细介绍了Slurm作业调度系统的关键命令,包括查看资源状态(sinfo)、监控作业队列(squeue)、交互式和批处理作业提交(srun/sbatch)、资源分配(salloc)、以及Scontrol用于查看和更新作业的高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Slurm作业调度系统使用记录

  • 1. Slurm 命令
  • 2. sinfo
  • 3. squeue
  • 4. 提交作业
    • 4.1 参数说明
    • 4.2 交互模式 srun
    • 4.3 批处理模式 sbatch
    • 4.4 分配模式 salloc
  • 5. scontrol
    • 5.1 信息查看
    • 5.2 更新作业
  • 参考文章

Slurm作业调度系统

1. Slurm 命令

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

2. sinfo

sinfo               #查看所有分区状态
sinfo -a            #查看所有分区状态
sinfo -N            #查看节点状态
sinfo -n node-name  #查看指定节点状态
sinfo --help        #查看sinfo的说明
>>> alloc # 节点在用
>>> idle # 节点可用
>>> mix # 部分占用
>>> down # 节点下线
>>> drain # 节点故障

3. squeue

squeue              #查看运行中的作业列表
squeue -l           #查看列表细节信息
squeue -j job-id    #查看运行中作业信息
squeue -u username  #查看user所有运行中的作业
>>> R # 正在运行
>>> PD # 正在排队
>>> CG # 即将完成
>>> CD # 已完成

4. 提交作业

Slurm 提交作业有 3 种模式,分别为交互模式,批处理模式,分配模式,这三种方式只是用户使用方式的区别,在管理,调度,记账时同等对待。

4.1 参数说明

以下所有参数在 srun, sbatch, salloc 中均可以使用。更多参数见 srun --help, sbatch --help, salloc --help。

-c, --cpu-per-task=NCPUs        #指定每个进程使用核数,不指定默认为1
-e, --error=error_filename      #指定错误文件输出
-J, --job-name=JOBNAME          #指定作业名称
--mail-type=END/FAIL/ALL        #邮件提醒,可选:END,FAIL,ALL
--mail-user=mail_address        #通知邮箱地址
-n, --ntask=NTASKs #指定总进程数;不使用cpus-per-task,可理解为进程数即为核数 
--ntasks-per-node=N #指定每个节点进程数/核数,使用-n参数后变为每个节点最多运行的进程数
-N, --nodes=N                   #指定节点数量
-o, --output=out_filename       #指定输出文件输出
-p, --partion=debug             #指定分区
-t, --time=dd-hh:mm:ss          #作业最大运行时间
-w, --nodelist=node[1,2]        #指定优先使用节点,不可与避免节点冲突
-x, --exclude=node[3,5-6]       #指定避免使用节点,不可与优先节点冲突
--mem-per-cpu=MB                #指定计算cpu最大占用内存大小

4.2 交互模式 srun

交互式作业提交,提交命令后,等待作业执行完成之后返回命令行窗口。
Demo of srun:

srun -J JOBNAME -p debug -N 2 -c 1 -n 32 --ntasks-per-node=16 -w node[3,4] -x node[1,5-6] --time=dd-hh:mm:ss --output=file_name --error=file_name --mail-user=address --mail-type=ALL mpirun -n 64 ./iPic3D ./inputfile/test.inp

4.3 批处理模式 sbatch

批处理作业是指用户编写作业脚本,指定资源需求约束,提交后台执行作业。提交批处理作业的命令为 sbatch,用户提交命令即返回命令行窗口,但此时作业在进入调度状态,在资源满足要求时,分配完计算结点之后,系统将在所分配的第一个计算结点(而不是登录结点)上加载执行用户的作业脚本。批处理作业的脚本为一个文本文件,脚本第一行以 “#!” 字符开头,并制定脚本文件的解释程序,如 sh,bash。

运行 sbatch filename 来提交任务;计算开始后,工作目录中会生成以 slurm 开头的.out 文件为输出文件(不指定输出的话)。

Demo of sbatch:
保存在运行程序目录下即可,文件名随意(可以无后缀,内容文本格式即可);作业提交命令 sbatch filename

#!/bin/bash                     %指定运行shell
#提交单个作业
#SBATCH --job-name=JOBNAME      %指定作业名称
#SBATCH --partition=debug       %指定分区
#SBATCH --nodes=2               %指定节点数量
#SBATCH --cpus-per-task=1       %指定每个进程使用核数,不指定默认为1
#SBATCH -n 32       %指定总进程数;不使用cpus-per-task,可理解为进程数即为核数
#SBATCH --ntasks-per-node=16    %指定每个节点进程数/核数,使用-n参数(优先级更高),变为每个节点最多运行的任务数
#SBATCH --nodelist=node[3,4]    %指定优先使用节点
#SBATCH --exclude=node[1,5-6]   %指定避免使用节点
#SBATCH --time=dd-hh:mm:ss      %作业最大运行时长,参考格式填写
#SBATCH --output=file_name      %指定输出文件输出
#SBATCH --error=file_name       %指定错误文件输出
#SBATCH --mail-type=ALL         %邮件提醒,可选:END,FAIL,ALL
#SBATCH --mail-user=address     %通知邮箱地址

source /public/home/user/.bashrc   #导入环境变量文件

mpirun -n 32 ./iPic3D ./inputfiles/test.inp #运行命令

4.4 分配模式 salloc

结点资源抢占命令。该命令支持用户在提交作业前,抢占所需计算资源(此时开始计算所用机时)。需请求资源,然后在获取节点后登录到计算节点。目前作者使用设备可直接登录计算节点,暂未使用。 sacct 命令也未启用,暂无说明,有需要可在文末参考网页查看。

5. scontrol

5.1 信息查看

scontrol show job JOBID         #查看作业的详细信息
scontrol show node              #查看所有节点详细信息
scontrol show node node-name    #查看指定节点详细信息
scontrol show node | grep CPU   #查看各节点cpu状态
scontrol show node node-name | grep CPU #查看指定节点cpu状态

5.2 更新作业

在任务开始前却发现作业的属性写错了(例如提交错了分区,修改名字),取消了重新排队似乎很不划算。如果作业恰好 没在运行,我们是可以通过 scontrol 命令来更新作业的属性

scontrol update jobid=JOBID ... #...为下面参数
reqnodelist=<nodes>
reqcores=<count>
name=<name>
nodelist=<nodes>
excnodelist=<nodes>
numcpus=<min_count-max_count>
numnodes=<min_count-max_count>
numtasks=<count>
starttime=yyyy-mm-dd
partition=<name>
timelimit=d-h:m:s
mincpusnode=<count>
minmemorycpu=<megabytes>
minmemorynode=<megabytes>

参考文章

作业调度系统・北京大学高性能计算使用指南
Slurm 作业调度系统 — 上海交大超算平台用户手册 文档
SLURM 使用基础教程 - 曙光先进计算
Slurm User Guide for Great Lakes | ITS Advanced Research Computing
SLURM 使用参考
Slurm 作业调度系统使用指南

### Slurm调度系统中Admin节点的管理和配置 #### 配置文件设置 为了使Slurm能够识别并赋予特定节点管理员权限,需编辑`slurm.conf`配置文件。通常情况下,此操作是在主控节点(即运行`slurmctld`的服务端)完成。在该文件内指定哪些主机作为管理节点,并定义其属性。 ```bash # 添加或修改 AdminNodes 参数来指明哪个节点拥有管理员特权 AdminNodes=admin-node-name ``` 上述参数告知Slurm哪台机器被授予额外的操作权利[^1]。 #### 启动与验证服务 确保已正确设置了管理节点之后,应当重启`slurmctld`以便应用新的配置更改: ```bash sudo systemctl restart slurmctld ``` 接着可以利用`sinfo`命令检查集群状态,确认新设定是否生效;也可以尝试执行一些仅限于管理员才能使用的指令,比如强制终止某个作业(`scancel`),以此测试权限是否正常工作[^4]。 #### 授权用户列表调整 除了硬件层面的管理节点外,还可以通过配置文件中的`AdminUser`字段来限定谁可以在这些特殊节点上行使高级别的控制权。同样地,在`slurm.conf`里加入如下行即可: ```bash # 设置允许成为超级用户的用户名单 AdminUsers=user1,user2,... ``` 这样做的好处是可以更精细地控制访问级别而不必依赖具体的物理位置[^2]。 #### 日志记录增强 对于涉及敏感操作的日志条目,建议开启详细的日志模式以供后续审计之用。可在相同配置文档中找到关于日志级别的选项,并将其设为更高的数值如DEBUG5等,从而捕获更多细节信息用于排查问题或是安全审查目的[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值