位置: IT常识 - 正文

【集群】Slurm作业调度系统的使用(集群怎么写)

编辑:rootadmin
【集群】Slurm作业调度系统的使用 最近使用集群进行实验,记录并学习集群系统进行深度学习的实验过程。集群所使用的作业调度系统为Slurm,这里记录下使用的常用命令和一些注意事项。Slurm简介

推荐整理分享【集群】Slurm作业调度系统的使用(集群怎么写),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:集群有什么用,集群教程,slurm 集群,集群chia,集群chia,集群chia,slurm 集群,集群示例,内容如对您有帮助,希望把文章链接给更多的朋友!

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

相关的名词

1 资源(Resource)

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

2 集群(Cluster)

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

3 作业(Job)

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

4 分区(Partition)

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

5 作业调度系统(Job Schedule System)

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

调度系统主要作用

单一系统映像

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

系统资源整合

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

多任务管理

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

资源访问控制

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

简单来讲,调度系统是面向集群的操作系统。

Slurm三种模式

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

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

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

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

【集群】Slurm作业调度系统的使用(集群怎么写)

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

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

(1)salloc后面如果没有跟定相应的脚本或可执行文件,则默认选择/bin/sh,用户获得了一个合适环境变量的shell环境。 (2)salloc和sbatch最主要的区别是salloc命令资源请求被满足时,直接在提交作业的节点执行相应任务,而sbatch则当资源请求被满足时,在分配的第一个节点上执行相应任务。 (3)salloc在分配资源后,再执行相应的任务,很适合需要指定运行节点和其它资源限制,并有特定命令的作业。

常用命令

sbatch:提交作业脚本。此脚本一般会包含一个或多个srun命令启动并行任务 sinfo:显示分区或节点状态,可以通过参数选项进行过滤、和排序 squeue:显示队列的作业及作业状态 scancel:取消排队或运行中的作业 scontrol:显示或设定slurm作业、分区、节点等状态 sacctmgr:显示和设置账户关联的QOS等信息 sacct:显示历史作业信息 srun:运行并行作业,具有多个选项,如:最大和最小节点数、处理器数、是否 指定和排除节点。

命令详情

(1)查看分区——sinfo (2)查询排队和运行状态的作业——squeue

(3)删除作业命令——scancel (4)控制作业命令——scontrol

常用术语

user:用户名 node:泛指计算节点 core:CPU核 job:作业 job step:作业步,单个作业(job)可以有多个作业步 partition:分区(可理解为LSF、PBS等作业调度系统中的队列),作业需在特定分区中运行,一般不同分区之间资源不一样 QOS:服务质量,可理解为用户可使用的CPU、内存等资源限制 tasks:任务数,默认一个任务使用一个CPU核,可理解为作业所需的CPU核数 socket:CPU插槽,可理解为物理CPU颗数 stdout:标准输出文件,程序运行正常时输出信息的文件,一般指输出到屏幕的信息 stderr:标准错误文件,程序运行出错时输出信息的文件,一般指输出到屏幕的信息

常用环境变量SLURM_NODELIST当前作业被分配的节点列表SLURM_JOB_NODELIST当前作业被分配的节点列表SLURM_JOB_NAME当前作业的作业名称SLURMD_NODENAME当前作业执行任务的主机名SLURM_NODE_ALIASES当前作业执行节点的主机别名SLURM_ARRAY_JOB_ID当前组数作业的ID号码SLURM_ARRAY_TASK_ID当前数组作业的任务ID号SLURM_ARRAY_TASK_COUNT当前数组作业的任务总数SLURM_ARRAY_TASK_MAX当前数组作业的最大任务ID号SLURM_ARRAY_TASK_MIN当前数组作业的最小任务ID号SLURM_ARRAY_TASK_STEP当前数组作业任务ID号增长步长SLURM_NNODES当前作业使用的节点数目SLURM_JOBID当前作业ID号SLURM_JOB_ID当前作业ID号SLURM_TASKS_PER_NODE当前作业每个节点任务数SLURM_JOB_USER当前作业执行用户SLURM_JOB_UID当前作业实行用户的UIDSLURM_NODEID当前作业执行时主机编号(每个任务从0开始)SLURM_SUBMIT_DIR当前作业提交时所在目录SLURM_TASK_PID当前任务执行时的进程号SLURM_CPUS_ON_NODE当前作业执行时做个节点使用的cpu数目SLURM_PROCID当前作业执行时CPU的号码SLURM_LOCALID当前作业节点上的本地任务的ID号SLURM_JOB_GID当前作业执行用户的GIDSLURM_JOB_CPUS_PER_NODE当前作业执行时每节点使用的CPU数目SLURM_CLUSTER_NAME当前作业执行时所在的slurm集群名称SLURM_GTIDS当前作业在节点上运行时的全局任务ID号,以0为原点,逗号隔开SLURM_SUBMIT_HOST当前作业的提交主机名称SLURM_JOB_PARTITION当前作业提交时所用的partitionSLURM_JOB_NUM_NODES当前作业所用的节点总数(单位:个)SLURM_MEM_PER_NODE当前作业每个节点使用的内存(单位:M)SLURM_MEM_PER_CPU当前作业每个节点上的每个CPU占用的内存大小作业提交

