1.相关基本概念

资源(Resource)

  • 作业运行过程中使用的可量化实体都是资源;
  • 包括硬件资源(节点、内存、CPU 、GPU等)和软件资源( License );

集群(Cluster)

  • 包含计算、存储、网络等各种资源实体且彼此联系的资源集合;
  • 在物理上,一般由计算处理、互联通信、I/O 存储、操作系统、编译器、运行环境、开发工具等多个软硬件子系统组成;
  • 节点是集群的基本组成单位,从角色上一般可以划分为管理节点、登陆节点、计算节点、存储节点等。

作业(Job)

  • 物理构成,一组关联的资源分配请求,以及一组关联的处理过程;
  • 交互方式,可以分为交互式作业和非交互式作业;
  • 资源使用,可以分为串行作业和并行作业;

分区(Partition)

  • 带名称的作业容器;
  • 用户访问控制;
  • 资源使用限制;

 作业调度系统(Job Schedule System)

  • 负责监控和管理集群中资源和作业的软件系统;
  • 通常由资源管理器、调度器、任务执行器,以及用户命令和API组成;

调度系统主要作用

单一系统映像

  • 解决集群结构松散问题;
  • 统一用户接口,使用简化;

系统资源整合

  • 管理异构资源和异构系统;

多任务管理

  • 统一管理任务,避免冲突;

资源访问控制

  • 基于策略的资源访问控制;

换句话说,调度系统是面向集群的操作系统。

Slurm

Slurm是一个开源,容错,高度可扩展的集群管理和作业调度系统,适用于大型和小型Linux集群。Slurm不需要对其操作进行内核修改,并且相对独立。作为集群工作负载管理器,Slurm有三个关键功能。首先,它在一段时间内为用户分配对资源(计算节点)的独占和/或非独占访问,以便他们可以执行工作。其次,它提供了一个框架,用于在分配的节点集上启动,执行和监视工作(通常是并行作业)。最后,它通过管理待处理工作的队列来仲裁资源争用。

2.Slurm的运行架构

(1)主控服务slurmctld

故障切换 资源监控 队列管理 作业调度

(2)记账存储服务slurmdbd
  记账数据 配置信息 故障切换
 (3)数据库MySQL
  记账和配置信息存储
(4)计算代理slurmd
  启动任务 监控任务 分层通信
 (5)认证服务munge
     内部通信认证

3.Slurm的主要特点

  • 架构设计优秀

