SLURM作业管理系统之3种作业提交方式

文章目录

    • 前言
    • 定义
    • 基本概念
    • 三种作业提交模式
      • 1. 批处理作业(采用 sbatch 命令提交)
      • 2. 交互式作业提交(采用 srun 命令提交)
      • 3. 分配模式作业(采用 salloc 命令提交)
    • 管理节点部署
    • Slurm常用命令

SLURM

前言

在高性能计算(HPC)领域,作业调度系统是关键组件之一。IBM的LSF、澳汰尔的PBS Professional,以及开源的Slurm是目前市场上常见的几种作业调度系统。本文将重点介绍开源调度系统Slurm的三种作业提交方式异同及特点,使用举例等。

定义

Slurm(Simple Linux Utility for Resource Management,官方网站:http://slurm.schedmd.com/ )是一款开源的资源管理和作业调度系统,专为Linux超算集群设计。它不仅具有容错能力,还能够高效管理从小型到大型的集群资源。作为超级计算系统的核心组成部分,Slurm的主要功能是对资源进行管理和作业调度,以此确保作业间不会相互干扰,从而提高整体运行效率。在Slurm环境中,所有需要运行的作业——无论是程序调试还是业务计算——都必须通过诸如交互式并行的srun、批处理式的sbatch或分配式的salloc等命令进行提交。作业提交后,用户可以通过相关命令查询作业的状态和其他相关信息。

基本概念

Slurm通过使用分区(partition)的机制来对资源进行有效管理和分类,包括CPU、内存和网络等关键资源。这种机制允许系统将不同需求的作业分配到适合的计算节点上。在使用Slurm时,用户需要通过Slurm命令来指定作业所需的资源,如CPU核数等,并提交到相应的分区。只有当作业申请的资源得到满足,即资源可用且符合分区的配置要求时,作业才会开始运行。此外,作业的运行还受到分区设定、用户账户权限以及服务质量(Quality of Service, QOS)等多种因素的限制。这些限制确保了资源的有效分配和作业的公平调度,从而提高了整体计算资源的利用率和系统的运行效率。

三种作业提交模式

Slurm作业调度系统中主要有三种作业提交模式:批处理作业、交互式作业提交以及分配模式作业。
这些模式适用于不同的作业需求和场景:

1. 批处理作业(采用 sbatch 命令提交)

Slurm 支持利用 sbatch 命令采用批处理方式运行作业,sbatch 命令在脚本正确传递给作业调度系统后立即退出,同时获取到一个作业号。作业等所需资源满足后开始运行。

sbatch 提交一个批处理作业脚本到 Slurm。批处理脚本名可以在命令行上通过传递给 sbatch,如没有指定文件名,则 sbatch 从标准输入中获取脚本内容。

脚本文件基本格式:

这种方式不受本地网络波动影响,提交作业后可以关闭本地电脑。sbatch 命令没有屏幕输出,默认输出日志为提交目录下的 slurm-xxx.out 文件,可以使用tail -f slurm-xxx.out 实时查看日志,其中 xxx 为作业号。

sbatch 命令示例
新建job.sh并写入内容如下

#!/bin/bash
#SBATCH -N 2
#SBATCH -n 4
#SBATCH -c 12
#SBATCH -t 60
run.exe

而后在命令行执行

sbatch job.sh

即可提交作业。

注意: 以#SBATCH开头的行是SLURM约定的作业参数配置行,非#SBATCH开头的常规脚本代码,必须放在#SBATCH开头的行下方,作业脚本才能正常运作,否则会导致设定的参数不被解析等异常情况。

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

  • srun命令同时用于资源分配和任务加载。
  • 在登录shell中执行srun命令时,该命令首先提交作业请求并等待资源分配。
  • 资源分配后,在所分配的节点上加载作业任务。

举例:

srun -p gpu -w g[1100-1101] -N 2 -n 80 -t 20 run.exe

解释:交互式提交 run.exe 程序。如果不关心节点和时间限制,可简写为 srun -p gpu -n 80 run.exe

其中,

-p gpu 指定提交作业到 gpu 队列;
-w g[1100-1101] 指定使用节点 g[1100-1101];
-N 2 指定使用 2 个节点;
-n 40 指定进程数为 40,
-t 20 指定作业运行时间限制为 20 分钟。

srun 的其他选项可通过 srun --help 查看。

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

  • 结合了交互式作业和批处理作业模式的特点。
  • 用户需指定资源分配需求条件并提交资源管理器的作业资源分配请求。
  • 作业排队等待,资源被满足时,在用户提交作业的节点上执行用户指定的命令。
  • salloc后如果没有指定脚本或可执行文件,默认使用/bin/sh,提供合适环境变量的shell环境。
  • salloc与sbatch的主要区别在于资源请求满足时的作业执行位置。salloc是在提交作业的节点上执行任务,而sbatch则在分配的第一个节点上执行任务。
  • salloc适合于需要特定运行节点和其他资源限制,且有特定命令需求的作业。

这三种模式提供了灵活的作业管理和资源分配方式,以满足不同用户和任务的需求。

管理节点部署

  • 安装OS,使用准备的系统镜像进行安装
  • 配置系统
    • SELINUX关闭
    • FIRWALLD关闭
    • SSH端口优化
  • 编写hosts表,配置ip地址
  • 配置本地yum源
  • 安装docker
  • xcat导入
    • ntps、dns、http、dhcp、nfs server
    • 安装LDAP server、webmin、创建slurm用户
    • 导入分发脚本
      • 网络配置:ntp、rsyslog自动配置(xcat自带)
      • 系统优化、ssh调优、swap调优脚本配置、module安装
      • IB网络驱动、GPU显卡自动安装脚本
      • ldap server、ldap client自动安装脚本
      • 作业调度server、client自动安装脚本
      • 文件系统server、client自动安装脚本
      • 自动安装intel编译器、iozone、stream、iperf

Slurm常用命令

命令:sinfo 功能介绍:显示系统资源使用情况

sinfo

命令:squeue 功能介绍:显示作业状态

squeue

命令:sbatch 功能介绍:用于交互式作业提交

srun -N 2 -n 80 -p normal run.exe 

命令:salloc 功能介绍:用于分配模式作业提交

salloc -p gpu 

命令:scancel 功能介绍:用于取消已提交的作业

scancel JOBID

命令:scontrol 功能介绍:用于查询节点信息或正在运行的作业信息

scontrol show job JOBID

命令:sacct 功能介绍:用于查看历史作业信息

sacct -u user1 -S 03/01/17 -E 03/31/17

上述命令例子后续贴图补充。


【星猿杂谈】:在这里我们共同探索科技新趋势,分享积累的点滴,从编程语言到系统架构,从人工智能到高性能计算,我们追求技术的进步,同时珍视分享的力量。欢迎关注我们,在技术的精彩世界中一起遨游,发现更多未知!

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

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

相关文章

unity 游戏开发中傻傻分不清URP、HDRP和SRP

文章目录 **URP (Universal Render Pipeline)**:**HDRP (High Definition Render Pipeline)**:**区别**: Unity的URP(Universal Render Pipeline)和HDRP(High Definition Render Pipeline)都是基于SRP(Scri…

k8s yaml文件pod的生命周期

Pod是k8s中最小限额资源管理组件,也是最小化运行容器化的应用的资源管理对象。 Pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合。 在一个pod当中运行一个容器是最常用的方式。 在一个pod当中同时运行多个容器,在一个pod当中…

2024阿里云服务器可用区选择方法

阿里云服务器地域和可用区怎么选择?地域是指云服务器所在物理数据中心的位置,地域选择就近选择,访客距离地域所在城市越近网络延迟越低,速度就越快;可用区是指同一个地域下,网络和电力相互独立的区域&#…

Strict MIME type checking is enforced for module scripts per HTML spec.

目录 前言错误信息如下:前言 最近使用docker打包Nginx和vue 为镜像文件,启动镜像时报错 错误信息如下: index89886.js:1 Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html". Stri…

labelme的安装

首先尝试在(openmmlab)的python3.8的环境下安装(失败)。应该是我环境其他部分不对,和python版本应该没什么关系。(后续,创建新的环境后成功,可直接看最后一部分。) 首先安装是没问题的 pip in…

Linux文件操作命令(touch、cat、more、cp、mv、rm)

之前我们学习了对目录(即文件夹的操作,那么现在我们来一起看一下怎么操作文件吧) 1.touch命令 功能:创建文件 语法:touch 参数 参数:被创建的文件路径 注意:touch命令无选项,参…

智能合约:3分钟开发ERC20 token(2)

0.前言 上一节我们讲到了开发智能合约的准备工作,以及在线编程平台remix 智能合约(1) 这一节讲解如何开发、发行一个代币,并具备包括代币铸造mint,转账transfer和销毁burn功能,并确保合约拥有者owner的权限…

autodl学术加速

今天使用autodl加载预训练BERT模型失败,在官方文档里面找到了官方给的代理使用方法。 直接在bash输入: 开启学术加速: source /etc/network_turbo取消学术加速: unset http_proxy && unset https_proxy据说是只能访问这…

计算机组成原理 I/O方式

I/O 方式 I/O方式分类: 程序查询方式。由 CPU通过程序不断查询 /O 设备是否已做好准备,从而控制0 设备与主机交换信息程序中断方式。只在 I/0 设备准备就绪并向 CPU发出中断请求时才予以响应。DMA方式。主存和 I/O 设备之间有一条直接数据通路,当主存和…

【动态规划】【滑动窗口】C++算法:100154 执行操作后的最大分割数量

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 C算法:滑动窗口总结 动态规划 LeetCode100154 执行操作后的最大分割数量 给你一个下标从 0 开始的字符串 s 和一个整数 k。 你需要执行以下分割操作,直到字符串 s 变为 空&#xf…

Flink中的状态管理

一.Flink中的状态 1.1 概述 在Flink中,算子任务可以分为有状态和无状态两种状态。 无状态的算子任务只需要观察每个独立事件,根据当前输入的数据直接转换输出结果。例如Map、Filter、FlatMap都是属于无状态算子。 而有状态的算子任务,就…

C#使用栈方法遍历二叉树

步骤一:定义一个二叉树的节点类 定义一个二叉树的节点类,其中包含节点的值、左子节点和右子节点。 // 二叉树节点定义public class TreeNode{public int Value { get; set; } // 节点的值public TreeNode Left { get; set; } // 左子节点public TreeN…

uniapp 微信小程序跳转至其他小程序

一、背景&#xff1a; 需要在目前的小程序中跳转到另一个小程序&#xff0c;跳转的目标小程序需要已经发布上线了 二、具体实现 使用uni.navigateToMiniProgram打开另一个小程序 官网指引&#x1f449;&#xff1a;uni.navigateToMiniProgram(OBJECT) | uni-app官网 <t…

手把手教你用jmeter做压力测试(详图)

一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试&#xff0c;他可以帮助我们发现系统中的瓶颈问题&#xff0c;减少发布到生产环境后出问题的几率&#xff1b;预估系统的承载能力&#xff0c;使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步…

基于机器视觉的车牌检测-车牌粗略定位

基于颜色特征的定位算法 基于颜色特征的定位算法。该算法不用对整幅图像进行边缘检测&#xff0c;而是直接寻找图片中颜色、形状及纹理符合车牌特征的连通区域。通过分析车牌图像&#xff0c;发现对于具有某种目标颜色的像素&#xff0c;可以直接通过对H、S、I三分量设定一个范…

CPU平台做视频智能分析,Lnton视频分析平台不仅支持流分析,同时也支持图片分析了

LntonAIServer最新v1.0.09版本支持图片分析了&#xff0c;经过几个月的研发&#xff0c;在原有的视频流分析的基础上&#xff0c;我们终于支持大家都非常期待的图片分析功能了&#xff0c;图片分析的功能加上&#xff0c;能有利于很多场景的展开&#xff0c;比如在烟火、明厨亮…

Java学习笔记(十)——异常

一、异常的概念 二、异常体系图&#xff08;重要&#xff09; 三、常见的异常 &#xff08;一&#xff09;常见的运行时异常 1、NullPointerException空指针异常 2、ArithmeticException数学运算异常 3、ArrayIndexOutOfBoundsException数组下标越界异常 4、ClassCastEx…

阿里巴巴微服务治理框架的终极PK!

另外我的新书RocketMQ消息中间件实战派上下册&#xff0c;在京东已经上架啦&#xff0c;目前都是5折&#xff0c;非常的实惠。 https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html “RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微…

Java调用shell脚本实现数据库备份功能

本篇文章主要介绍怎样使用Java程序&#xff0c;执行服务器上的数据库备份Shell脚本进行MySQL数据库的备份功能。 学习目标 使用Java执行Shell脚本、实现MySQL数据库的备份功能。 学习内容 编写导出MysSQL数据库的Shell脚本 以下是一个使用Bash脚本进行数据库备份的示例代码…

java基础之Java8新特性-Stream(流)

简介 流&#xff08;Stream&#xff09;是 Java 8 引入的一种处理集合数据的抽象概念&#xff0c;它提供了一种更简洁、更灵活的方式来操作和处理集合数据。流可以看作是一系列元素的管道&#xff0c;可以对这些元素进行筛选、转换、排序、归约等操作&#xff0c;实现各种数据…