slurm基本命令

这是一个slurm的命令集成文档,后续会继续更新

1. 基本知识

一些文件的位置

  • slurmd、slurmdbd、slurmctld日志文件: /var/log/
  • slurmdbd服务的配置文件: /etc/slurm/slurmdbd.conf
  • slurmctld、slurmd服务的配置文件: /etc/slurm/slurm.conf
  • 建立slurmctld服务存储其状态等的目录,由 slurm.confStateSaveLocation参数定义: /var/spool/slurmctld

服务质量(QOS)配置

对资源进行限制,比如限制用户的单个作业CPU核数、运行中作业总CPU核数、作业时长等,除了利用队列分区等外,还可以利用服务质量(Quality of Service, QOS)。利用Slurm提交作业时,可以为每个作业赋予一个QOS,与作业相关的QOS有三种途径:

  • 作业调度优先级:Job Scheduling Priority (qos中的参数Priority) priority越大优先级越高

  • 作业抢占:Job Preemption (slurm.conf)

  • 作业限制:Job Limits (QOS设置)

部署服务的命令

service:服务

slurmdbd(记账服务)
slurmctld(控制管理服务)
slurmd(作业调度服务)

管理结点 需要开启以上三种服务, 计算节点 只需要开启slurmd 作业调度服务即可

NODESTATE:节点状态

节点的状态可以通过命令:sinfo 进行查看

节点的状态包括:

  • allocated、alloc:已分配,正在使用
  • completing、comp:已完成
  • idle:未分配,可使用
  • mixed:混合,节点在运行作业,但有些空闲 CPU 核,可接受新作业
  • drained、drain:故障
  • down:宕机
  • fail:已失败
  • reserved、resv:资源预留
  • unknown、unk:未知原因
  • 如果状态带有后缀 *,表示节点没有响应

JOBSTATE:作业状态

作业状态可以通过命令:squeue 查看最近正在运行以及正在排队的任务
也可以通过命令:sacct 查看今天一天的任务

任务的状态包括:

  • R\RUNNING:正在运行
  • PD\PENDING:正在排队
  • CG\COMPLENTING:一个无法终止的作业
  • CD\COMPLETED:已完成
  • FAILED:执行失败

2. sacctmgr:用于查看和修改Slurm账户信息

sacctmgr 用于查看或者修改Slurm账户信息,Slurm账户信息在数据库中维护,接口由slurmdbd(Slurm Database守护程序)提供,该数据库可以作为单个站点上多台计算机的用户和计算机信息的中央仓库。基于形成所谓的关联的四个参数来记录Slurm账户信息
记录的Slurm账户信息包括:用户、集群、分区和账户

  • 用户(user):系统登录名
  • 集群(cluster):集群名称,是在slurm.conf配置的参数:ClusterName
  • 分区(partition):该Slurm集群上的分支
  • 账户(account):银行账户,计费所用

sacctmgr 的命令格式一般是 sacctmgr[options][command]

3. sbatch:用于批处理作业提交。此脚本一般也可以含有一个或者多个srun命令启动并行任务

准备作业脚本然后通过 sbatch 提交是slurm提交任务的最常用手段,为了将作业脚本提交给作业系统,slurm使用

[root@master tanzitao_slurm]# sbatch while.slurm <-- 其中 while.slurm 是自己编写的脚本任务

脚本任务内容

options function case
-D,–chdir [work_dir] 指定该任务的工作目录
直接影响提交Job的目录
#SBATCH -D /opt/work 需要运行的job在work目录下
-J,–job-name [jobname] 指定作业名 #SBATCH -J test 此作业名称为 test
-A,–account [account] 指定计费账户 #SBATCH -A aaa 指定计费账户为 aaa
-p,–partition [parition] 指定作业队列 #SBACTH -p master 指定作业工作队列在 master
-o,–output [file_name] 输出文件重定向 #SBATCH -o test.out 内容输出到:test.out
-e,–error [file_name] 错误信息文件重定向 #SBATCH -o test.err 报错信息输出到:test.err
-t,–time [time] (xx:xx:xx)个人推荐 作业最大运行时间 #SBATCH -t 00:00:10 作业最多运行10s
-N,–nodes [num_node] 作业申请节点数 #SBATCH -N 2 申请两个节点完成作业
-w,–nodelist [hosts] 指定作业节点(可多个) #SBATCH -w master,node[01-02] 指定作业偏好在master、node01和node02上执行
ps:作业申请节点数需要对于为n
-x,–exclude [hosts] 指定作业排除的作业节点(可多个) #SBATCH -x master,node01 指定作业不在master和node01两个节点上执行
-q,–qos [qos_name] 指定qos服务 #SBATCH -q normal 指定名为 normal的qos服务
–ntask-per-node [number] 每个节点上运行的任务数量n,默认情况下可以理解为:
每个节点使用的n个核心
如果程序不支持多线程,这个数不应该超过1
#SBATCH -n 1 每个节点上运行的任务数量为n
-c,–cpus-per-task [num_cpu] 作业请求cpus数 #SBATCH -c 2 指定作业使用两个cpu核心
–gres [list] 指定作业使用gpu这类资源 #SBATCH --gres=gup:2 指定作业使用两块gpu
–priority [level] 指定作业的运行优先等级 #SBATCH --priority 10 指定作业优先级为10

