Skip to content

Slurm使用指南

1.Slurm简介

Slurm 是一个开源、容错和高度可扩展的集群管理和作业调度系统,适用于大型和小型 Linux 集群,它的主要优点在于其开源性质、容错能力和高度可伸缩的架构。与其他作业调度系统(如IBM的LSF和PBS)相比,Slurm的一个显著特点是它不需要修改操作系统内核,使其更易于集成和使用。在高性能计算(HPC)领域,Slurm被广泛用于管理集群资源和调度作业。不同于在登录节点上执行任务,Slurm允许用户将计算任务提交到专门的计算节点上。这样不仅提高了资源的使用效率,还保证了任务的有效管理和调度。

2.Slurm使用

Slurm概览

Slurm命令 功能
sinfo 查看集群分区状态
squeue 查看排队作业状态
sbatch 作业提交
scontrol 查看和修改作业参数
salloc 交互式运行作业
sacct 查看已完成作业报告
scancel 删除作业

2.1查看节点与分区

2.1.1 sinfo——查看集群状态

Slurm命令 功能
sinfo/sinfo-a 查看所有分区状态
sinfo -N 查看节点状态
sinfo -n node-name 查看指定节点状态
sinfo --help 查看所有选项

节点状态

alloc idle mix down drain
节点在用 节点可用 节点部分占用 节点下线 节点故障

2.1.2 squeue——查看作业信息

Slurm命令 功能
squeue 查看运行中的作业
squeue-l 查看作业中的细节信息
squeue -j jobid 查看作业信息
squeue --state=R 查看特定状态的作业
squeue --help 查看所有选项

作业状态

R PD CG CD
正在运行 正在排队 即将完成 已完成
  • 默认情况下squeue只会展示在排队或在运行的作业

2.2 提交作业

slurm 有三种模式提交作业,分别为交互模式,批处理模式,分配模式,这三种方式只是作业提交方式的区别,在管理、调度、机时计算同等对待。一般使用批处理模式提交作业。

2.2.1 交互模式——srun

  • srun命令同时用于资源分配和任务加载。
  • 在登录shell中执行srun命令时,该命令首先提交作业请求并等待资源分配。
  • 资源分配后,在所分配的节点上加载作业任务。

特点:提交命令后,等待作业执行完成之后返回命令行窗口,如果断开终端会导致任务中断。 例:交互式申请1个节点,每个节点启动的进程数为8,设置时间为3小时 命令:srun --nodes=1 --ntasks-per-node=8 --time=03:00:00 --pty bash -i

2.2.2 批处理模式——sbatch

  • 批处理模式是指用户编写作业脚本,指定作业需要的资源,提交后台执行作业
  • 作业提交后进入调度状态,在资源满足要求时,分配计算节点
  • 分配到计算资源后,自动在计算节点执行用户所编辑的脚本内的命令,sbatch 命令提交作业,终端断开连接作业依然在后台运行束,直到脚本执行结束作业自动退出 (或者在作业运行时执行 scancel 命令取消作业后作业自动停止)
  • 批处理作业的脚本为一个bash或sh文本文件
  • 计算开始后,工作目录中会生成以slurm-作业号.out文件,为作业的输出
Slurm命令 参数 含义
#SBATCH -n 1 --n=[count] 指定总进程数
#SBATCH -N 1 --nodes=[count] 申请节点数量
#SBATCH -c 4 --cpus-per-task=[count] 每个任务所需要的核心数,默认为1,多线程需更改
#SBATCH --cpus-per-task=4 --ntasks-per-node=[count] 每台节点上的进程数,默认为1,多进程需更改
#SBATCH -p cpu --partition=[name] 指定分区
#SBATCH -J name --job-name=[name] 指定作业名称
#SBATCH -t 5:00 --time=[time] 作业最大运行时长,超时即被终止
#SBATCH -a 0-2 --array=[indexes] 序列作业
#SBATCH -w cu[03-04] --nodelist=[names] 指定申请需要包括的节点
#SBATCH -o out.%j --output=[file_name] 输出文件
#SBATCH -e eer.%j --error=[file_name] 错误文件
  • 下面是一个test.slurm的作业脚本

#!/bin/bash
#SBATCH -J name
#SBATCH -p cpu
#SBATCH -N 1
#SBATCH --cpus-per-task=8
#SBATCH --mem 20G
#SBATCH -o out.%j
#SBATCH -e eer.%j
echo start at time `date +%F'  '%H:%M`
echo finish at time `date +%F'  '%H:%M`
* 提交任务:sbatch test.slurm

2.2.3 分配模式

  • 此模式支持用户在提交作业前抢占所需要的计算资源,此时开始计算计时。程序运行完成后作业不会自动停止,直到退出终端或 scancel 取消作业后作业才会停止,才会停止计费。
  • 终端断开作业会立刻停止,如果作业未运行完成时终端断开会导致任务运行中断。
  • 执行分为三步: (1) 提交资源分配请求,等待资源分配,资源分配到后开始计费。 (2) 执行用户指定的命令。 (3) 退出作业释放资源,停止计费。 例:申请cpu分区,两个节点,四个进程 命令:salloc -p cpu -N2 -n4 -w cu[03-05] /bin/bash

2.3 作业信息查询

2.3.1 查看和修改作业参数——scontrol

Slurm命令 功能
scontrol show job JOB_ID 查看排队或正在运行的作业信息
scontrol hold JOB_ID 暂停JOB_ID
scontrol release JOB_ID 恢复JOB_ID
scontrol update dependency=JOB_ID 添加作业依赖性,以便仅在JOB_ID完成后才开始作业
  • 注:scontrol hold 命令可使排队中尚未运行的作业暂停被分配运行,被挂起的作业将不被执行。scontrol release 命令可取消挂起。

2.3.2 查看作业记录——sacct

Slurm命令 功能
sacct -l 查看详细的账户作业信息
sacct --state=R 查看具有特定状态的作业信息
sacct -j JOB_ID 查看已完成作业
sacct --help 查看所有选项

2.3.3 终止作业——scancel

Slurm命令 功能
scancel JOB_ID 取消JOB_ID作业
scancel -u username 取消username用户的作业

3.Slurm使用技巧

3.1 Slurm插件

3.1.1 Slurm_tools

Slurm_tools

pestat

快速查看节点和任务信息

```

本文阅读量  次
本站总访问量  次
Authors: kk (85.47%), Wind (14.53%)