Slurm作业提交、查询、修改等常用命令

这篇具有很好参考价值的文章主要介绍了Slurm作业提交、查询、修改等常用命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 集群常用概念

Resource:资源,作业运行过程中使用的可量化实体,包括硬件资源(节点、内存、CPU、GPU)和软件资源(License)
Cluster:集群,包含计算、存储、网络等各种资源实体且彼此联系的资源集合,物理上一般由计算处理、互联通信、I/O存储、操作系统、编译器、运行环境、开发工具等多个软硬件子系统组成。
Node:节点,是集群的基本组成单位,从角色上一半可以划分为管理节点、登录节点、计算节点、存储节点等。
job:作业,物理构成,一组关联的资源分配请求,以及一组关联的处理过程。按交互方式,可以分为交互式作业和非交互式作业;按资源使用,可以分为串行作业和并行作业。
queue:队列,带名称的作业容器,用户访问控制,资源使用限制。
Job Schedule System:作业调度系统,负责监控和管理集群中资源和作业的软件系统。
job step:作业步,单个作业可以有多个作业步。
partition:分区,根据用户的权限,作业需要被提交到特定的分区中运行。
tasks:任务数,默认一个任务使用一个CPU核,可理解为job需要的CPU核数。

2 Slurm常用基本命令

sbatch:提交作业脚本使其运行。
squeue:显示队列中的作业及作业状态。
scancel:取消排队或运行中的作业。
sinfo:显示节点状态。
scontrol:现实或设定slurm作业、队列、节点等状态。
salloc:为实时处理的作业分配资源:典型场景为分配资源并启动一个shell,然后用此shell执行srun命令去执行并行任务。
srun:交互式运行并行作业,一般用于短时间测试。

3 Slurm作业提交

slurm 有三种模式提交作业,分别为交互模式批处理模式分配模式,这三种方式只是作业提交方式的区别,在管理、调度、机时计算同等对待。
一般使用批处理模式提交作业,其他两种模式这里不进行详细介绍。

3.1 交互模式:srun

交互式作业提交,提交命令后,等待作业执行完成之后返回命令行操作界面。

3.2 批处理模式:sbatch

  • 批处理模式是指用户编写作业脚本,指定作业需要的资源,提交后台执行作业
  • 作业提交后进入调度状态,在资源满足要求时,分配计算节点
  • 分配到计算资源后,自动在计算节点执行用户所编辑的脚本内的命令,sbatch 命令提交作业,终端断开连接作业依然在后台运行束,直到脚本执行结束作业自动退出 (或者在作业运行时执行 scancel 命令取消作业后作业自动停止)
  • 批处理作业的脚本为一个bash或sh文本文件
  • 计算开始后,工作目录中会生成以slurm-作业号.out文件,为作业的输出

常见资源需求参数,使用SBATCH -xx xxx写入作业脚本中:

-N, --nodes=N                   #指定节点数量
-o, --output=out_filename       #指定输出文件输出
-p, --partion=debug             #指定分区
-t, --time=dd-hh:mm:ss          #作业最大运行时间

--mem:指定每个节点上使用的物理内存
--begin:指定作业开始时间
-D,--chdir:指定脚本/命令的工作目录
-c, --cpu-per-task=NCPUs        #指定每个进程使用核数,不指定默认为1
-e, --error=error_filename      #指定错误文件输出
-J, --job-name=JOBNAME          #指定作业名称
--mail-type=END/FAIL/ALL        #邮件提醒,可选:END,FAIL,ALL
--mail-user=mail_address        #通知邮箱地址
-n, --ntask=NTASKs #指定总进程数;不使用cpus-per-task,可理解为进程数即为核数 
--ntask-per-node=N #指定每个节点进程数/核数,使用-n参数后变为每个节点最多运行的进程数

-w, --nodelist=node[1,2]        #指定优先使用节点,不可与避免节点冲突
-x, --exclude=node[3,5-6]       #指定避免使用节点,不可与优先节点冲突
--mem-per-cpu=MB                #指定计算cpu最大占用内存大小

示例文件:

