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

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


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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析基础之《numpy(6)—IO操作与数据处理》

了解即可,用panads 一、numpy读取 1、问题 大多数数据并不是我们自己构造的,而是存在文件当中,需要我们用工具获取 但是numpy其实并不适合用来读取和处理数据,因此我们这里了解相关API,以及numpy不方便的地方即可 2…

关于“Python”的核心知识点整理大全59

目录 19.3.2 将数据关联到用户 1. 修改模型Topic models.py 2. 确定当前有哪些用户 3. 迁移数据库 注意 19.3.3 只允许用户访问自己的主题 views.py 19.3.4 保护用户的主题 views.py views.py 19.3.6 将新主题关联到当前用户 views.py 往期快速传送门&#x1f44…

人工智能教程(四):概率论入门

目录 前言 TensorFlow 入门 SymPy 入门 概率论入门 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站 在本系列的 上一篇文章 中,我们进一步讨论了矩阵和线性代数&#…

【42页动态规划学习笔记分享】动态规划核心原理详解及27道LeetCode相关经典题目汇总

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐--…

QT上位机开发(数据库sqlite编程)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 编写软件的时候,如果用户的数据比较少,那么用json保存是非常方便的。但是一旦数据量大了之后,建议还是用数据库…

奋楫扬帆,奔赴新程 | 2023 年图扑大事记回顾,与您携手共迎 2024

2023.01 工信部公示了 2022 年度智能制造示范工厂揭榜单位和优秀场景名单。图扑软件和上海洲邦合作建设的宁波甬友数字孪生工厂被评为优秀场景,全国共有 369 个智能制造典型场景入选。 2023.01 在第十一届中国创新创业大赛全国赛(新一代信息技术&#…

【中小型企业网络实战案例 七】配置限速

相关学习文章: 【中小型企业网络实战案例 一】规划、需求和基本配置 【中小型企业网络实战案例 二】配置网络互连互通【中小型企业网络实战案例 三】配置DHCP动态分配地址 【中小型企业网络实战案例 四】配置OSPF动态路由协议【中小型企业网络实战案例 五】配置可…

Basis Pursuit ADMM

c笔记 ref. distr_opt_stat_learning_admm.html Basis pursuit is the equality-constrained minimization problem In ADMM form, basis pursuit can be written as The ADMM algorithm is then The x-update, which involves solving a linearly-constrained minimu…

大数据StarRocks(二) StarRocks集群部署

一、生产机器资源评估 1.梳理数据量,包括每天增量数据接入和全量数据接入 2.数据存储时间长度(1个月/3个月/半年/1年/三年等) 3.报表的SQL查询数量,SQL查询占用资源的统计,需要提前做好压测 4.压测可以采用官网提供的…

MySQL第三战:CRUD,函数1以及unionunion all

前言 在当今的数字化时代,数据库已经成为信息管理的重要工具。其中,MySQL作为一种流行的关系型数据库管理系统,已经广泛应用于各种业务场景。在本文中,我们将深入探讨MySQL中的核心概念,包括创建(Create&a…

ROS学习记录:在ROS中用C++实现获取激光雷达的数据

一、打开一个终端,输入cd ~/catkin_ws1,进入工作空间 二、输入source ./devel/setup.bash,将ROS工作空间的环境设置(setup)添加到当前终端会话中 三、输入roslaunch wpr_simulation wpb_simple.launch打开机器人仿真环…

【人工智能】百度智能云千帆AppBuilder,快速构建您的专属AI原生应用

大家好,我是全栈小5,欢迎来到《小5讲堂》,此序列是《人工智能》专栏文章。 这是2024年第5篇文章,此篇文章是进行人工智能相关的实践序列文章,博主能力有限,理解水平有限,若有不对之处望指正&…