作业管理👉Slurm


1. Slurm作业管理系统

超算集群不能在登陆节点计算任务,需要提交到计算节点,怎么提交呢?用作业管理系统提交。Slurm就是其中一种。

Slurm(Simple Linux Utility for Resource Management)是一种可扩展的工作负载管理器,已被全世界的国家超级计算机中心广泛采用。 它是免费且开源的,根据GPL通用公共许可证发行。

2. 常用命令

std1@master:~# sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
GPU*         up   infinite     24    mix node[40-46,48,50-55,57-59,61-67]
GPU*         up   infinite      4   idle node[47,49,56,60]
CPU          up 1-12:00:00      2 drain* node[03-04]
CPU          up 1-12:00:00      1  alloc node02
作业脚本示例,假设脚本名称为sub_job.sh

#!/bin/bash
#SBATCH -o %j.out      #以作业号.out的格式输出运行结果
#SBATCH -J job_name    #这里改为作业的名称,在squeue结果中显示
#SBATCH -p GPU         #选择分区为GPU
#SBATCH --nodes=1      #申请一个计算节点
#SBATCH --ntasks=1     #1个CPU进程
#SBATCH --gres=gpu:1   #1张显卡

module load xxx        #加载某某环境变量

mpirun -np $SLURM_NTASKS xxx

用以下方式提交作业:

sbatch sub_job.sh
std1@master:~# squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
             55684       CPU job_name   hubukk PD       0:00      1 (Resources)
             54933       CPU job_name    gxy66  R 1-00:30:28      1 node02
             56434       GPU job_name    daigl  R       9:17      1 node46
             56439       GPU job_name   yixuan  R      29:50      1 node48
关键词含义备注
JOBID任务编号唯一编号,方便追溯
PARTITION计算分区名可用sinfo查询
NAME任务名#SBATCH -J job_name
USER用户名提交该任务的用户名
ST任务状态PD排队
R运行
S挂起
CG正在退出
TIME任务运行时间
NODES任务所占节点数
NODELIST(REASON)节点列表(排队原因)

1)确定任务编号

使用squeue命令查看任务编号

std1@master:~# squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
34217 CPU vasp_opt std1 R 36:21 1 node01
34232 CPU vasp_band std1 R 12:07 1 node02

例如想要取消node02节点上任务编号为34232的作业

2)取消任务

std1@master:~# scancel 34217

3)再次使用squeue命令确定任务已被取消

std1@master:~# squeue
           JOBID PARTITION       NAME     USER ST       TIME  NODES NODELIST(REASON)
           34217       CPU   vasp_opt     std1  R      37:45      1 node01