Slurm--资源管理系统

news2024/9/21 19:00:06

Slurm–资源管理系统

  • 开源软件 SLURM
    • 全称 Simple Linux Utility for Resource Management
    • 开源分布式资源管理软件
    • 可用于大型计算节点集群的高度可伸缩的集群管理器和作业调度系统
  • 提供高效的资源与作业管理
    • 状态监控
    • 资源管理
    • 作业调度
  • 是用户使用计算资源的接口
    • 作业提交 / 运行
    • 任务加载
    • 作业控制
    • 状态查看

主要组成部分

  • 控制进程
  • 记账存储进程
  • 节点监控进程
  • 作业管理进程
  • 命令工具

控制进程: Slurmctld

  • 运行在管理节点
  • 是资源管理系统的控制中枢
  • 记录节点状态
  • 进行分区管理
  • 进行作业管理、作业调度、资源分配

记账存储进程: Slurmdbd

  • 运行在管理节点
  • 将作业信息保存到数据库
  • 记录用户、帐号、资源限制、QOS 等信息

节点监控进程: Slurmd

  • 运行在每个计算节点
  • 监控节点状态,并向控制进程报告
  • 接收来自控制进程与用户的请求并进行处理

作业管理进程: Slurmstepd

  • 加载计算任务时由节点监控进程启动
  • 管理一个作业步的所有任务
  • 启动计算任务进程
    • 标准 I/0 转发
    • 信号传递
    • 任务控制
    • 资源使用信息收集

命令工具

  • sacct:查看历史作业信息
  • salloc: 资源分配
  • sbatch: 提交批处理作业
  • scance1: 取消作业
  • scontrol: 系统控制
  • sinfo: 节点与分区状态查看
  • squeue: 队列状态查看
  • srun:任务加载

实体: 管理对象

  • 节点
  • 分区
  • 作业
  • 作业步

节点: Node

  • 即指计算节点
  • 包含处理器、内存、磁盘空间等资源
  • 具有空闲、分配、故障等状态
  • 使用节点名字标识,如 node1

分区: Partition

  • 节点的逻辑分组
  • 提供一种管理机制,可设置资源限制、访问权限、优先级等
  • 分区可重叠, 提供类似于队列的功能
  • 使用分区名字标识, 如 MIC/GPU/CPU
  • 系统有一个默认分区,带标记 - batch

作业: Job

  • 一次资源分配
  • 位于一个分区中,作业不能跨分区
  • 排队调度后分配资源运行
  • 通过作业 ID 标识,如 123

作业步: Jobstep

  • 通过 srun 进行的任务加载
  • 作业步可只使用作业中的部分节点
  • 一个作业可包含多个作业步,可并发运行
  • 在作业内通过作业步 ID 标识,如 123.0

关联: Association

  • 关联是系统实施资源限制的一个基础概念
  • 由〈cluster, account, user, partition〉构成的四元组
  • 每个作业都有对应的关联,因为作业都是由用户使用对应帐号提交到系统的一个 分区中

帐号、用户的资源限制,在实现上最终以关联进行记录

  • 节点数量
  • 作业数量
  • 时间限制

资源管理系统使用

使用 sinfo命令查看节点状态

sinfo

sinfo -t 状态值(comp, drain…)

节点基本状态值

  • UNKNOWN: 末知, unk
  • IDLE: 空闲, idle
  • ALLOCATED: 已分配, alloc
  • DOWN: 故障, down

状态标识

  • DRAIN: 不再分配,drain/drng
  • COMPLETING: 有作业正在退出, comp
  • NO_RESPOND:无响应, *

