Slurm集群管理系统

Slurm集群管理系统

Slurm(Simple Linux Utility for Resource Management,https://slurm.schedmd.com/)是一个开源的、容错的、高度可扩展的集群管理和作业调度系统,适用于大型和小型高性能计算(HPC)集群。计算系统可利用Slurm对资源和作业进行管理,以避免相互干扰,提高运行效率。所有需运行的作业,无论是用于程序调试还是业务计算,都可以通过交互式并行 srun 、批处理式 sbatch 或分配式 salloc 等命令提交,提交后可以利用相关命令查询作业状态等。作为一个集群工作负载管理器,Slurm有三个关键功能。

  1. 将资源(计算节点)的排他或非排他访问权分配给用户,让他们在一定的时间内执行作业。
  2. 提供了一个框架,用于启动、执行和监控所分配节点上的工作(通常是一个平行作业)。
  3. 通过管理一个待处理作业的队列来仲裁对资源的争夺。

扫码关注微信公众号【生信F3】获取文章完整信息,分享生物信息学最新知识。

ShengXinF3_QRcode
ShengXinF3_QRcode

术语

  • 节点

    Hea Node:头节点、管理节点、控制节点,运行slurmctld管理服务的节点。

    Compute Node:计算节点,运行作业计算任务的节点,需运行slurmd服务。

    Login Node:用户登录节点,用于用户登录的节点,注意不要在登陆节点执行复杂任务。

    SlurmDBD Node:SlurmDBD节点、SlurmDBD数据库节点,存储调度策略、记账和作业等信息的节点,需运行slurmdbd服务。

    客户节点:含计算节点和用户登录节点。

  • 用户

    account:账户,一个账户可以含有多个用户。

    user:用户,多个用户可以共享一个账户。

    bank account:银行账户,对应机时费等。

  • 资源

    GRES:Generic Resource,通用资源。

    TRES:Trackable RESources,可追踪资源。

    QOS:Quality of Service,服务质量,作业优先级。

    association:关联。可利用其实现,如用户的关联不在数据库中,这将阻止用户运行作业。该选项可以阻止用户访问无效账户。

    Partition:队列、分区。用于对计算节点、作业并行规模、作业时长、用户等进行分组管理,以合理分配资源。不同的节点的特性和硬件属性不同,设置分区可以帮助用户更好确定节点的特点,进而选择最适合自己的节点进行运算。此外,如果集群中部分机器是私有的,那么设置分区可以使得只有部分用户能在这个分区提交作业。总的来说,分区(Partition)可看做 一系列节点的集合。

Slurm架构

Slurm由一个运行在每个计算节点上的slurmd守护进程(Slurm Daemon)和一个运行在管理节点上的中央slurmctld守护进程(Slurm Central Daemon)组成。各计算节点需启动slurmd守护进程,以便被作为远程shell使用:等待作业、执行作业、返回状态、再等待更多作业。

slurmdbd数据库守护进程(Slurm DataBase Daemon)可以将多个slurm管理的集群的记账信息记录在同一个数据库中。用户工具包含:

  • srun 运行作业;
  • scancel 终止排队中或运行中的作业;
  • sinfo 查看系统状态;
  • squeue 查看作业状态;
  • sacct 查看运行中或结束了的作业及作业步信息等命令。
  • sview 命令可以图形化显示系统和作业状态(可含有网络拓扑)。
  • scontrol 作为管理工具,可以监控、修改集群的配置和状态信息等。
alt

Slurm守护进程(Slurmd)管理的实体包括:

  • 节点(node),Slurm中的计算资源;
  • 分区(partition),将节点分组为逻辑(可能是重叠的)集合。
  • 作业(job),在特定时间内分配给一个用户的资源分配;
  • 作业步骤(job step),一个作业中的一组(可能是平行的)任务。

分区可以被认为是作业队列,每个队列都有各种各样的约束,如作业大小限制、作业时间限制、允许使用的用户等。按优先级排序的作业在一个分区内被分配节点,直到该分区内的资源(节点、处理器、内存等)被用完。一旦作业被分配到一组节点,用户就能在分配范围内以作业步骤的形式启动并行工作。例如,可以利用分配给作业的所有节点启动一个作业步骤,或者几个作业步骤可以相互独立的使用分配给作业的节点。

alt

Slurm用法

alt
alt

作业提交(Job Submission)

交互式作业任务 srun

srun 用于在Slurm管理的集群上提交并行作业任务。一般情况下,srun将首先创建一个资源分配(jobid),后在其中运行并行作业。srun 有多种选项来指定资源要求,包括:最小和最大的节点数、处理器数、使用或不使用的特定节点,以及特定的节点特性(内存、磁盘空间、某些需要的功能等)。一个作业可以包含多个作业步骤,在作业的节点分配范围内的独立或共享资源上顺序或平行执行。

# 请求在all分区上使用1个线程1G内存执行sh脚本
srun -p all -c 1 --mem 1G sh sleep_1.sh
# 请求在all分区上使用1个线程1G内存执行sleep命令
srun -p all -c 1 sleep 5s

参数详解:

-p, --partition=<name> 指定分区

-c, --cpus-per-task 请求为每个进程分配的 cpu 核数。

批处理提交任务 sbatch

sbatch 用于向集群提交一个批处理脚本。批处理脚本可以通过命令行上的文件名提供给sbatch,如果没有指定文件名,sbatch将从标准输入读入脚本。在将脚本成功转移到Slurm控制器并为其分配Slurm作业ID后,sbatch将立即退出。批处理脚本不一定会立即获得资源,在所需资源可用之前,它可能会在待处理作业队列中等待一段时间。这种方式类似于通过将 srun 指令压入后台执行:

$ sbatch myscript.sh
# 类似于
$ nohup srun -p partition1 sh myscript.sh &

默认情况下,标准输出和标准错误都被定向到名为“slurm-%j”的文件中。,其中“%j”被替换为作业分配号。sbatch 成功时返回 0,失败时返回错误代码。

通常来说,一个sbatch作业脚本分为3个部分:

  1. #!/bin/bash 第一行是脚本语言解释器的路径,一般选择 bash 作为解释器;

  2. (可省略)以 #SBATCH 引导的 Slurm 设置选项;

  3. 要运行的命令。

注意,我们应当把所有的 #SBATCH 开头的行放在一起,同时放在脚本的顶部。必须在所有的 #SBATCH 行结束之后才能写 bash code 和变量设置,一个典型的任务提交脚本如下:

#!/bin/sh
#SBATCH --time=1
srun hostname |sort

将该脚本投递到4个计算节点上执行:

$ sbatch -N4 myscript
salloc: Granted job allocation 65537
$ cat slurm-65537.out
host1
host2
host3
host4

常用设置选项如下:

#SBATCH -J, --job-name=<name> # 指定作业名
#SBATCH -n, --ntasks=<count> # Number of tasks to be launched
#SBATCH -N<minnodes[-maxnodes]> # 指定节点数
#SBATCH -p, --partition=<name> # 指定分区
#SBATCH --mem=<MB> # 指定单个或多个核心可用的整个内存池的大小
#SBATCH --time=minutes # 限定运行时间
#SBATCH -N<minnodes[-maxnodes]> # 请求节点数
#SBATCH -c, --cpus-per-task=<ncpus> # number of cpus required per task
#SBATCH -o, --output=<filename> # 指定用于批处理脚本标准输出的文件
#SBATCH -e, --error=<filename> # 指定用于批处理脚本标准错误输出的文件

作业管理(Job Management)

Slurm 提供了丰富的追踪任务的命令,这些命令有助于查看正在运行或已完成的任务状态。当用户认为任务异常时,可使用这些工具来追踪任务的信息。

sinfo 查询计算节点和分区状态

其中 STATE 常见的有

  • alloc,节点已经被分配给作业任务
  • down,节点当前不可用
  • drain,节点被管理员设置为退出服务
  • idle,节点当前空闲
  • mix,节点有部分计算资源已被分配,还有部分资源空闲可用

squeue 报告作业或作业步骤的状态。它有各种各样的过滤、排序和格式化选项。默认情况下,它按优先顺序报告正在运行的作业,然后按优先顺序报告待处理的作业。

squeue -u Username
squeue -p Partition
squeue -j JobIDs

squeue 显示的信息包括以下内容

  • JobID,作业编号
  • PARTITION,作业在哪个分区上运行
  • NAME,作业名称,默认是作业脚本的名字
  • USER,作业的所有者
  • ST,作业当前状态,详见 Job State Codes,常见的有
    • CG 作业正在完成
    • F 作业失败
    • PD 作业正在等待分配资源
    • R 作业正在运行
  • TIME,作业已运行时间
  • NODES,作业占用的计算节点数
  • NODELIST,作业占用的计算节点名
  • (REASON),作业正在等待执行的原因,详见 Job Reason Codes

显示的状态信息里包括了作业程序运行所在的计算节点名,使用 ssh 计算节点名 可以登录到计算节点。在计算节点上,使用 top 命令可以查看程序使用 CPU 的状况。

scancel 取消作业。先运行 squeue 命令查询作业编号数字 JobID ,然后运行以下命令取消作业:

scancel JOBID

scontrol 是用来查看和/或修改Slurm状态的管理工具。注意,许多 scontrol 命令只能以 root 身份执行。对于正在运行或排队的任务,可以使用

scontrol show job JobID

扫码关注微信公众号【生信F3】获取文章完整信息,分享生物信息学最新知识。

ShengXinF3_QRcode
ShengXinF3_QRcode

参考资料:

作业调度管理系统 http://docs.hpc.whu.edu.cn/files/whuhpcdocs.wiki/slurm_basic.html

Slurm资源管理与作业调度系统安装配置 http://hmli.ustc.edu.cn/doc/linux/slurm-install/slurm-install.html

SLURM 使用参考 https://bicmr.pku.edu.cn/~wenzw/pages/slurm.html

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/223890.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

憋了个大招_群发版

大家好&#xff0c;我是良许。 憋了个大招&#xff0c;兄弟们&#xff01;我花了两个月的时间&#xff0c;搭建了一个自己的网站啦&#xff5e; 不卖关子&#xff0c;网站链接为&#xff1a; www.lxlinux.net/e/ 网站首页截图如下&#xff1a; 这个网站全部都是关于嵌入式及…

【JavaWeb学习笔记】6 - Tomcat

项目代码 零、在线文档 Apache Tomcat 8 (8.0.53) - Documentation Index WEB开发 1. WEB,在英语中web表示网/网络资源(页面&#xff0c;图片,css,js)意思&#xff0c;它用于表示WEB服务器(主机)供浏览器访问的资源 2. WEB服务器(主机)上供外界访问的Web资源分为: 静态web…

动手学习深度学习-跟李沐学AI-自学笔记(3)

一、深度学习硬件-CPU和GPU 芯片&#xff1a;Intel or AMD 内存&#xff1a;DDR4 显卡&#xff1a;nVidia 芯片可以和GPU与内存通信 GPU不能和内存通信 1. CPU 能算出每一秒能运算的浮点运算数&#xff08;大概0.15左右&#xff09; 1.1 提升CPU利用率 1.1.1 提升缓存…

Vite4、Vue3、Axios 针对请求模块化封装搭配自动化导入(简单易用)

针对请求模块化封装搭配自动化导入&#xff08;简单易用&#xff09; 目标目录目标代码前提步入正题src / utils / index.jssrc /api / index.jssrc /api / request.jssrc /api / service.jssrc /api / utils.jssrc /api / modules / demo.js 自动化配置vite.config.jseslint 校…

2023中医药国际传承传播大会暨中医药图片和非遗艺术展隆重揭幕

由世界针灸学会联合会、中新社国际传播集团、中国新闻图片网、中国民族医药学会、中国针灸学会联合主办的“2023中医药国际传承传播大会”3日在广东省深圳市举办&#xff0c;“中医药国际传承传播图片展”与“非遗艺术展”在大会举办期间开展迎客。会议聚焦非遗健康、非遗传承等…

案例049:基于微信小程序的校园外卖平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

【vue】点击导航菜单切换局部页面,打开展示默认栏目,页面刷新等问题

非专业前端&#xff0c;局限性较高&#xff0c;有些问题看起来很小&#xff0c;但是初次接触很棘手&#xff0c;需要查找很多博客&#xff0c;内容也很杂。以下只是过程中总结下来的&#xff0c;要解决的就是标题中的三个问题。 这是我需要达成的效果。 1.第一个是进入导航菜单…

LeetCode:2646. 最小化旅行的价格总和(dfs + 树形dp C++、Java)

目录 2646. 最小化旅行的价格总和 题目描述&#xff1a; 实现代码与解析&#xff1a; DFS DP 原理思路&#xff1a; 2646. 最小化旅行的价格总和 题目描述&#xff1a; 现有一棵无向、无根的树&#xff0c;树中有 n 个节点&#xff0c;按从 0 到 n - 1 编号。给你一个整数…

团队git操作流程

项目的开发要求&#xff1a;&#xff08;1&#xff09;项目组厉员代码提交不少于20次 &#xff08;2&#xff09;项目组厉员每天提交不少于20次 &#xff08;3&#xff09;企业项目开发代码的每天的提交一般提交3-5次 &#xff08;4&#xff09;代码仓库的管理 git的基础操作流…

案例042:基于微信小程序的居住证申报系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

OpenCV-python numpy和基本作图

文章目录 一、实验目的二、实验内容三、实验过程Numpy1.NumPy 操作2.NumPy Ndarray 对象3.NumPy 基本类型4.NumPy 数组属性ndarray.ndimndarray.shapendarray.itemsizendarray.flags 5.NumPy 创建数组numpy.emptynumpy.zerosnumpy.ones 6.NumPy 从已有的数组创建数组numpy.asar…

【Python】Python读Excel文件生成xml文件

目录 ​前言 正文 1.Python基础学习 2.Python读取Excel表格 2.1安装xlrd模块 2.2使用介绍 2.2.1常用单元格中的数据类型 2.2.2 导入模块 2.2.3打开Excel文件读取数据 2.2.4常用函数 2.2.5代码测试 2.2.6 Python操作Excel官方网址 3.Python创建xml文件 3.1 xml语法…

HCL Domino 12系统管理员考试

大家好&#xff0c;才是真的好。 12月份的某一天&#xff0c;趁着风和日丽&#xff0c;天朗气清&#xff0c; 下了舍弃100多美金的狠心&#xff0c;在Pearson Vue官网上报了HCL Domino 12系统管理员考试的名 。时隔十五年后&#xff0c;骑着电动车风风火火地前往某一当地考试中…

AI Pika 生成进击的巨人动漫分镜案例

背景介绍 Pika 是一个使用 AI 生成和编辑视频的平台。它致力于通过 AI 技术使视频制作变得简单和无障碍。 Pika 1.0 是 Pika 的一个重大产品升级&#xff0c;包含了一个新的 AI 模型,可以在各种风格下生成和编辑视频,如 3D 动画&#xff0c;动漫&#xff0c;卡通和电影风格。…

pytorch中的transpose用法

注意&#xff1a;维数从0开始&#xff0c;0维 1维2维…,负数代表从右往左数&#xff0c;-1代表第一维&#xff0c;以此类推 import torch import numpy as np# 创建一个二维数组 arr torch.tensor([[[1, 2],[3, 4]],[[5, 6],[7, 8]]]) print("原始数组&#xff1a;"…

深入理解 Java 虚拟机(JVM)从入门到精通

目录 一、JVM内存结构1、堆&#xff08;Heap&#xff09;&#xff08;1&#xff09;特点&#xff08;2&#xff09;堆内存分配&#xff08;3&#xff09;晋升到老年代的方式&#xff08;4&#xff09;堆内存检验方式2、虚拟机栈&#xff08;VM Stack&#xff09;&#xff08;1&…

Vis.js教程(二):基础关系图实现

首先引用所需要的css和js文件 <link href"https://cdn.bootcdn.net/ajax/libs/vis-network/9.1.6/dist/dist/vis-network.min.css" rel"stylesheet"> <script src"https://cdn.bootcdn.net/ajax/libs/vis-network/9.1.6/standalone/umd/vis-…

python+requests+excel 接口测试

1、EXCEL文件接口保存方式&#xff0c;如图。 2、然后就是读取EXCEL文件中的数据方法&#xff0c;如下&#xff1a; 1 import xlrd2 3 4 class readExcel(object):5 def __init__(self, path):6 self.path path7 8 property9 def getSheet(self): 10 …

前端编码中快速填充内容--乱数假文

写前端页面的时候&#xff0c;如果要快速插入图片&#xff0c;可以使用 https://picsum.photos/ 详见笔者这篇博文&#xff1a; 工具网站&#xff1a;随机生成图片的网站-CSDN博客 可是&#xff0c;如果要快速填充文字内容该怎么做呢&#xff1f; 以前&#xff0c;我们都是…

【GAMES101】二维变换和齐次坐标

这几天都在抽空学OpenGL、敲leetcode和看games&#xff0c;这里留点笔记给以后复习 games101第一节课在吹水&#xff0c;第二节课讲了线性代数的入门知识&#xff0c;比较简单&#xff0c;这里稍微回顾一下重点&#xff0c;然后开始讲第三节课的二维变换和齐次坐标 目录 向量…