扩展性(功能/规模)高性能(提交/调度)灵活性(自定义插件)容错性(服务/节点/作业

  • 特色功能突出

资源绑定(CPU、MEM、类GPU加速卡等各类资源)关联调度(如类GPU加速卡关联CPU)

能耗管理(限频、开关机、记账等)拓扑调度(基于拓扑结构调度,限定交换机数等)

  • 基础功能完善

优先级策略(Multi-Factor)
作业调度(FairShare/Backfill/ FCFS, etc)
资源竞争(Exclusive/Preempt/Gang, etc)
多级限制(Cluster/Account/User/Partition, etc)
资源预留(CPU/MEM/类GPU加速卡/License等)

  • 兼容性/交互性良好

MPI兼容(IntelMPI/MVAPICH/OpenMPI,etc)
LSF兼容(bsub/bjobs/bqueue/bhosts, etc)
PBS兼容(qsub/qstat/pbsnodes/pestat, etc)
分析工具(融合Influxdb/ES/HDF5等,方便分析)

4.三种模式

批处理作业(采用sbatch命令提交,最常用方式):

对于批处理作业(提交后立即返回该命令行终端,用户可进行其它操作)使用sbatch命令提交作业脚本,作业被调度运行后,在所分配的首个节点上执行作业脚本。在作业脚本中也可使用srun命令加载作业任务。提交时采用的命令行终端终止,也不影响作业运行。

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

资源分配与任务加载两步均通过srun命令进行:当在登录shell中执行srun命令时,srun首先向系统提交作业请求并等待资源分配,然后在所分配的节点上加载作业任务。采用该模式,用户在该终端需等待任务结束才能继续其它操作,在作业结束前,如果提交时的命令行终端断开,则任务终止。一般用于短时间小作业测试。

实时分配模式作业(采用salloc命令提交):

分配作业模式类似于交互式作业模式和批处理作业模式的融合。用户需指定所需要的资源条件,向资源管理器提出作业的资源分配请求。提交后,作业处于排队,当用户请求资源被满足时,将在用户提交作业的节点上执行用户所指定的命令,指定的命令执行结束后,运行结束,用户申请的资源被释放。在作业结束前,如果提交时的命令行终端断开,则任务终止。典型用途是分配资源并启动一个shell,然后在这个shell中利用srun运行并行作业。

注意:

(1)salloc后面如果没有跟定相应的脚本或可执行文件,则默认选择/bin/sh,用户获得了一个合适环境变量的shell环境。

(2)salloc和sbatch最主要的区别是salloc命令资源请求被满足时,直接在提交作业的节点执行相应任务,而sbatch则当资源请求被满足时,在分配的第一个节点上执行相应任务。

(3)salloc在分配资源后,再执行相应的任务,很适合需要指定运行节点和其它资源限制,并有特定命令的作业。

5.相关命令

(1)查看分区——sinfo

sinfo命令参数
-p <partition>,
--partition=<partition>
查看指定分区的状态,对应环境变量SINFO_PARTITION。
示例:sinfo -p caspra
-n <nodes>,
--nodes=<nodes>
查看指定节点的信息。
示例:sinfo -p caspra -n e02r4n[00-19]
-N, --Node 以面向节点(默认为分区)的格式打印信息,每行一个节点。
示例:sinfo -N -p caspra -n e02r4n[00-19]
-t <states> ,
--states=<states>
查询指定节点状态的分区或节点的信息。
常见状态包括:alloc idle drain down drng
-t <states> ,
--states=<states>
查询指定节点状态的分区或节点的信息。
常见状态包括:alloc idle drain down drng
-s, --summarize 查看分区中节点状态的摘要信息。
主要是限制分区中节点的状态统计,如已分配数alloc、空闲数idle、总数total等
-o <output_format>,
--format=
<output_format
按照指定的格式显示信息,对应变量SINFO_FORMAT。
格式为“%[[.]size]<type> %[[.]size]<type> …”。
其中,点号(.)表示右对齐,size表示字段长度,type为代表特定字段的字符(或字符串)。
示例如下:
sinfo -o %all 以数显分隔的形式显示所有字段。
sinfo -o "%9P %.5a %.10l %.6D %.6t %N"
显示内容:分区名-分区状态 -最大运行时间-节点数-节点状态-节点列表
-O <output_format>,
--Format=
<output_format>
按照指定的字段显示状态信息。
格式为“type[:[.]size],type[:[.]size],…”。
其中,type为代表特定字段的字段名,点号(.)表示右对齐,size表示字段长度。示例如下:
sinfo -O all
sinfo -O Partition:9,available:.6,time:.11,nodes:.6,statecompact:.6,nodelist:.12

(2)查询排队和运行状态的作业——squeue

参数 说明
-A, --account=account(s)  查询指定账号的作业,默认全部账号下的作业
-j, --jobs <job_id_list> 查看指定JOB IDS的作业信息, 默认显示全部
-n, --name=<name>  查看指定名称的作业信息
-p, --partition=<names>  查看指定分区的作业信息
--state=<names> 指定状态查看作业信息
--users=<names> 指定用户名称查看作业信息

(3)删除作业命令——scancel

命令 解释
scancel <jobid> 删除指定作业
scancel -t ST  删除指定状态的作业
scancel --account=<name>  删除指定账号的作业
scancel --name=<name>  删除指定名称的作业
scancel --partition=<names>  删除指定分区的作业
scancel --reservation=<name> 删除指定预约名称的作业
scancel --state=<names>  删除指定状态的作业
scancel --user=<name>  删除指定用户的作业
scancel --nodelist=<names>  删除指定节点的作业

(4)控制作业命令——scontrol

命令 解释 备注
scontrol suspend <jobid> 挂起作业 运行作业可挂起
scontrol resume <jobid> 恢复作业 挂起作业可恢复
scontrol requeue <jobid> 作业重新排队 运行作业可重新排队
scontrol hold <id/name> 保留作业 排队作业可保留
scontrol release <id/name> 释放作业 保留作业可释放

6.写在最后

Slurm China社区,以Slurm为切入口讨论HPC相关问题,致力于守卫中国HPC集群稳定运行,推广国产调度器助力中国HPC进步。大家有想加入Slurm China 社区的小伙伴,可以私信或评论区联系我。

浅谈Slurm作业调度系统相关推荐

  1. 【ZZ】浅谈大型web系统架构 | 菜鸟教程

    浅谈大型web系统架构 http://www.runoob.com/w3cnote/large-scale-web-system-architecture.html 转载于:https://www.c ...

  2. 浅谈Windows XP系统漏洞的封堵

    浅谈Windows XP系统漏洞的封堵 2010年11月18日 9号    浏览:96次 发表评论 阅读评论 微软WindowsXP自出世以来就在中国市场中获得了广泛好评和客户的认同,它出色的兼容性和 ...

  3. 【转】浅谈人类视觉系统与卷积神经网络(CNN)的联系和区别

    浅谈人类视觉系统与卷积神经网络(CNN)的联系和区别 文章转载:叶强 深度学习 / 强化学习 / 机器学习 / 算法 / 眼科学 声明:本文为作者原创.欢迎免费规范转载.本文使用的一些图片素材来自于网 ...

  4. 浅谈列控系统的阶梯式分级速度控制中专有名词的表述问题

    浅谈列控系统的阶梯式分级速度控制中专有名词的表述问题 一.问题提出 个人在学习列车运行控制系统的过程中发现,不同的文献中,在介绍和论述列车运行控制系统的阶梯式分级速度控制方式时,总会提到下面专有名词中 ...

  5. 浅谈空冷器系统在压缩机工艺中的应用

    浅谈空冷器系统在压缩机工艺中的应用 1.工艺作用.工艺流程.工艺参数 空冷器与压缩机一一对应,以压缩机Z201A为例: (1)正常工况:当压缩机出口温度TIT202A 超过60 度(可现场调节)时,关 ...

  6. 【Linux】Slurm作业调度系统使用

    目录 一.前言 二.Slurm介绍 三.如何使用 sinfo 查看节点和分区信息 squeue 查看调度队列中作业信息 srun 运行并行作业 sbatch 用批处理脚本提交作业 scancel 取消 ...

  7. slurm作业调度系统

    编写Slurm脚本 #!/bin/bash #SBATCH -J test # 作业名是 test #SBATCH -p cpu # 提交到 cpu 分区 #SBATCH -N 1 # 使用一个节点 ...

  8. 菜鸟学习计划浅谈之Linux系统

    人这一生都是在不断地学习,不断地进步中度过的,刚开始学习任何一门知识的时候,我们都习惯性的称自己为菜鸟,觉得自己对这方面的知识欠缺,水平很low,我也是如此.但我擅长总结,对于自己学习的新知识,总结学 ...

  9. 浅谈三级分销系统开发对企业的作用

    三级分销系统,三级分销模式,三级分销软件,三级分销商城,三级分销小程序,三级分销APP,三级分销系统开发,三级分销模式开发,三级分销软件开发,三级分销商城开发,三级分销小程序开发,三级分销APP开发, ...

最新文章

  1. linux程序移植到vxworks,VxWorks入门(一):VxWorks Vs Linux
  2. 阅读《Android 从入门到精通》(29)——四大布局
  3. Nessus漏洞扫描教程之使用Nmap工具扫描识别指纹
  4. linux中sh基本语法
  5. Horizon View 6-客户端连接虚拟桌面⑹
  6. 关于runjs的一些想法
  7. CF1157G. Inverse of Rows and Columns
  8. jqgrid表格下拉搜索多选框优化—使用select下拉多选插件
  9. orgmode导出html,含有python代码块的ORG-MODE导出为HTML时出错
  10. (转)Bootstrap 之 Metronic 模板的学习之路 - (5)主题布局配置
  11. 全球闪存供应紧张 新iPhone涨价只是开始
  12. ubuntu下mysql的master-slave,双master 及A-B-C级联主从配置说明
  13. 电源控制环稳定性基础理论与调试方法
  14. 【论文笔记】Weakly Supervised Discriminative Feature Learning with State Information for Person ...
  15. Mac下eclipse安装和配置Tomcat
  16. 科林明伦杯 哈尔滨理工大学第十届程序设计竞赛 (补)
  17. 用iPhone前摄3D人像建模,Meta:我看行
  18. 1335:【例2-4】连通块——dfs、bfs
  19. js input获取焦点和失去焦点的操作
  20. pve虚拟机和openstack虚拟机的区别

热门文章

  1. TPS71733DSER
  2. AutoCAD Map 3D 2012 安装中Content Service错误?
  3. 芒果TV开启付费模式:看《我是歌手3》得掏钱
  4. C++设计模式之十七:Mediator(中介者模式)
  5. windows下java -jar 后台运行以及杀死后台进程的操作
  6. SQL Sever链接数据库登录失败原因
  7. C语言清空数组的几种方式
  8. express搭建权限管理系统
  9. spring-boot整合FTP文件服务器
  10. 帝国cms安装不支持MySQL_15招完美解决帝国CMS安装出错和常见问题