每个 options 前面都需要跟一个 #SBATCH ,以下是一个脚本的例子

#!/bin/bash                 <-- 必须引入Bash程序
#SBATCH -J while            <-- 作业名 while
#SBATCH -o while.out        <-- 作业输出 while.out 文件
#SBACTH -e while.err        <-- 作业错误信息输出 while.err
#SBATCH -p master           <-- 指定分区\队列 master
#SBATCH -w node01           <-- 指定作业运行偏好 node01 节点
#SBATCH -N 1                <-- 作业申请节点数为1python while.py             <-- 执行的作业内容

4. scontrol:显示或设定slurm作业、队列、结点等状态

查看信息

sontrol show 是slurm查询内容的开头,以此可以查询许多的内容

  • scontrol show partition [PARTITION-NAME](可忽略): 查看分区信息
  • scontrol show node [NODE-NAME](可忽略) : 查看指定节点信息
  • scontrol show job [JOBID] : 查看某个任务信息

更新作业

在任务开始之前发现作业的属性写错了(例如提交错分区,分配资源有误),如果取消重新排队似乎很不划算。如果作业恰好 正在排队 可以通过 scontrol 命令更新作业的属性

scontrol update jobid=JOBID ... #...为下面参数
reqnodelist=<nodes>
reqcores=<count>
name=<name>
nodelist=<nodes>
excnodelist=<nodes>
numcpus=<min_count-max_count>
numnodes=<min_count-max_count>
numtasks=<count>
starttime=yyyy-mm-dd
partition=<name>
timelimit=d-h:m:s
mincpusnode=<count>
minmemorycpu=<megabytes>
minmemorynode=<megabytes>

5. sacct:显示激活的或者已经完成作业或作业步的记账信息

查询所有任务信息(默认只能查询一天的任务)

[root@master slurm]# sacct --allocationsJobID    JobName  Partition    Account  AllocCPUS      State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
753               while     master       root          1  CANCELLED     0:15
754               while      test1       root          1 CANCELLED+      0:0
755               while      test2       root          1     FAILED      2:0

查询指定时间段所有任务信息

[root@master slurm]#sacct --starttime 2022-08-10T00:00:00 --endtime 2022-08-10T22:00:00JobID    JobName  Partition    Account  AllocCPUS      State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
751.batch         batch                  root          1     FAILED      2:0
752               while     master       root          1 CANCELLED+      0:0
752.batch         batch                  root          1  CANCELLED     0:15

查询详情作业详情

[root@master tanzitao_slurm]# sacct --format=JobId,state,user,account,partition,jobname,nodelist,nnodes,submit,start,end,suspended,ncpus,MaxRss,elapsed,allocgresJobID      State      User    Account  Partition    JobName        NodeList   NNodes              Submit               Start                 End  Suspended      NCPUS     MaxRSS    Elapsed    AllocGRES
------------ ---------- --------- ---------- ---------- ---------- --------------- -------- ------------------- ------------------- ------------------- ---------- ---------- ---------- ---------- ------------
753           CANCELLED      root       root     master      while          master        1 2022-08-11T09:50:21 2022-08-11T09:50:21 2022-08-11T09:59:55   00:00:00          1              00:09:34

6. sinfo:查看集群状态(常用)

options function case
sinfo 查看总体资源信息
sinfo -N 查看节点信息
sinfo -t=[NODESTATE] 查看指定节点状态信息
sinfo -p=[PARTITION] 查看指定队列信息

7. squeue:查看作业信息(常用)

options function case
squeue 查看所有作业信息
squeue -l 查看所有作业更多细节
squeue -n [TAKENAME] 查看特定节点作业信息
squeue -j [JOBID] 查看指定作业信息
squeue -t=[JOBSTATE] 查看指定状态作业