这里记录使用 sbatch 进行作业调度

使用sbatch命令提交作业方式,sbatch命令在脚本正确传递给作业调度系统后立即退出,同时获取一个作业号。作业等所需资源满足后开始运行,一般脚本的格式为 .sh 或者 .script 文件。 sbatch提交一个批处理作业脚本到调度系统。批处理脚本名可以在命令行上通过传递给sbatch,也可以定义在批处理脚本中,如果没有指定文件名,则sbatch从标准输入中获取脚本内容。 脚本文件基本格式: 第一行以#!/bin/bash等指定改脚本的解释程序,/bin/bash可以变为/bin/sh、/bin/csh等。 在可执行命令之前的每行“#SBATCH”前缀后跟的参数作为作业调度系统的参数。 默认情况下,标准输出和标准错误都定向到同一个文件slurm-%j.out,“%j”将被作业号代替。

作业脚本基本结构如下: 1 第一行是脚本语言解释器的路径,一般选择 bash 作为解释器

#!/bin/bash

2 若干行由 #SBATCH 引导的 Slurm 设置选项,例如

#SBATCH --partition=hpxg #申请分区 `hpxg` 的计算资源 #SBATCH --nodes=1 #申请 1 个节点#SBATCH --ntasks-per-node=1 #申请每个节点上分配一个任务(进程)#SBATCH --time=06:00:00 #计划最多运行 6 小时

3 计算程序运行需要设置的环境变量,例如

#可以查看GPU的运行和使用情况#nvidia-smi#which nvidia-smi#nvidia-smiconda activate environmentcd /home/codeDir/

4 运行程序的命令,例如

python mycode.py

完整实例:

编辑脚本文件

vi test.sh

文本内容实例

#!/bin/bash -l#SBATCH --job-name="myTest"#SBATCH --partition=Pnamw#SBATCH --nodes=1#SBATCH --ntasks-per-node=1#SBATCH --cpus-per-task=1#SBATCH --output=/home/testWorks.%j.out#SBATCH --error=/home/testWorks.%j.err#SBATCH --gpus=2#nvidia-sminvidia-smiwhich nvidia-sminvidia-smiconda activate environmentpython mai.py

提交运行脚本文件

sbatch test.sh脚本常用命令-J,--job-name 指定作业名称-N,--nodes 节点数量-n,--ntasks 使用的CPU核数--mem 指定每个节点上使用的物理内存-t,--time 运行时间,超出时间限制的作业将被终止-p,--partition 指定分区--reservation 执行资源预留名称-w,--nodelist 指定特定的节点-x,--exclude 分配给作业的节点中不要包含指定节点--ntasks-per-node 指定每个节点使用几个CPU核心--begin 指定作业开始时间-D,--chdir 指定脚本/命令的工作目录--export-file= 通过文件filename设定环境变量。文件中的环境变量格式为NAME=value,变量之间通过空格分隔。-o,--output= 采用--output可以将其重定向到同一文件中--gpus 运行程序所需GPU的数量squeue命令结果详情

结果列头信息

JOBID:作业号 PARITION:分区名 NAME:作业名 USER:用户名 ST:状态,常见的状态包括 NODELIST(REASON):分配给的节点名列表(原因)

其中ST常见状态包括:

PD、Q:排队中 ,PENDINGR:运行中 ,RUNNINGCA:已取消,CANCELLEDCG:完成中,COMPLETIONGF:已失败,FAILEDTO:超时,TIMEOUTNF:节点失效,NODE FAILURECD:已完成,COMPLETED