#!/bin/bash 
#提交单个作业
#SBATCH --job-name=JOBNAME      %指定作业名称
#SBATCH --partition=debug       %指定分区
#SBATCH --nodes=2               %指定节点数量
#SBATCH --cpus-per-task=1       %指定每个进程使用核数,不指定默认为1
#SBATCH -n 32       %指定总进程数;不使用cpus-per-task,可理解为进程数即为核数
#SBATCH --ntasks-per-node=16    %指定每个节点进程数/核数,使用-n参数(优先级更高),变为每个节点最多运行的任务数

#SBATCH --time=240:00:00      %作业最大运行时长,参考格式填写
#SBATCH --output=file_name      %指定输出文件输出
#SBATCH --error=file_name       %指定错误文件输出
#SBATCH --mail-type=ALL         %邮件提醒,可选:END,FAIL,ALL
#SBATCH --mail-user=address     %通知邮箱地址

module load apps/anaconda3/2021.05  # 加载anaconda
source activate torch1.8.1  # 加载anaconda虚拟环境

python main.py --no_static=True --model=lstm --seed=100 train_basins  # 执行python脚本

命令行输入sbatch 作业脚本名提交作业

sbatch filename

3.3 分配模式:salloc

程序部署完成后的验证性测试、调试。推荐在不确定程序是否能够正常运行时使用此流程进行测试。此方法终端中断后程序作业即退出运行,正式提交作业不推荐使用此方法。
此模式支持用户在提交作业前抢占所需要的计算资源,此时开始计算机时。程序运行完成后作业不会自动停止,直到退出终 端或 scancel 取消作业后作业才会停止,才会停止计费。
终端断开作业会立刻停止,如果作业未运行完成时终端断开会导致任务运 行中断。
执行分为三步:
(1) 提交资源分配请求,等待资源分配,资源分配到后开始计费
(2) 执行用户指定的命令
(3) 退出作业释放资源,停止计费

4 节点及作业列表查询

4.1 节点信息查看

sinfo									# 查看所有分区状态
sinfo -a 							    # 查看所有分区状态
sinfo -N								# 查看节点状态
sinfo -n node-name			            # 查看指定节点状态
sinfo --help					    	# 查看帮助信息

# 节点状态信息
alloc:节点满载
idle:节点空闲
mix:节点部分被占用
down:节点下线
drain:节点故障

4.2 作业列表查询

squeue				# 查看运行中作业列表
squeue -l 		# 查看列表细节信息
squeue -j job-id 	# 查看指定运行中的作业信息

# 作业状态
R:正在运行
PD:正在排队
CG:已完成
CD:已完成

4.3 查看作业的CPU、GPU使用情况

一般通过squeue查看作业所在的节点id,通过ssh 节点id连接作业所在节点,使用top命令查看节点的CPU使用情况,使用top nvidia-smi查看节点的GPU使用情况,使用nvidia-smi -l 刷新间隔秒数可设置显示的刷新频率。

5 作业信息查询及更新

5.1 作业信息查看

scontrol show job JOBID         #查看作业的详细信息
scontrol show node              #查看所有节点详细信息
scontrol show node node-name    #查看指定节点详细信息
scontrol show node | grep CPU   #查看各节点cpu状态
scontrol show node node-name | grep CPU #查看指定节点cpu状态

5.2 更新作业信息

作业提交后,但相关作业属性错误,取消任务修改作业后需要重新排队,在作业运行开始前可以使用scontrol更新作业的运行属性。

scontrol update jobid=JOBID ATTRIBUTE=INFO # ATTRIBUTE为下列属性名,INFO修改的属性值
partition=<name>
name=<name>
numcpus=<min_count-max_count>
numnodes=<min_count-max_count>
numtasks=<count>
reqnodelist=<nodes>
reqcores=<count>
nodelist=<nodes>
excnodelist=<nodes>
starttime=yyyy-mm-dd
timelimit=d-h:m:s
mincpusnode=<count>
minmemorycpu=<megabytes>
minmemorynode=<megabytes>

6 终止作业

scancel JOBID  # 终止作业