slurm基本命令(持续更新)相关推荐

  1. Kerberos 基本命令 - 持续更新

    授权添加yarn账户 [root@xxx ~]# kadmin.local Authenticating as principal cloudera-scm/admin@JAST.COM with p ...

  2. 【Linux常用命令】linux常用命令集合配例子解析说明(持续更新)【Linux基础命令使用及总结】2020-12-21

    Linux基本命令集合(持续更新) 前言 一.pwd命令 二.ls命令 三.cd命令 前言 本文将随着个人头发稀疏程度的时间戳而更新,且这个列举的命令,不管简单复制与否,都会逐一做出举例解释说明,但某 ...

  3. s-systemtap工具使用图谱(持续更新)

    整体的学习思维导图如下,后续持续更新完善 文章目录 安装 简介 执行流程 执行方式 stap脚本语法 探针语法 API函数 探针举例 变量使用 基本应用 1. 定位函数位置 2. 查看文件能够添加探针 ...

  4. swift 错误集合 ------持续更新中

    从今天开始凡是在用swift中遇到的错误都会在本博客持续更新 便于自己学习和快速开发 2017.7.20 如果你的程序写的有进入后台的方法,例如我的博客中点击home进入后台持续定位的那篇文章,发信进 ...

  5. 快应用开发常见问题以及解决方案【持续更新】

    接触快应用也有一段时间了,踩过了大大小小的坑,让我活到了今天.准备在此立贴持续更新,记录遇到的问题以及解决方案,造福大众. css 方面 1.文字竖排不支持 目前官方还不支持writing-mode, ...

  6. Java 最常见的 10000+ 面试题及答案整理:持续更新

    Java面试题以及答案整理[最新版]Java高级面试题大全(2021版),发现网上很多Java面试题都没有答案,所以花了很长时间搜集,本套Java面试题大全,汇总了大量经典的Java程序员面试题以及答 ...

  7. UDP 构建p2p打洞过程的实现原理(持续更新)

    UDP 构建p2p打洞过程的实现原理(持续更新) 发表于7个月前(2015-01-19 10:55)   阅读(433) | 评论(0) 8人收藏此文章, 我要收藏 赞0 8月22日珠海 OSC 源创 ...

  8. 大四狗找工作,持续更新

    持续更新中.... 转载于:https://www.cnblogs.com/Wiki-ki/p/3979176.html

  9. 中date转为string_股票数据获取篇(持续更新中...)

    这是第一篇量化交易学习文,心里还是有点忐忑,毕竟自己不是金融人士,金融业务能力匮乏,所以从最简单的数据获取入手,各种概念各种策略还在学习中.回测框架选择backtrader,因为网上对此框架的评价甚高 ...

最新文章

  1. 实现O(1)时间复杂度带有min和max 函数的栈
  2. vuejs,angularjs,reactjs介绍
  3. MySQL之查询性能优化(四)
  4. 职场小白靠这三招PDF技巧逆袭为职场达人
  5. Word2Vec模型详解
  6. 电脑重装系统找不到计算机了,戴尔电脑重装系统后找不到硬盘或找不到引导设备怎么办?...
  7. 截止到2011年,在五大学科国际奥赛获得金牌最多的中学们
  8. 离开谷歌回归斯坦福,“AI女神”李飞飞新动向揭晓
  9. mqtt消息推送中间件服务器软件评价
  10. Android使用七牛实现录像加时间水印和拍照(截帧回调)
  11. python爬虫使用session保持登录状态
  12. php编写当前日期距高考天数,距离2021年高考天数 2021高考倒计时
  13. h'tml和java代码,Tapestry 教程(七)在Tapestry中一起使用Hibernate
  14. 音频提取以及人声处理
  15. 云计算学习资料免费下载
  16. 拖动的层,可应用课件中视频置于ppt讲稿的效果
  17. github优秀项目分享:基于yolov3的轻量级人脸检测、增值税发票OCR识别 等8大项目...
  18. nor flash之写保护
  19. VTK7.1.1+VS2017的安装配置
  20. 一个茶杯有什么用途?一只铅笔的用途

热门文章

  1. ORB-SLAM笔记———ORB-SLAM3概述
  2. 分享十次Android面试经验总结,已收字节,阿里,从三流Android外包到秒杀阿里P7,
  3. 开源工作流可以解决什么问题?
  4. 全基因组关联分析(GWAS)
  5. 听完网易大佬描述 “ 软件测试工程师的一生 ”,我哭了!
  6. 以太网UDP数据协议
  7. Python的生成器函数
  8. Word2Vec中的gensim报错from gensim.models.word2vec import Vocab报错问题
  9. arachni安装与使用
  10. OCJP 1Z0-808考题全解析(含题目下载,持续更新中(60/236))