NODELIST(REASON):分配给的节点名列表(原因)常见信息:

AssociationJobLimit:作业达到其最大允许的作业数限制AssociationResourceLimit:作业达到其最大允许的资源限制AssociationTimeLimit作业:作业达到时间限制Resource:作业等待期所需资源可用QOSJobLimit:作业的QOS达到其最大的作业数限制QOSResourceLimit:作业的QOS达到其最大资源限制QOSTimeLimit:作业的QOS达到其最大时间限制PartitionNodeLimit:作业所需的节点超过所用分区当前限制PartitionTimeLimit:作业所需的分区达到时间限制Priority :作业所需的分区存在高等级作业或预留NodeDown:作业所需的节点宕机JobHeldUser:作业被用户自己挂起InvalidQOS:作业的QOS无效 Nodes required for job are DOWN, DRAINED or reserved for jobs in higher priority partitions:作业所需的节点已关闭、耗尽或保留给优先级较高的分区中的作业scancel 取消任务

用户使用scancel命令取消自己的作业。命令格式如下: scancel jobid jobid可通过squeue获得。对于排队作业,取消作业将简单地把作业标记为CANCELLED状态而结束作业。对于运行中或挂起的作业,取消作业将终止作业的所有作业步,包括批处理作业脚本,将作业标记为CANCELLED状态,并回收分配给作业的结点。

挂起作业

scontrol hold job_list scontrol hold job_list命令可使得排队中尚未运行的作业(设置优先级为0)暂停被分配运行,被挂起的作业将不被执行,这样可以让其他作业优先得到资源运行。被挂起的作业在使用squeue命令查询显示时NODELIST(REASON)状态标志为JobHelduser(被用户自己挂起)或JobheldAdmin(被系统管理员挂起),利用scontrol release job_list 可取消挂起。

其他常用命令

1 查看节点状态 sinfo

PARRITION:节点所在分区。 AVAIL:分区状态,up标识可用,down标识不可用。 TIMELIMIT: 程序运行最大时长,infinite表示不限制, 限制格式为days-houres:minutes:seconds。 NODES:节点数。 NODELIST:节点名列表。 STATE:节点状态,可能的状态包括 1 allocated、alloc :已分配 2 completing、comp:完成中 3 down:宕机 4 drained、drain:已失去活力 5 fail:失效 6 idle:空闲 7 mixed:混合,节点在运行作业,但有些空闲CPU核,可接受新作业 8 reserved、resv:资源预留 9 unknown、unk:未知原因 注意:如果状态带有后缀*,表示节点没有响应

2 主要参数

-a、–all 显示全部分区信息 -d、–dead 仅显示无响应或已宕机节点 -i 以 秒间隔持续自动更新显示信息 -I 显示详细信息 -n 显示指定 节点信息 -N 以每行一个节点方式显示信息,即显示各节点信息 -p 显示 分区信息 -r 仅显示响应节点信息 -R 显示不响应(down、drained、fail或者failing状态)节点的原因 -o 按照 格式输出信息,type[:[.]size], 默认为“%#P %5a %.101 %.6D %.6t %N” 1 %all:所有字段信息。 2 %a:分区的状态及是否可用。 3 %A:以“allocated/idle”格式显示状态对应的节点信息 4 %B:分区中每个节点可分配给作业的core数。 5 %c:各节点core数。 6 %C:以“allocated/idle/other.total”格式显示core数。 7 %D:节点数。 8 %e:节点空闲内存。 9 %E:节点无效的原因。 10 %g:可使用此节点的用户组。 11 %n:节点主机名。 12 .:指明为右对齐,默认为左对齐。 13 size:最小字段大小,如没有指明,则最大为20个字符

