目录

  • 一、前言
  • 二、Slurm介绍
  • 三、如何使用
  • sinfo 查看节点和分区信息
  • squeue 查看调度队列中作业信息
  • srun 运行并行作业
  • sbatch 用批处理脚本提交作业
  • scancel 取消已提交的作业
  • salloc 用于申请节点资源
  • sacct 查看历史作业信息
  • 四、总结
  • 五、参考



一、前言

本文基于北京超级云计算中心A分区平台介绍Slurm的用法,主要目的是让没接触过Slurm作业调度系统的人可以快速上手,轻松的提交与管理自己的作业。BSCC-A5超算的每个节点具有2颗32核AMD EPYC 7452@2.35GHz CPU组成,单节点64核,256GB内存,每个队伍最多使用2个节点共128核资源,节点间通过56Gb Infiniband 高速网互联。


lvs的调度算法 slurm调度策略_服务器

二、Slurm介绍

Slurm是一个开源,容错,高度可扩展的集群管理和作业调度系统,适用于大型和小型Linux集群。Slurm不需要对其操作进行内核修改,并且相对独立。作为集群工作负载管理器,Slurm有三个关键功能。首先,它在一段时间内为用户分配对资源(计算节点)的独占和/或非独占访问,以便他们可以执行工作。其次,它提供了一个框架,用于在分配的节点集上启动,执行和监视工作(通常是并行作业)。最后,它通过管理待处理工作的队列来仲裁资源争用。

三、如何使用

对于集群使用者而言,其通常不需要过于关注集群的内部结构与节点之间网络连接情况,Slurm就提供了简单易用的命令将集群计算资源的使用难度降到了最低,以下依次列出对于用户而言常用的Slurm指令。

命令

功能描述

sinfo

查看节点和分区信息

squeue

查看调度队列中作业信息

srun

运行并行作业

sbatch

用批处理脚本提交作业

scancel

取消已提交的作业

salloc

用于申请节点资源

sacct

查看历史作业信息

sinfo 查看节点和分区信息

sinfo查看当前账号可使用的队列资源信息

lvs的调度算法 slurm调度策略_lvs的调度算法_02


相关信息解释:

参数

解释

PARTITION

分区名(队列名)

AVAIL

队列是否可用,up(可用)、inact(不可用)

TIMELIMIT

该队列作业运行时间限制,infinite(不限时)

NODES

节点数

STATE

节点状态,drain(故障)、alloc(已被分配)、idle(可用)、down(下线)、mix(部分占用)

NODELIST

节点列表

squeue 查看调度队列中作业信息

squeue查看调度队列中作业信息

lvs的调度算法 slurm调度策略_服务器_03

相关信息解释:

参数

解释

JOBID

作业号

PARTITION

作业运行的队列名

NAME

作业名可自定义

USER

该作业所属账号名

ST

作业状态,R(运行中)、PD(排队中)、CG(将完成)、CD(已完成)

NODES

作业所使用节点数

NODELIST(REASON)

作业所使用节点列表

srun 运行并行作业

一个srun命令样例,表示指定队列名为amd_256,节点数为1,每个进程的核数为64,作业的运行时间限制为1分钟,作业名为pivot1,可执行文件为pivot

srun -p amd_256 -N 1 -c 64 -t 1 -J pivot1 pivot

常用参数

参数

解释

-N [count]

指定节点数count

-n [count]

指定进程数count

-c [count]

指定每个进程核数为count

-p [name]

指定提交作业到name队列

-w fa[0101-0102]

指定提交作业到fa0101和fa0102节点

-x fa[0103-0104]

提交作业时排除fa0103和fa0104节点

-o [filename]

指定标准输出到filename文件

-e [filename]

指定重定向错误输出到filename文件

-J [jobname]

指定作业名为jobname

-t [time]

限制运行time分钟

sbatch 用批处理脚本提交作业

每次都使用一长串命令提交作业比较麻烦,不够优雅,sbatch命令可以解析已经写好的脚本提交任务,一个脚本示例run.sh和用法如下。

#!/bin/bash
#SBATCH -p amd_256
#SBATCH -N 1
#SBATCH -c 64
#SBATCH -t 1
#SBATCH -J pivot1
./pivot

该脚本使用方法为

sbatch run.sh

表示指定队列名为amd_256,节点数为1,每个进程的核数为64,作业的运行时间限制为1分钟,作业名为pivot1,可执行文件为pivot

scancel 取消已提交的作业

前文中我们提交作业后会获得一个唯一的JOBID,如果该作业运行时间过长,你想强行终止该作业,就可以使用

scancel JOBID

强行终止该作业,也可通过其他的信息终止某个作业

参数

解释

-n [jobname]

终止作业名为jobname的作业

-p [name]

终止队列名为name的作业

-t PENDING

终止正在排队的作业

-w fa0101

终止运行在fa0104节点的作业

salloc 用于申请节点资源

salloc申请节点资源,用法如下:

  1. 执行salloc -p amd_256
  2. 执行squeue 查看分配到的节点资源,我们分配的的节点是fa0307
  3. 执行ssh fa0307登陆到所分配的节点
  4. 登陆计算节点后可以使用该节点资源
  5. 不使用节点后,执行scancel JOBID释放节点资源

sacct 查看历史作业信息

使用方法如下,可以查看历史作业的起止时间、结束状态、作业号、作业名、使用的节点数、节点列表、运行时间等。

lvs的调度算法 slurm调度策略_lvs的调度算法_04


四、总结

Slurm基础用法已经介绍完毕,上述命令可以满足大部分提交作业的需求,后续将会针对OpenMP、MPI等类型的任务给出代码和Slurm实例。