slurm和作业调度

一、slurm调度系统简介

2020-11-10 00:15:24 admin 13579

SLURM (Simple Linux Utility for Resource Management)是一种可用于大型计算节点集群的高度可伸缩和容错的集群管理器和作业调度系统,被世界范围内的超级计算机和计算集群广泛采用。SLURM 维护着一个待处理工作的队列并管理此工作的整体资源利用。它以一种共享或非共享的方式管理可用的计算节点(取决于资源的需求),以供用户执行工作。SLURM 会为任务队列合理地分配资源,并监视作业至其完成。如今,SLURM 已经成为了很多最强大的超级计算机上使用的领先资源管理器,如天河二号上便使用了 SLURM 资源管理系统。

常用命令

下面是一些最常用的 SLURM 命令:

  • sacct:查看历史作业信息

  • salloc:分配资源

  • sbatch:提交批处理作业

  • scancel:取消作业

  • scontrol:系统控制

  • sinfo:查看节点与分区状态

  • squeue:查看队列状态

  • srun:执行作业

常用环境变量(如何调度环境变量请点击这里

下表是 SLURM 环境变量(长变量):


变量说明
SLURM_NPROCS要加载的进程数
SLURM_TASKS_PER_NODE每节点要加载的任务数
SLURM_JOB_ID作业的 JobID
SLURM_SUBMIT_DIR提交作业时的工作目录
SLURM_JOB_NODELIST作业分配的节点列表
SLURM_JOB_CPUS_PER_NODE每个节点上分配给作业的 CPU 数
SLURM_JOB_NUM_NODES作业分配的节点数
HOSTNAME对于批处理作业,此变量被设置为批处理脚本所执行节点的节点名
短变量


%%

The character "%".

%A

Job array's master job allocation number.

%a

Job array ID (index) number.

%J

jobid.stepid of the running job. (e.g. "128.0")

%j

jobid of the running job.

%s

stepid of the running job.

%N

short hostname. This will create a separate IO file per node.

%n

Node identifier relative to current job (e.g. "0" is the first node of the running job)

This will create a separate IO file per node.

%t

task identifier (rank) relative to current job. This will create a separate IO file per task.

%u

User name.

%x

Job name.

The expression "%o" will be replaced with the task's offset within this range (e.g. a configured task rank value of "1-5" would have offset values of "0-4")

资源管理系统实体

SLURM 资源管理系统的管理对象包括:节点,分区,作业和作业步;如下图:

图片关键词

  • 节点:Node

    • 即指计算节点

    • 包含处理器、内存、磁盘空间等资源

    • 具有空闲、分配、故障等状态

    • 使用节点名字标识

  • 分区:Partition

    • 节点的逻辑分组

    • 提供一种管理机制,可设置资源限制、访问权限、优先级等

    • 分区可重叠,提供类似于队列的功能

    • 使用分区名字标识

  • 作业:Job

    • 一次资源分配

    • 位于一个分区中,作业不能跨分区

    • 排队调度后分配资源运行

    • 通过作业 ID 标识

  • 作业步:Jobstep

    • 通过 srun 进行的任务加载

    • 作业步可只使用作业中的部分节点

    • 一个作业可包含多个作业步,可并发运行

    • 在作业内通过作业步 ID 标识

    北极星集群节点说明(node)

    图片关键词

作业运行模式

SLURM 系统有三种作业运行模式:

  • 交互模式,以 srun 命令运行;

  • 批处理模式,以 sbatch 命令运行;

  • 分配模式,以 salloc 命令运行。

交互模式(请使用screen,screen用法请点击这里)

交互模式作业的使用过程为:

  1. 在终端提交资源分配请求,指定资源数量与限制;

  2. 等待资源分配;

  3. 获得资源后,加载计算任务;

  4. 运行中,任务 I/O 传递到终端;

  5. 可与任务进行交互,包括 I/O,信号等;

  6. 任务执行结束后,资源被释放。

例如使用 srun 申请 4 个进程生成一个作业步:

$ srun -n 4 ./example

批处理模式

批处理模式作业的使用过程为:

  1. 用户编写作业脚本;

  2. 提交作业;

  3. 作业排队等待资源分配;

  4. 分配资源后执行作业;

  5. 脚本执行结束,释放资源;

  6. 运行结果定向到指定的文件中记录。

下面给出作业脚本示例:

[test_pkuhpc@login12 s10_ctrl]$ cat job-org.srp
#!/bin/bash
#SBATCH -J sle000753
#SBATCH -p cn-long
#SBATCH -N 1 
#SBATCH -o sle000753_%j.out
#SBATCH -e sle000753_%j.err
#SBATCH --no-requeue
#SBATCH -A test_g1
#SBATCH --qos=testcnl
#SBATCH -c 1
pkurun  sleep 200

用以下命令提交批处理作业:

$ sbatch job-org.srp

作者:自可乐
链接:https://www.jianshu.com/p/e560b19dbd3e
来源:简书

部分修改和增加以适应北极星集群使用-fjchen

首页
资源&收费
集群
成果
问答