使用 sinfo命令查看分区状态

  • 分区名
  • 分区状态
    • UP、DOWN、DRAIN、 INACTIVE
    • DEFAULT/*
  • 运行时间限制
  • 查看指定分区
 sinfo -p 分区名

使用scontrol命令查看节点详细信息

scontrol show node node01

使用scontrol命令查看分区属性

  • 节点列表
  • 状态: UP/DOWN
  • 隐藏分区
  • 访问权限
  • Root0nly
  • AllowGroups
  • 资源限制
  • 节点范围
  • 运行时间
  • 优先级
  • 共享节点
  • 默认分区

作业 – 资源分配请求

  • 提交:申请资源
  • 排队:等待资源
  • 运行: 分配资源 (无论是否执行程序)
  • 挂起:暂时释放资源
  • 结束:释放资源

作业运行模式

交互模式-适合调试场景–srun
批处理模式一作业提交建议场景–sbatch
分配模式一满足特殊需求场景–salloc

只是用户使用方式区别–管理、调度、记账时同等对待

交互模式 - srun

  1. 在终端提交资源分配请求,指定资源数量与限制
  2. 等待资源分配
  3. 获得资源后,加载计算任务
  4. 运行中,任务I/0传递到终端
  5. 可与任务进行交互: I/0,信号
  6. 任务执行结束后,资源被释放
    一个srun (一次资源分配) 生成一个作业步(一次任务加载)
srun -p cpu -n 1 python test.py

批处理模式 - sbatch

批处理模式

  1. 用户编写作业脚本
  2. 提交作业
  3. 作业排队等待资源分配
  4. 分配资源后,在首节点加载执行作业脚本
  5. 脚本执行结束,释放资源
  6. 运行结果定向到指定的文件中记录

脚本中可通过srun加载计算任务

  • 一个作业可使用多个srun生成多个作业步
  • 也可以不包含srun命令,这样脚本只会在首节点运行
#!/bin/sh
#SBATCH -p cpu  -N 4 -t 100 -n 16
srun -n 16 hostname

sbatch satch_job.sh


分配模式 - salloc

分配模式

  1. 提交资源分配请求
  2. 作业排队等待资源分配
  3. 执行用户指定的命令
  4. 命令执行结束,释放资源

交互模式作业与批处理模式作业的结合

  • 一个作业可包含多个作业步
  • 可通过srun加载计算任务
  • 可与任务进行交互
  • 命令在用户提交作业的节点上执行
  • 便于指定明确的节点进行集中操作的场景

通过salloc命令运行

salloc -p cpu -N2 -n4 -w node[40-41] /bin/bash
srun -n4 hostname

  • 节点数量: -N, --nodes min[-max]

    • 如末指定, 则根据其他需求, 分配足够的节点
  • 处理器数量: 由几个参数组合决定

    • 作业要加载的任务数 -n, --ntasks, 不指定则默认每个节点一个
    • 每个任务需要的处理器数 -c, --cpus-per-task, 默认为 1
    • 系统将根据参数计算, 分配足够处理器数目的节点
  • 节点与处理器数目约束

  • 运行时间: -t, --time

  • 单位为分钟

  • 超出时间限制的作业将被终止

  • 应尽可能准确估计:调度时用此估计时间进行backfi11判断与优先级设置

  • 分区: -p,–partition

    • 从指定分区中分配节点
    • 使用指定分区的资源限制 / 访问权限进行检查
    • 作业必须位于一个分区中, 不能跨分区
  • 节点:

    • -w, --nodelist : 指定分配给作业的资源中至少要包含的节点
    • -F, --nodefile:指定分配给作业的资源中至少要包含文件中定义的节点(此选 项仅对salloc和 sbatch可用)
      • x, --exclude : 指定分配给作业的资源中不要包含的节点
    • –contiguous : 表示作业需要被分配连续的节点
  • 作业名字

    • 默认: 加载的程序 / 批处理脚本文件名 / 执行的命令
    • -J, --job-name: 指定名字
sbatch -p cpu -N 4 job.sh 
sbatch -p cpu -N 8 -j myjob job.sh

  • 工作目录
    • -D, --chdir: 指定任务/脚本/命令的工作目录
    • 默认: srun/sbatch/salloc 的工作目录
sbatch -p batch -N 4 -D /batch/test/devel/bin job.sh
  • 启动时间

    • -begin: 作业在指定时间之后才能运行
  • 依赖关系

    • -d,–dependency:指定作业的依赖关系
      • after: jobid: 在指定作业开始之后
      • afterok: jobid: 在指定作业成功结束之后
      • afternotok: jobid: 在指定作业不成功结束之后
      • afterany: jobid: 在指定作业结束之后
    • 满足依赖关系的作业才能运行
    • 不可能满足依赖关系的作业将被取消
  • 节点故障容忍

    • 默认:节点失效时将终止作业
      • 失效节点变为 DOWN 状态
      • 主要针对 MPI 程序的执行, 及时释放资源
    • -k, --no-kill: 容忍节点故障
      • 程序自身容错
      • 正在执行的作业步失败后,继续运行后续作业步
  • -l,–label选项

    • 区分作业步的标准输出或标准错误由哪个任务生成
srun -p cpu -N 4 hostname
srun -l -p cpu -N 4 hostname

作业状态查看

  • 常用查询选项
    • -p: 指定分区
    • -u: 指定用户
    • -t : 指定状态
    • -w:指定包含的节点
    • -j: 指定作业id号
    • -J : 指定作业名

使用scontrol命令查看作业详细信息

scontrol show job 967

使用 squeue与scontrol命令查看作业步

squeue -s

scontrol show steps 967.0

  • 作业步仅在运行时存在, 运行结束后从系统中删除
  • 使用 sacct 命令可查看历史作业步信息

使用sacct命令查看历史作业信息

  • -S, --starttime: 查询开始时间
  • -E, --endtime: 查询截止时间
  • -s, --state: 指定查询的作业状态列表
  • -e, --helpformat: 查看可支持定制输出的信息项
  • -o, --format: 定制输出信息项列表
sacct --starttime=2023-07-10T12:00:00 --endtime=2023-07-23T12:00:00 --state=completed

排队状态原因

  • Priority:优先级不够高
  • Dependency:作业的依赖关系末满足
  • Resources:当前可用资源不能满足作业需求
  • PartitionNodeLimit:作业请求的节点数超过分区的作业节点数限制
  • PartitionTimeLimit:作业请求的运行时间超过分区作业运行时间限制
  • PartitionDown:作业所在的分区处于 DOWN 状态
  • JobHeld:作业被阻止调度
  • BeginTime:作业请求的启动时间还末到达
  • AssociationJobLimit: 关联的作业限制已满
  • AssociationResourcelimit: 关联的资源限制已满
  • AssociationTimeLimit: 关联的运行时间限制已满
  • ReqNodeNotAvai1:作业请求的节点不可用

取消作业

scancel 命令取消作业 / 作业步

  • 排队作业: 标记为 CANCELLED 状态
  • 运行 / 挂起作业: 终止所有作业步; 标记为 CANCELLED 状态; 回收资源
  • 使用 scancel之后, 系统将定期重复发送 SIGKILL 到作业步任务, 直到其退出
  • 显示为 CG 状态的作业已经结束, 不用再取消
scancel 123456
scancel 789.1
scancel -u test
scancel -p debug -t pd

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

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

相关文章

【Vue3+Ts+Vite】配置页面切换过渡动画

文章目录 一、先看效果二、全量代码三、注意事项虽然Vue3支持 template 下存在多个根节点,但是 transition 过渡动画并不支持,要实现过渡动画的页面,都需要有一个根标签包裹页面内容,否则就会报如下警告: 四、相关文章友链本专栏记…

Vue 组件和计算属性(二)

一、组件 1.1 什么是组件 组件是可复用的 Vue 实例,说白了就是一组可以重复使用的模板,跟 JSTL 的自定义标签、Thymeleaf 的 th:fragment 等框架有着异曲同工之妙。通常一个应用会以一棵嵌套的组件树的形式来组织。 例如,你可能会有页头、侧…

vue + element UI Table 表格 利用插槽是 最后一行 操作 的边框线 不显示

在屏幕比例100%时 el-table添加border属性 使用作用域插槽 会不显示某侧的边框线,屏幕比例缩小或放大都展示 // 修复列的 边框线消失的bug thead th:not(.is-hidden):last-child {right:-1px;// 或者//border-left: 1px solid #ebeef5; } .el-table__row{td:not(.i…

Docker 容器转为镜像

# 容器转成镜像并指定镜像名称与版本号 # commit 时原有容器挂载的目录是不会被写入到新的镜像中去的,数据卷相关的都不会生效 # 但是 root 目录下新建的内容会写入到新的镜像中去 $ docker commit 容器ID 新镜像名称:版本号 $ docker commit -m"描述信息"…

2023年电赛---运动目标控制与自动追踪系统(E题)OpenMV方案

前言 (1)废话少说,很多人可能无法访问GitHub,所以我直接贴出可能要用的代码。此博客还会进行更新,先贴教程和代码 (2)视频教程: https://singtown.com/learn/49603/ (3&a…

大数据技术之Clickhouse---入门篇---数据类型、表引擎

星光下的赶路人star的个人主页 今天没有开始的事,明天绝对不会完成 文章目录 1、数据类型1.1 整型1.2 浮点型1.3 布尔型1.4 Decimal型1.5 字符串1.6 枚举类型1.7 时间类型1.8 数组 2、表引擎2.1 表引擎的使用2.2 TinyLog2.3 Memory2.4 MergeTree2.4.1 Partition by分…

华为OD机试真题 JavaScript 实现【取出尽量少的球】【2023Q1 200分】,附详细解题思路

目录 一、题目描述游戏规则如下:限制规则一:限制规则二: 二、输入描述三、输出描述四、解题思路五、JavaScript算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 刷的越多,抽中…

《golang设计模式》第一部分·创建型模式-04-抽象工厂模式(Abstract Factory)

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 1.1 角色 AbstractFactory(抽象工厂):它声明了一组用于创建产品的方法,每一个方法对应一种产品。ConcreteFactory(具体工厂&#xf…

phpstudy 进行 composer 全局配置

背景 因为注意到,使用 phpStudy 进行环境搭建时,有时需要使用 composer 每次都需要查找资料进行配置, 在此进行记录笔记,方便有需要的道友借鉴 配置 版本:composer1.8.5(phpStudy8 当前只能安装这一个版本…

CAD批量转PDF的简单方法,三个步骤轻松完成转换

PDF格式的图纸可以在各种设备和软件上打开,因为PDF是一种跨平台的格式,不受操作系统或软件版本的影响。这意味着CAD图纸可以更容易地在不同的设备和操作系统之间传输,而无需担心兼容性问题,可以使图纸更易于共享、浏览和保护&…

Vue进阶(幺叁陆): transition标签实现页面跳转动画

文章目录 一、前言二、方案实现三、延伸阅读 transition标签四、拓展阅读 一、前言 在Vue项目开发过程中,应用全家桶vue-router实现路由跳转,且页面前进、后退跳转过程中,分别对应不同的切换动画。vue-router 切换页面时怎么设置过渡动画&am…

Pytorch深度学习-----神经网络之非线性激活的使用(ReLu、Sigmoid)

系列文章目录 PyTorch深度学习——Anaconda和PyTorch安装 Pytorch深度学习-----数据模块Dataset类 Pytorch深度学习------TensorBoard的使用 Pytorch深度学习------Torchvision中Transforms的使用(ToTensor,Normalize,Resize ,Co…

Doccano工具安装教程/文本标注工具/文本标注自己的项目/NLP分词器工具/自然语言处理必备工具/如何使用文本标注工具

这篇文章是专门的安装教程,后续的项目创建,如何使用,以及代码部分可以参考这篇文章: NER实战:(NLP实战/命名实体识别/文本标注/Doccano工具使用/关键信息抽取/Token分类/源码解读/代码逐行解读)_会害羞的杨卓越的博客-…

【uniapp 样式】使用setStorageSync存储历史搜索记录

<template><view><view class"zhuangbox u-flex"><u--inputplaceholder"请输入关键字搜索"border"surround"shapecircleprefixIcon"search"prefixIconStyle"font-size: 22px;color: #909399"v-model&q…

vSphere ESXI 7.0 网络规划

ESXi 网络 业务网络、Vmotion&#xff08;漂移&#xff09;、管理网络、存储网络 ESXi 管理网络 vCenter Server 管理网络 vCenter Server SSO域名 Single Sign-on域名&#xff1a;在没有指定的情况下&#xff0c;默认填写 vsphere.local VMware vSphere整体解决方案和网络…

uniapp点击图片放大预览

阐述 有些时候我们在用uniapp显示图片时&#xff0c;有的不宜全部显示到屏幕上&#xff0c;uniapp提供了一个非常好用的api。 实现方式如下&#xff1a; <template><view class"content"><image class"logo" src"/static/images/a.…

Nacos 持久化实例 删不掉问题( Please unregister instance first )

文章目录 一、报错现象&#xff1a;二、问题解决过程&#xff1a;三、最终解决方案&#xff1a;四、注销实例API&#xff1a; &#x1f50e;请直接看第三部分&#x1f50e; 一、报错现象&#xff1a; 二、问题解决过程&#xff1a; 尝试将服务下线&#xff1a; 再次点击删除按…

如何在水务行业运用IPD?

水务行业&#xff0c;包括自来水的生产和供应、水务及其再生利用和其他水的处理、利用与分配。水务行业主要环节分布包括原水生产与供应、自来水生产和供应、污水收集、水务、中水与再生水利用等。 我国水务行业的产业链包括上游、中游、下游。上游包括科研和规划设计、设备及材…

英雄的力量【力扣2681】

1、解题思路 将数组按从大到小的顺序排列&#xff0c;i<j&#xff0c;那么以nums[i]开始&#xff0c;nums[j]结尾&#xff0c;i----j中的任意数&#xff0c;组成的排列&#xff0c;其英雄力量都是nums[i]*nums[i]*nums[j]&#xff1b; 若ij&#xff0c;则只有一种排列组合…

SOC FPGA之流水灯设计

一、DS-5简介 Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包&#xff0c;为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 1.1 DS-5 eclipse破解 首先下载破解器 然后进入cmd运行&#xff0c;进入到破解器所在文…