查看节点信息scontorl show node [node]$: scontrol show node node4CPUAlloc=0 CPUErr=0 CPUTot=32 CPULoad=44.09AvailableFeatures=(null)ActiveFeatures=(null)Gres=(null)NodeAddr=node4 NodeHostName=node4RealMemory=64000 AllocMem=0 FreeMem=72333 Sockets=32 Boards=1State=DOWN* ThreadsPerCore=1 TmpDisk=0 Weight=1 Owner=N/A MCS_label=N/APartitions=batchBootTime=None SlurmdStartTime=NoneCfgTRES=cpu=32,mem=62.50G,billing=32AllocTRES=CapWatts=n/aCurrentWatts=0 LowestJoules=0 ConsumedJoules=0ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/sCPUAlloc:该节点已分配的core数量CPUTot:该节点core总数CPULoad:该节点负载情况NodeHostName:该节点主机名Partitions:该节点属于哪个分区RealMemory:该节点内存大小State:该节点状态值查看分区信息scontrol show partition$:scontrol show partitionPartitionName=batchAllowGroups=ALL AllowAccounts=ALL AllowQos=ALLAllocNodes=ALL Default=YES QoS=N/ADefaultTime=NONE DisableRootJobs=NO ExclusiveUser=NO GraceTime=0 Hidden=NOMaxNodes=UNLIMITED MaxTime=UNLIMITED MinNodes=1 LLN=NO MaxCPUsPerNode=UNLIMITEDNodes=node4PriorityJobFactor=1 PriorityTier=1 RootOnly=NO ReqResv=NO OverSubscribe=NOOverTimeLimit=NONE PreemptMode=OFFState=UP TotalCPUs=32 TotalNodes=1 SelectTypeParameters=NONEDefMemPerNode=UNLIMITED MaxMemPerNode=UNLIMITEDDisableRootJobs:不允许root提交作业Maxtime:最大运行时间LLN:是否按最小负载节点调度Maxnodes:最大节点数Hidden:是否为隐藏分区Default:是否为默认分区OverSubscribe:是否允许超时ExclusiveUser:排除的用户
本文链接地址:https://www.jiuchutong.com/zhishi/290746.html 转载请保留说明!

上一篇:月球的高清合成影像 (© Prathamesh Jaju)(月球合影)

