slurm学习笔记

Posted 静待花开s0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了slurm学习笔记相关的知识,希望对你有一定的参考价值。

slurm学习笔记(一)

官网:   https://slurm.schedmd.com/

中文文档:https://docs.slurm.cn/users/shou-ce-ye

学习笔记二:Slurm学习笔记(二)_种花家的奋斗兔的博客-CSDN博客

一、slurm简介

Slurm (Simple Linux Utility for Resource Management,https://slurm.schedmd.com/)是一种可用于大型计算节点集群的高度可伸缩和容错的集群管理器和作业调度系统,超级计算系统可利用Slurm进行资源和作业管理,以避免相互干扰,提高运行效率。Slurm 维护着一个待处理工作的队列并管理此工作的整体资源利用,它以一种共享或非共享的方式管理可用的计算节点(取决于资源的需求),以供用户执行工作,所有需运行的作业无论是用于程序调试还是业务计算均必须通过交互式并行srun、批处理式sbatch或分配式salloc等命令提交,提交后可以利用相关命令查询作业状态等,Slurm 会为任务队列合理地分配资源,并监视作业至其完成

二、slurm的三种作业模式

1. 交互式作业提交(采用srun命令提交):

资源分配任务加载两步均通过srun命令进行:

当在登录shell中执行srun命令时, srun首先向系统提交作业请求并等待资源分配,然后在所分配的节点上加载作业 任务

采用该模式,用户在该终端需等待任务结束才能继续其它操作,在作业结束前,如果提交时的命令行终端断开,则任务终止。一般用于短时间小作业测试。

2. 批处理作业(采用sbatch命令提交,最常用方式):

对于批处理作业(提交后立即返回该命令行终端,用户可进行其它操作)

使用sbatch命令提交作业脚本,作业被调度运行后,在所分配的首个节点上执行作业脚本。在作业脚本中也可使用srun命令加载作业任务。提交时采用的命令行终端终止,也不影响作业运行

3. 实时分配模式作业(采用salloc命令提交):

分配作业模式类似于交互式作业模式批处理作业模式的融合。

用户需指定所需要的资源条件,向资源管理器提出作业的资源分配请求。提交后,作业处于排队, 当用户请求资源被满足时,将在用户提交作业的节点上执行用户所指定的命令, 指定的命令执行结束后,运行结束,用户申请的资源被释放。在作业结束前,如果提交时的命令行终端断开,则任务终止。典型用途是分配资源并启动一个shell, 然后在这个shell中利用srun运行并行作业。

三、基本命令

sacct: 显示激活的或已完成作业或作业步的记账信息。

salloc:为需实时处理的作业分配资源,典型场景为分配资源并启动一个shell,然 后用此shell执行srun命令去执行并行任务。

sbatch:提交作业脚本使其运行。此脚本一般也可含有一个或多个srun命令启动并行任务。

scancel:取消排队或运行中的作业或作业步。

scontrol:显示或设定Slurm作业、队列、节点等状态。

sinfo:显示队列或节点状态。

squeue:显示队列中的作业及作业步状态。

srun:实时交互式运行并行作业,一般用于段时间测试,或者与sallcoc及sbatch结合。

1. 查看队列、节点信息

sinfo可以查看系统存在什么队列、节点及其状态。

sinfo:

sinfo ­-l

Mon Sep 21 10:07:48 2020

PARTITION AVAIL TIMELIMIT   JOB_SIZE ROOT OVERSUBS     GROUPS NODES       STATE NODELIST

debug*       up   infinite 1-infinite   no       NO       all     1       mixed gpu01

debug*       up   infinite 1-infinite   no       NO       all     5       idle gpu[02-06]

control     up   infinite 1-infinite   no       NO       all     1       down* mu01

       sinfo -s将显示分区汇总信息:

PARTITION AVAIL TIMELIMIT   NODES(A/I/O/T) NODELIST

debug*       up   infinite         1/5/0/6 gpu[01-06]

control     up   infinite         0/0/1/1 mu01

sinfo --long --partition=debug将显示debug分区的更完整的信息:

Mon Sep 21 10:12:31 2020

PARTITION AVAIL TIMELIMIT   JOB_SIZE ROOT OVERSUBS     GROUPS NODES       STATE NODELIST

debug*       up   infinite 1-infinite   no       NO       all     1       mixed gpu01

debug*       up   infinite 1-infinite   no       NO       all     5       idle gpu[02-06]

       sinfo --states=mixed将显示状态为mixed的节点信息:

PARTITION AVAIL TIMELIMIT NODES STATE NODELIST

debug*       up   infinite     1   mix gpu01

control     up   infinite     0   n/a

      

也可以自定义查询的格式:

sinfo -o "|%20N | %10c | %10m | %25f | %10G| %10S|"

字段解释:

PARRITION:节点所在分区

AVAIL:分区状态,up标识可用,down标识不可用

TIMELIMIT:程序运行最大时长,infinite表示不限制,如果限制格式为days-houres:minutes:seconds

NODES:节点数

NODELIST:节点名列表

STATE:节点状态,可能的状态包括:

           - allocatedalloc :已分配

           - completingcomp:完成中

           - down:宕机

           - draineddrain:已失去活力

           - fail:失效

           - idle:空闲

           - mixed:混合,节点在运行作业,但有些空闲CPU核,可接受新作业

           - reservedresv:资源预留

           - unknownunk:未知原因

注意:如果状态带有后缀*,表示节点没有响应

更多信息参见:https://slurm.schedmd.com/sinfo.html

以上是关于slurm学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

当程序在 SLURM 集群上学习时收到 TIME LIMIT 时保存模型权重

如何使用同一个 GPU 设备在 SLURM 中定义多个 gres 资源?

基于HPC场景的集群管理系统(slurm系统初相识)

基于HPC场景的集群管理系统(slurm系统初相识)

Slurm任务调度系统部署和测试

Test SLURM