Skip to content

SLURM 作业调度系统

一、Slurm 简介/基本术语

1. Slurm简介

Slurm(Simple Linux Utility for Resource Management)是一个开源的分布式资源管理和作业调度软件,用于超级计算机和大中小型计算节点集群的管理,具有高度的扩展性和容错性。Slurm调度系统使用简单、功能强大、应用广泛,是HPC调度领域事实上的标准。

Slurm 利用分区(partition)对 CPU、内存、网络等资源进行分类,以便将不同需求的任务运行到不同规格的计算节点上。用户需利用 Slurm 命令将该任务及所需资源请求等提交到特定的分区中,等任务申请的资源得到满足后,任务才开始运行。任务运行受分区、账户、服务质量 (QOS)等限制。

Slurm 官方网站:Slurm Workload Manager - Documentation

更多详细命令请查看在此网页查看 Slurm Workload Manager - Man Pages

2. 基本术语

  • user:用户名,一般为系统登录名。
  • account:账户,记账账户,多个用户可以在同一个账户下,一般为用户所在的组,如task1。
  • core:CPU核,单颗CPU可以具有多颗CPU核。
  • job:作业。
  • job step:作业步,单个作业(job)可以有多个作业步。
  • partition:分区(可理解为LSF、PBS等作业调度系统中的队列)。作业需在特定分区中运行,一般不同分区允许的资源不一样,比如单作业核数等。
  • qos:服务质量(Quality of Service),可以理解为用户可使用的CPU、内存等资源限制。
  • rank:秩,如MPI进程号。
  • tasks:任务数,单个作业或作业步可有多个任务,一般一个任务需一个CPU核,可理解为所需的CPU核数。
  • socket:CPU插槽,可以简单理解为CPU。
  • stdin:标准输入文件,一般指可以通过屏幕输入或采用<文件名方式传递给程序的文件,对应C程序中的文件描述符0。
  • stdout:标准输出文件,程序运行正常时输出信息到的文件,一般指输出到屏幕的,并可采用文件名定向到的文件,对应C程序中的文件描述符1。
  • stderr:标准出错文件,程序运行出错时输出信息到的文件,一般指也输出到屏幕,并可采用2>定向到的文件(注意这里的2),对应C程序中的文件描述符2。
  • <ENTITY>:实体
  • <SPECS>:明细、规格

二、Slurm 常用命令

命令功能介绍常用命令例子
sinfo显示分区和节点的状态sinfo
squeue显示作业状态squeue
srun用于交互式作业提交srun -n 2 -p p1-c1-2 hostname
sbatch用于批处理作业提交sbatch -n 2 job.sh
salloc用于分配模式作业提交salloc -p p1-c1-2
scancel用于取消已提交的作业scancel JOBID
scontrol用于查看和修改slurm配置和状态,包括查询节点信息或正在运行的作业信息scontrol show job JOBID

1. 查看集群状态 sinfo

sinfo 查看当前账号可使用的分区信息,如下图所示: Alt text

其中PARTITION表示分区,NODES表示节点数,NODELIST为节点列表,STATE表示节点运行状态。常见节点状态:

allocidlemixdowndrain
节点被分配给了job节点没有被分配给job,可用部分占用节点不可用节点不接受新job

sinfo的常用命令选项:

sinfo -N按每个节点一行的格式查看节点状态
sinfo -p partition_name显示指定分区的信息
sinfo -n node_name查看指定节点状态
sinfo -V显示版本信息
sinfo --help查看帮助说明

2. 查看作业信息 squeue

使用squeue 可以查看当前用户当前任务的运行状态 Alt textJOBID:作业号
ST:状态 (R:运行中;CF:配置中;PD:排队中) 如果 squeue 没有任务信息,说明任务已退出并且退出的时间已经超出清理时间。

squeue的常用命令选项:

squeue -j job_id根据指定的作业号查询作业信息
squeue -p partition_name按分区查询作业
squeue -t state指定要查看的作业的状态
squeue -w nodelist指定要显示的作业的节点列表
squeue --start以启动时间升序显示等待的作业的预期开始时间和分配的资源

3. 查看作业信息 scontrol

查看所有作业详细信息 scontrol show jobs 查看指定ID作业详情 scontrol show job [JOB_ID]Alt text

4. 查看历史作业使用资源 seff

查看历史作业实际使用的CPU、内存等资源以及实际运行时长。 用户可以根据历史作业资源信息指定新作业的时间和内存,准确的时间可能让用户的作业得到回填调度,从而得以提前运行。 Alt text

5. 取消作业 scancel

取消作业号为47433887的作业 Alt text