下一篇:若依移动端Ruoyi-App——开发总结(若依移动端微信登录)

  • 微信怎么设置自动扣费额度(微信怎么设置自动添加好友)

    微信怎么设置自动扣费额度(微信怎么设置自动添加好友)

  • 怎么鉴别7p是原装屏幕(如何分辨iphone7p真假)

    怎么鉴别7p是原装屏幕(如何分辨iphone7p真假)

  • 万能钥匙没有蓝色钥匙怎么连接(万能钥匙没有蓝钥匙的怎么破解)

    万能钥匙没有蓝色钥匙怎么连接(万能钥匙没有蓝钥匙的怎么破解)

  • 小米10多重多少克(小米10重量多少克 很沉)

    小米10多重多少克(小米10重量多少克 很沉)

  • 智能材料一般有哪些功能(智能材料必须具备的三个要素)

    智能材料一般有哪些功能(智能材料必须具备的三个要素)

  • 笔记本摄像头可以调整角度吗(笔记本摄像头可以面捕吗)

    笔记本摄像头可以调整角度吗(笔记本摄像头可以面捕吗)

  • qq的匹配聊天怎么弄(qq的匹配聊天怎么没了)

    qq的匹配聊天怎么弄(qq的匹配聊天怎么没了)

  • 微博私信屏蔽对方知道吗(微博私信屏蔽对方能看到吗)

    微博私信屏蔽对方知道吗(微博私信屏蔽对方能看到吗)

  • 声卡可以直接连音箱吗(声卡可以直接连单反吗)

    声卡可以直接连音箱吗(声卡可以直接连单反吗)

  • 怎么改图片的大小kb(怎么改图片的大小M)

    怎么改图片的大小kb(怎么改图片的大小M)

  • ios应用与数据在哪(ipone应用与数据)

    ios应用与数据在哪(ipone应用与数据)

  • 运算器可以进行什么(运算器可以进行哪两种运算)

    运算器可以进行什么(运算器可以进行哪两种运算)

  • 苹果怎么删除别人的面容(苹果怎么删除别人的面容解锁)

    苹果怎么删除别人的面容(苹果怎么删除别人的面容解锁)

  • 微信号变成wxid怎么办(微信号变成wxid是不是拉黑了)

    微信号变成wxid怎么办(微信号变成wxid是不是拉黑了)

  • anki怎么用中文(anki语言可以调成中文吗)

    anki怎么用中文(anki语言可以调成中文吗)

  • 微信视频比例怎么调整(微信视频怎么设置比例)

    微信视频比例怎么调整(微信视频怎么设置比例)

  • 朋友圈可以发多少秒视频(朋友圈可以发多少秒的视频了)

    朋友圈可以发多少秒视频(朋友圈可以发多少秒的视频了)

  • 荣耀v20快充多少w(荣耀v20快充多少时间)

    荣耀v20快充多少w(荣耀v20快充多少时间)

  • oppoa9是什么屏幕(oppoa9手机屏幕是几寸的)

    oppoa9是什么屏幕(oppoa9手机屏幕是几寸的)

  • etc有定位功能吗(etc能不能定位车辆)

    etc有定位功能吗(etc能不能定位车辆)

  • oppo嗨来电开启在哪(oppo手机怎么设置嗨来电)

    oppo嗨来电开启在哪(oppo手机怎么设置嗨来电)

  • 显示百分比和类别名称(excel怎么显示百分比和类别名称)

    显示百分比和类别名称(excel怎么显示百分比和类别名称)

  • win10桌面一片空白(win10桌面一片空白怎么恢复左侧有一栏)

    win10桌面一片空白(win10桌面一片空白怎么恢复左侧有一栏)

  • 网站国际化 多语言处理工具i18n安装使用方法(网站国际化方案)

    网站国际化 多语言处理工具i18n安装使用方法(网站国际化方案)

  • Swagger-的使用(详细教程)

    Swagger-的使用(详细教程)

  • 标书费没有发票收据可以入帐吗
  • 二手车没有发票能过户吗
  • 增值税专用发票电子版
  • 房租抵扣个税需要提供发票吗
  • 持有待售固定资产按照账面价值与可收回金额
  • 应交税费应交增值税的三级科目有哪些
  • 送员工礼物
  • 商业银行退出
  • 应收账款资产减值损失转回和核销的区别
  • 工会经费可以购买购物卡吗
  • 公司为员工每月几号缴社保
  • 会计报表的附表包括哪些
  • 房屋租赁发票是什么意思
  • 食堂固定资产折旧年限
  • 特许权使用费如何确认收入
  • 对外报价时应考虑哪些因素
  • 境内企业是否可以出境
  • 注册资金印花税是资金账簿吗
  • 案例分析关于拟建科学馆的请示报告
  • 向境外企业付外汇
  • 企业所得税汇算清缴退税账务处理
  • 长期待摊费用以后怎么摊销
  • 维修车间人员的工作总结
  • 非营利组织免税收入孳生的银行存款利息
  • win8系统怎么连接无线
  • 财政补贴会计入养老金一起发放吗
  • 去年年终奖
  • 公司自有房屋出租 没有从租计征房产税
  • 结构性存款利息增值税
  • 销售费用里面的支付的安装人工费汇算清缴时计入哪里
  • 什么样的发票可以报销
  • 正爬上唐娜·诺克沙滩的灰海豹,英格兰北林肯郡 (© Frederic Desmette/Minden Pictures)
  • php curl命令详解
  • 企业所得税包含在税金及附加里面吗
  • 目标追踪模型
  • spring获取bean的完全限定类名
  • 软件的摊销期限
  • 进项发票数据导出
  • 无形资产摊销怎么计算月摊销额
  • mongodb主从同步速度
  • 将织梦dedecms转换到wordpress
  • mysql修改密码的命令
  • 个体工商户核算方式选哪个比较好
  • 计入存货成本的税费
  • 个体工商户增值税怎么计算
  • 甲方向乙方支付
  • 结转本月完工产品成本会计分录怎么写
  • 项目独立性
  • 应收票据周转率公式
  • 应收账款无法收回会计分录
  • 政府资助专项资金是什么
  • 企业接收到政府信息
  • 确定固定资产的标准
  • 代理出口业务会计分录
  • mysql 免安装版
  • sql语句提取字符串中数字
  • 新一代win10
  • windows不兼容
  • 登录ubuntu桌面
  • fedora8安装教程
  • linux find命令查找文件名
  • Ubuntu Linux 7.04QQ、MSN 安装和使用方法
  • ubuntu 上不了网
  • win7如何运行命令
  • win8.1网络设置
  • win10系统中哪些软件可以删除
  • 怎么恢复电脑win7系统
  • linux系统怎么弄
  • python接入微信
  • 耳机插头怎么拔
  • 编写一个python函数is_multiple
  • JavaScript+html5 canvas制作的圆中圆效果实例
  • javascript例题
  • jquery生成元素
  • js如何实现类的继承
  • jquery的form方法
  • 消费税的税收优惠政策导向
  • 办完营业执照多久可以开抖音小店
  • 北京买车如何摇号
  • 税务局直属机构
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设