7 参考文献

[1] https://blog.csdn.net/nixiang_888/article/details/121405854文章来源地址https://www.toymoban.com/news/detail-450792.html

到了这里,关于Slurm作业提交、查询、修改等常用命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git常用命令 更新代码 提交代码

    Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper 。 使用命令将代码克隆到本地

    2024年02月14日
    浏览(52)
  • idea提交代码到git以及git常用命令

    本次操作以将本地代码提交到gitlab为例,不过都大同小异,差别不大。 Git 作为分布式版本控制软件,存储文件的位置叫做仓库。仓库有远程仓库(互联网上一台服务器或局域网内的一台服务器)和本地仓库(本机的一个目录)两种。 系统中任意文件夹都可以作为本地仓库。

    2024年02月04日
    浏览(109)
  • 【Git】3.git常用命令(结合提交/拉取代码)

    前言:         跟git交互有好多场景,比如第一次推送代码;第一次拉取git上已有的项目;修改代码推送解决冲突;代码提交错误会滚等。接下来就结合场景来学习git命令吧~ 目录:         前提:                 在下列场景操作时的前提是需要先配置好git全局用户名和

    2024年02月04日
    浏览(55)
  • Elasticsearch 常用的增加、删除、修改、查询语句

    新增 删除 修改 批量增删改 查询 查询指定索引下全部数据 查询指定索引下指定id的数据 查询指定索引下全部数据 查询指定值(match) 在多个字段中查询指定值(multi_match) match、multi_match是模糊匹配,匹配时会对所查找的进行分词,然后按分词匹配查找。 term 查询

    2024年02月03日
    浏览(39)
  • ES常用命令与常用查询(1)

    查看集群状态 创建索引 查看所有索引 查看索引信息 删除索引 2.1 查询所有 match_all 使用match_all,默认只会返回10条数据 返回指定条数 size 不能无限大,如果过大会出现异常 1、查询结果的窗口太大,from + size的结果必须小于或等于10000,而当前查询结果的窗 口为20000。 2、可以

    2024年02月06日
    浏览(51)
  • ES 集群常用排查命令

    说明:集群使用非默认端口9200,使用的是7116端口举例 一、常用命令 #1.集群健康状态 二、案例分析 2.1集群变红 症状:集群变红 分析:通过Allocation Explain API 发现创建索引失败,因为无法找到标记了相应box type的节点 解决:删除索引,集群变绿,重新创建索引,并且指定正确

    2024年02月09日
    浏览(40)
  • kafka 集群搭建 & 常用命令

    1、集群搭建: 1 将kafka 压缩包解压到某一目录 tar -zxvf kafka_2.12-3.5.1.tgz 2 修改节点配置文件 vim config/server.properties broker.id=0 log.dirs=/tmp/kafka-logs zookeeper 连接配置 zookeeper.connect=节点1:2181,节点2:2181,节点3:2181 3 将安装好的kafka 分发到其他服务器 scp -r kafka_2.12-2.4.1/ xxx 4配置KAFKA_HOME环

    2024年02月07日
    浏览(49)
  • ES命令行查询es集群的状态、分片、索引

    查看es集群状态 查看es分片信息 查看es索引 查看ES索引 本文参考:https://www.cnblogs.com/expiator/p/14847705.html

    2024年02月12日
    浏览(50)
  • es查看集群状态常用命令

    1.查看集群数据的正确率 active_shards_percent_as_number这个值如果低于100说明集群数据正确性存在问题,集群状态为yellow或者red都会使这个值低于100 2.查看集群索引的状态

    2024年02月11日
    浏览(43)
  • ES常用查询命令

    一、基本命令 1、获取所有_cat命令 2、获取es集群服务健康状态 epoch: 时间戳的 Unix 时间戳格式,表示快照生成的时间。 timestamp: 可读性更强的时间戳格式,表示快照生成的时间(08:06:34)。 cluster: Elasticsearch 集群的名称,这里是 \\\"es-cluster\\\"。 status: 集群的健康状态,这里是 \\\"y

    2024年02月04日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包