Slurm集群管理系统

news2024/12/23 13:18:26

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 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小团队是否值得购买企业网盘的策略分析

企业网盘的风越来越大&#xff0c;对于小团队而言&#xff0c;真的值得购入企业网盘吗&#xff1f;在购买企业服务之前&#xff0c;首先需要考虑的就是自身的需求。 您可以根据以下几个方面判断自己的团队是否真的需要购买企业网盘&#xff1f; 1、办公需求&#xff1a;企业网…

MES管理系统在生产计划排程中的应用与价值

随着制造业市场竞争的日益激烈和客户需求的多样化&#xff0c;传统的生产计划排程方式已经无法满足企业的需求。为了提升生产计划的效率和准确性&#xff0c;越来越多的企业开始引入MES管理系统这一先进的工具。那么&#xff0c;MES管理系统到底是什么&#xff0c;又是如何解决…

ES6之Map对象

ES6提供了 Map数据结构。它类似于对象&#xff0c;也是键值对的集合。但是“键”的范围不限于字符串&#xff0c;各种类型的值&#xff08;包括对象&#xff09;都可以当作键。 创建方法 let m new Map()console.log(m)Map的方法 1.set( ) 添加元素 接收两个参数&#xff0c…

Unity使用打成图集的Sprite作为模型贴图使用的问题

大家好&#xff0c;我是阿赵。   有时候用Unity引擎做项目的时候&#xff0c;会遇到这样的需求&#xff0c;美术做了一些模型或者特效&#xff0c;然后策划想在游戏运行的时候&#xff0c;读取一些游戏图标放在特效或者模型上面当做贴图使用。   这个需求实现起来很简单&am…

Vcenter 6.7 VCSA证书过期问题处理

1. 故障现象 2022年10月25日&#xff0c;登陆VC报错。 按照报错信息&#xff0c;结合官方文档&#xff0c;判断为STS证书过期导致。 vCenter Server Appliance (VCSA) 6.5.x, 6.7.x or vCenter Server 7.0.x 在/var/log/vmware/vpxd-svcs/vpxd-svcs.log看到类似报错: ERRO…

【面试题】 你知道怎么调试线上代码吗?

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 这篇文章来分享下如何调试线上的代码 什么时候需要调试线上的代码呢&#xff0c;当线上代码出现 bug 的时候&#xff0c;需要定位问题&#xff0c;就需…

可视化监管云平台EasyCVR宠物粮食食品厂智能视频监控方案

由于我国养宠物群体的不断膨胀&#xff0c;宠物市场也占据了经济的很大一部分&#xff0c;宠物做为人类的好朋友&#xff0c;可以给人们带来极高的精神抚慰&#xff0c;作为“毛孩子”家长&#xff0c;爱宠人士自然不会亏待自家宠物&#xff0c;都会选择最好的口粮以供宠物食用…

Mysql主从集群搭建——基于docker-compose一键部署

搭建初衷 本身自己就是开发这类应用的工作者&#xff0c;一个私有库还是很有必要的。无论是公司项目还是私人项目都可以用到&#xff0c;不用担心忘记同步导致的数据丢失统一管理所有docker应用的数据&#xff08;如果容器可以连接mysql的话&#xff09;也方便随时修改数据结构…

FTP协议(PORT和PASV模式)

目录 FTP协议基本概念 PORT主动模式工作流程 PORT工作过程 PORT工作报文 PASV被动模式工作流程 PASV工作过程 PASV工作报文 FTP协议基本概念 FTP文件传输协议&#xff0c;用于在互联网上进行文件传输&#xff0c;基于C/S架构 FTP的连接模式 FTP采用双TCP连接方式 控制连…

vue3项目中前端导出word文档和导出excel文档

一、导出word文档 参考文章https://blog.csdn.net/qq_53722480/article/details/130017092 1、使用到的包如下&#xff1a; "docxtemplater": "^3.42.4", "file-saver": "^2.0.5", "jszip-utils": "^0.1.0", &q…

分布式锁常见实现方案

分布式锁常见实现方案 基于 Redis 实现分布式锁 如何基于 Redis 实现一个最简易的分布式锁&#xff1f; 不论是本地锁还是分布式锁&#xff0c;核心都在于“互斥”。 在 Redis 中&#xff0c; SETNX 命令是可以帮助我们实现互斥。SETNX 即 SET if Not eXists (对应 Java 中…

前端Object的基础使用

Object.assign() 通过复制一个或多个对象来创建一个新的对象。旧对象旧对象…新对象 console.log(学习让人进步, Object.assign({name:zhangsan},{age:18})) Object.create() 使用指定的原型对象和属性创建一个新对象。旧对象新属性新对象 这个是把属性挂到原型上&#xff0c;…

软件产品研发过程 - 二、概要设计

软件产品研发过程 - 概要设计 相关系列文章 软件产品研发管理经验总结-管理细分 软件研发管理经验总结 - 事务管理 软件研发管理经验总结 - 技术管理 软件产品研发过程 - 二、概要设计 目录 软件产品研发过程 - 概要设计一、概要设计概述二、概要设计过程1、模块概述2、应用场景…

设计字体必备工具推荐:5款好用的字体设计软件

字体设计作为设计中的一个重要模块&#xff0c;如果字体软件选择正确&#xff0c;将给字体设计工作带来极大的便利&#xff0c;易于使用的字体设计软件&#xff0c;可以创造出优秀的排版设计。在日常工作中&#xff0c;设计师可能会在字体网站上下载字体&#xff0c;然后安装字…

记录 | linux静态库和动态库的理解

hello.cpp&#xff1a; #include <cstdio>void hello() {printf("Hello, world!\n"); }main.cpp&#xff1a; #include <cstdio>void hello();int main() {hello();return 0; }静态库编译配置&#xff1a; cmake_minimum_required(VERSION 3.12) proj…

【AI数字人-论文】DINet论文解读

DINet 方法形变修补损失函数perception lossGAN lossLip-sync loss 实现细节参考 如下图所示&#xff0c;人脸视觉配音&#xff08;Face visually dubbing&#xff09;旨在根据输入的驱动音频同步源视频中的嘴型&#xff0c;同时保持身份和头部姿势与源视频帧一致。然而在少样本…

DTCC2023大会-基于eBPF观测数据库-附所有PPT下载链接

DTCC2023大会-基于eBPF观测数据库-附所有PPT下载链接 8月16日—18日,第14届中国数据库技术大会(DTCC-2023)在北京国际会议中心举行。聚好看在大会上首次发布基于eBPF观测数据库性能的产品DBdoctor&#xff0c;受到了业界广泛的关注。近期几位业内同仁过来要大会的PPT&#xff…

Shopify二次开发之五:元字段(Metafields)

解释 Shopify Metafields 是一种用于存储和管理自定义数据的功能。它们允许商户在商城中的产品、订单、客户、Page等对象上添加自定义字段&#xff0c;以满足特定业务需求。 操作 1、添加Custom data 可以为Products、Pages添加自定义数据&#xff0c;比如选择了Pages&#…

使用pandas制作图表

数据可视化对于数据分析的重要性不言而喻&#xff0c;一个优秀的图表有足以一眼就看出关键所在。pandas利用matplotlib实现绘图。能够提供各种各样的图表功能&#xff0c;包括: 单折线图多折线图柱状图叠加柱状图水平叠加柱状图直方图拆分直方图箱型图区域块图形散点图饼图多子…