SLURM使用指南

目录

一 . sinfo 查看集群

二. sacct 查询历史作业

三 . squeue 查询作业状态

四 . scontrol 查看作业节点命令

五 .提交作业

1. srun

2.sbatch

3.salloc

六: 总结


一 . sinfo 查看集群

        作为查看集群状态的基本命令: Usage: sinfo [OPTIONS]

[root@master ~]# sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
CPU40*       up   infinite      2   idle server[1-2]
GPU24        up   infinite      1   idle server3
test         up   infinite      1   idle ansible
  • PARTITION:分区,提交作业时提交-p参数,来选择分区所对应的计算节点,带*为默认节点,即不指定分区默认提交到CPU40,使用server1-2计算
  • TIMELIMIT:时间限制,infinite代表分区作业无时间限制。
  • STATE:drain: 排空状态,表示该类结点不再分配到其他; idle: 空闲状态; alloc: 完全被分配状态;   mix:部分被占用,但是仍有可用资源

二. sacct 查询历史作业

 作为集群查看历史作业命令: sacct [<OPTION>]

[root@master ~]# sacct -S  2023-03-03 -E 2023-03-08  -u root
JobID           JobName  Partition    Account  AllocCPUS      State ExitCode 
------------ ---------- ---------- ---------- ---------- ---------- -------- 
6560           hostname      CPU40       root          1     FAILED      1:0 
6579           hostname      CPU40       root          2  CANCELLED      0:0 
6589            ansibel      CPU40       root          3 CANCELLED+      0:0 
6610           hostname      CPU40       root          2     FAILED      1:0 
6628           hostname      CPU40       root          2     FAILED      1:0 
6629           hostname      CPU48       root          2  COMPLETED      0:0 
6629.0         hostname                  root          2  COMPLETED      0:0 
## -S 在什么之后 -E 在日期之之前 ,通常搭配使用
## -u  用户
查看从2023-3-3到2023-3-8且用户为root的作业信息
  •  JobID: 作业id号
  • Partition: 作业运行的分区
  • Account: 账户组 :root组
  • AllocCPUS:使用的CPU核心数
  • State:COMPLETED :作业已完成; RUNNING: 作业运行中;   FAILED:作业失败;

三 .  squeue 查询作业状态

查询排队和运行状态的作业  Usage: squeue [OPTIONS]

[root@master ~]# squeue -j 7570 
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
              7570     CPU40 POL-2023   gu    R      14:56      1 server2
##-j指定 作业id
[root@master ~]# squeue -p CPU40 
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
              7570     CPU40 POL-2023  gu      R      14:56      1 server2
##-P 指定分区
[root@master ~]# squeue -u gu | head
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
              7570     CPU40 POL-2023 gu       R      14:56      1 server2

##-u 指定用户
  • ST: R为运行中; PD为排队中 S:挂起 ;CG: 正在退出
  • NODELIST(REASON):任务占据节点列显示节点名,如不是则如下情况

BeginTime:           未到用户所指定的任务开始时间
Dependency:      该作业所依赖的作业尚未完成
InvalidAccount:     用户的 SLURM 账号无效
InvalidQOS  :      用户指定的 QoS 无效
ParitionTimeLimit:    用户申请的时间超过该分区时间上限
QOSMaxCpuPerUserLimit:    超过当前 QoS 用户最大 CPU 限制
QOSMaxGRESPerUser :   超过当前 QoS 用户最大 GRES(GPU) 限制
Priority:    存在一个或多个更高优先级的任务,该任务需要等待
ReqNodeNotAvail:    所申请的部分节点不可用
Resources :   暂无闲置资源,该任务需等待其他任务完成

四 . scontrol 查看作业节点命令

显示或设定slurm作业、队列、结点等状态 scontrol [<OPTION>] [<COMMAND>]

[root@master ~]# scontrol show  nodes server1  | grep CPUAlloc
   CPUAlloc=48 CPUEfctv=48 CPUTot=48 CPULoad=40.24

##查看节点为server1的详细信息
  •  CPUAlloc:剩余未分配cpu核心数
  •  AllocMem: 剩余未分配内存
[root@master ~]# scontrol show  job 7679 | grep TRES
   TRES=cpu=1,mem=200M,node=1,billing=1
##显示作业使用资源数

五 .提交作业

                                         一切的作业的运行前提是在共享路径下才能执行

 1. srun

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

                        一般用于短时间小作业测试

[root@master ~]# srun -n 2 -p test ceshi.sh
##发个测试任务给test分区 申请2个节点

只用于简单的测试文件

2.sbatch

批处理模式:编写提交作业脚本

                  常用任务提交模式可与srun结合

[root@master ~]# cat test.sh
#!/bin/bash
#SBATCH -J test                   # 指定作业名
#SBATCH -o test.out               # 屏幕上的输出文件重定向到 test.out
#SBATCH -p test                    # 作业提交的分区为 test
#SBATCH -N 1                      # 作业申请 1 个节点
#SBATCH --cpus-per-task=4         # 单任务使用的 CPU 核心数为 4
#SBATCH -t 1:00:00                #任务运行的最长时间为 1 小时
#SBATCH --gres=gpu:A10:1          # 单个节点使用 1 块 GPU 卡
#SBATCH -t 00:00:10               # 作业最多运行10s
#SBATCH --priority 10             ##指定作业优先级为10 谨慎使用 尽可能保持默认值 紧急任务可使用
#SBATCH --qos nor_fast            #指定qos
# 运行程序 并行任务
source activate  env-name  ##运行特定anconda环境
python 1.py
srun -n 4  2.sh


