栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

常用Slurm作业投递及查询命令

常用Slurm作业投递及查询命令

1. 集群常用概念

job step: 作业步,单个作业可以有多个作业步
partition:分区,作业需要在特定分区中运行(理解为定义了队列,每个队列中包含不同节点)
QOS:服务质量,可理解为用户可使用的CPU,内存等资源限制
tasks:任务数,默认一个任务使用一个cpu核,可理解为job所需的cpu核数
socket:cpu插槽,即物理cpu颗数

2. Slurm 基本命令

salloc:为实时处理的作业分配资源

  • 典型场景为分配资源并启动一个shell,然 后用此shell执行srun命令去执行并行任务。

sbatch:提交作业脚本使其运行。

  • 此脚本一般也可含有一个或多个srun命令,启动并行任务。

scancel:取消排队或运行中的作业或作业步。

scontrol:显示或设定Slurm作业、队列、节点等状态。

sinfo:显示队列或节点状态。

squeue:显示队列中的作业及作业步状态。

srun:实时交互式运行并行作业,一般用于短时间测试,或者与sallcoc及sbatch结合。

3. Slurm 提交作业模式

Slurm 提交作业有 3 种模式,分别为交互模式,批处理模式,分配模式,这三种方式只是用户使用方式的区别,在管理,调度,记账时同等对待。

3.1 交互模式:srun

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

# 常用于测试
srun -p queue2 hostname
# 使用python提交命令
srun -p partitionName -w nodeName python3 /pipeline/test.py
# -p:指定分区
# -w:指定运行节点名称
# -n:指定多少个进程
其他常用命令
# 在 shell 窗口中执行 srun 命令,主要命令格式如下:
srun [options] program

srun 常用选项:srun 包括多个选项,其中最常用的选项主要有以下几个:
-n, –ntasks=number
	指定要运行的任务数。请求为 number 个任务分配资源,默认为每个任务一个处理器核。

-c, –cpus-per-task=ncpus
    告知资源管理系统控制进程,作业的每个任务需要 ncpus 个处理器核。若未指定此选项,则控制进程默认为每个任务分配一个处理器核。

-N, –nodes=minnodes[-maxnodes]
    请求为作业至少分配 minnodes 个结点。调度器可能觉得在多于 minnodes 个结点上运行作业。可以通过 maxnodes 限制最多分配的结点数目(例如“-N 2-4”或“–nodes=2-4”)。最少和最多结点数目可以相同以指定特定的结点数目(例如, “-N 2”或“–nodes=2-2” 将请求两个且仅两个结点)。分区的结点数目限制将覆盖作业的请求。如果作业的结点限制超出了分区中配置的结点数目,作业将被拒绝。 如果没有指定-N,缺省行为是分配足够多的结点以满足-n 和-c 参数的需求。在允许的限制范围内以及不延迟作业开始运行的前提下,作业将被分配尽可能多的结点。

-p, –partition=partition name
    在指定分区中分配资源。请使用 -p [hpxg|hpib|debug] 指定所使用的分区。

# 示例:在CPU-Small分区单节点单核运行chart.e程序
# srun -N 1 -n 1 -p CPU-Small ./chart.e
3.2 批处理模式:sbatch
  • 批处理作业是指用户编写作业脚本,指定资源需求约束,提交后台执行作业
  • 此时作业在入调度状态,在资源满足要求时,分配完计算结点之后,系统将在所分配的第一个计算结点(而不是登录结点)上加载执行用户的作业脚本
  • 批处理作业的脚本为一个文本文件,脚本第一行以 “#!” 字符开头,并制定脚本文件的解释程序,如 sh,bash(因为计算节点为精简环境,只提供 sh 和 bash 的默认支持)
  • 计算开始后,工作目录中会生成以 slurm 开头的.out 文件为输出文件
  • 作业脚本为文本文件,首行以 “#!” 开头,指定解释程序
  • 脚本中可通过 srun 加载计算任务
  • 一个作业可包含多个作业步
  • 脚本在管理节点上提交,实际在计算节点上执行
  • 脚本输出写到输出文件中

一些常见的资源需求参数(在脚本文件中使用 #SBATCH -XX XXX的方式写入脚本):

-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:指定脚本/命令的工作目录
示例文件
#!/bin/bash
#SBATCH -J array
#SBATCH -p compute
#SBATCH -N 1

input=(foo bar baz)
echo "This is job #${SLURM_ARRAY_JOB_ID}, with parameter ${input[$SLURM_ARRAY_TASK_ID]}"
echo "There are ${SLURM_ARRAY_TASK_COUNT} task(s) in the array."
echo "  Max index is ${SLURM_ARRAY_TASK_MAX}"
echo "  Min index is ${SLURM_ARRAY_TASK_MIN}"
sleep 5


# -------------------------------------#
# 作业 ID 是 81,而作业数组 ID 中的每个元素的命名方式为 JOBID_TASKID,非常 容易分辨。
# 以下是其中某个作业的输出:
# 	slurm-81.out
3.3 分配模式:salloc

结点资源抢占命令。该命令支持用户在提交作业前,抢占所需计算资源(此时开始计算所用机时)。

  • 执行分为四步:

      1.提交资源分配请求,作业排队等待资源分配,作业开始运行,开始计费;
      
      2.执行用户指定的命令;
      
      3.命令执行结束;
      
      4.退出作业释放资源,作业停止运行,停止计费。
    
其他常用命令
squeue:检查队列状况
scancel:结合作业ID,终止作业
swatch+节点名称+top:查看cpu使用情况
swatch+节点名称+free:查看内存使用情况
scontrol update NodeName=m1 State=idle:修改节点状态
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583926.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号