[root@famaster slurm]# sbatch  test.sh
[root@famaster slurm]# sbatch -d singleton test—a.sh 
##作业名称相同的,且只有当test完成后才会运行test-a.sh
[root@famaster slurm]# squeue
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
99     debug    ceshi     root PD       0:00      1 (Dependency)
98     debug    ceshi     root  R       0:22      1 famaster

3.salloc

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

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

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

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

sbtach -N 2 -J test vasp.sh

六: 总结

     常见报错点

1.  查看作业状态 为ReqNodeNotAvail

  • 大概率是指定了主机,但是该主机不在默认分区内

2. 作业提交报错 no such file

  • 指定到其他计算节点运行,但是该节点没有该文件,一般是未放在共享路径下

3. 在 Slurm 作业脚本中加载 Conda 环境时,可能会遇到一些问题。如果您在提交作业时无法成功加载 Conda 环境,但在交互式会话中可以成功加载,可能是因为您的作业脚本没有正确设置环境变量。

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --nodelist=node1

# 设置 Conda 安装路径
CONDA_PATH=/path/to/conda

# 初始化 Conda 环境
source $CONDA_PATH/etc/profile.d/conda.sh

# 激活 my_env 环境
conda activate my_env

# 在此处添加您的作业命令
echo "Hello from my_env!"

4.  本地能够运行的脚本,但是投入集群就无法运行 

      一般是由于用户提交作业的主机下的改用户 编译器版本过低,如python默认是2.75,但是他必须要3.6以上才可以运行,一般升级版本即可

Slurm文档首页 - Slurm中英文对照文档https://docs.slurm.cn/

Slurm Workload Manager - Overview (schedmd.com)https://slurm.schedmd.com/overview.html 需更详细的资料可参照官方文档或其他个人文档,

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Slurm作业调度系统是一个用于分配和管理计算任务的开源软件。它允许用户在一个大规模的计算集群上提交、管理和监视作业。 首先,用户需要了解Slurm的基本概念。在Slurm中,一个作业是用户指定的一项计算任务,可以包括一个或多个任务。任务是作业的一个单元,可能会在不同的计算节点上执行。作业可以使用不同的资源进行调度,如CPU、内存和 GPU。用户需要清楚地定义作业的资源需求,以便Slurm可以正确地分配资源。 使用Slurm提交作业非常简单。用户只需要编写一个作业提交脚本,该脚本包含了作业的配置信息,如资源需求、输入文件、输出文件等。然后使用`sbatch`命令提交这个脚本即可。Slurm会按照其配置进行作业调度,将作业分配给相应的计算节点进行执行。 一旦作业提交后,用户可以使用`squeue`命令来跟踪作业的状态。该命令显示了作业的ID、状态、开始时间和节点信息等。用户可以根据需要使用`scancel`命令来取消作业。 Slurm还提供了一些高级功能,用于更精细地控制作业的调度和资源分配。用户可以使用`srun`命令在计算节点上启动特定的任务,并通过在作业提交脚本中设置一些参数来控制任务的执行方式。 总之,Slurm作业调度系统是一个强大且灵活的工具,可以帮助用户有效地管理和调度计算任务。通过了解基本概念和使用指南,用户可以更好地使用Slurm来利用集群资源进行高性能计算。 ### 回答2: Slurm作业调度系统是一个开源的、高效的集群管理和作业调度工具。它被广泛用于大规模计算集群和超级计算机系统。以下是使用Slurm的一些指南: 1. 提交作业:通过使用sbatch命令,可以向Slurm系统提交作业。作业通常是一个可执行的程序或脚本。可以使用sbatch命令指定作业的名称、资源需求、作业优先级等。 2. 查看作业状态:可以使用squeue命令查看当前正在运行的作业以及等待运行的作业和队列中的作业。squeue命令可以提供作业的ID、状态、用户等信息。 3. 取消作业:如果需要取消一个已经提交的作业,可以使用scancel命令。需要提供作业的ID来取消作业。 4. 调整作业优先级:使用sprio命令可以调整作业的优先级。较高优先级的作业将更早地得到处理。可以根据需求调整作业的优先级。 5. 资源管理:Slurm可以有效地分配集群的资源给不同的作业。可以使用scontrol命令设置和管理资源分配策略。可以向Slurm系统添加、删除或修改节点。 6. 队列管理:使用squeue和scontrol命令可以管理队列。可以创建、暂停、恢复、删除队列。可以根据不同的作业需求和优先级配置不同的队列。 7. 使用预定义脚本:Slurm提供了一些预定义的脚本,可以用于常见的作业操作,比如提交作业、取消作业等。可以根据需要进行修改和使用这些脚本。 8. 集群监控:Slurm提供一些工具来监控集群的状态和性能。可以使用sinfo命令查看集群中的节点状态和资源使用情况。可以使用sacct命令查看作业的执行情况和资源使用情况。 总之,Slurm作业调度系统是一个功能强大的集群管理工具,可以帮助用户高效地管理和调度作业。通过使用上述指南,用户可以更好地了解和使用Slurm系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值