Slurm 命令使用说明
草稿: 本文因某种原因尚未公开。
专栏文章
Slurm Client 使用介绍
常用命令
- sacct 查看历史作业信息
- sacctmgr 显示和设置账户关联的
QOS等信息 - salloc 分配资源
- sattach 将标准输入、输出和错误信号功能附加到正在运行的作业或作业步骤
- sbatch 提交批处理作业,指定的脚本一般会包含一个或多个
srun命令启动并行任务 - sbcast 将文件从本地磁盘传输到分配给作业的节点上的本地磁盘
- scancel 取消排队或运行中的作业
- scontrol 系统控制
- sdiag 调度诊断工具
- seff Perl tools to print Slurm job state information(slurm-contribs)
- sinfo 查看节点与分区状态
- smap 作业、分区和节点的状态信息以图形方式显示
- squeue 查看作业队列状态
- sreport 从 slurm 会计数据生成报告
- srun 执行作业
- sshare 列出群集关联共享的工具,
NormShares表示公平分享 - sstat 显示正在运行的作业/步骤的各种状态信息
- strigger 获取或查看事件触发器
- sview 图形用户界面,获取和更新 Slurm 管理的作业、分区和节点的状态信息。安装命令
yum install -y slurm-sview-ohpc
sinfo
检查节点状态
$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
normal up 1-00:00:00 3 idle c[1-3]
$ sinfo -R
REASON USER TIMESTAMP NODELIST
$ sinfo -l
Sun Aug 15 15:36:38 2021
PARTITION AVAIL TIMELIMIT JOB_SIZE ROOT OVERSUBS GROUPS NODES STATE NODELIST
normal up 1-00:00:00 1-infinite no NO all 3 allocated c[1-3]
# 查看计算节点 CPU allocated/idle/other/total 情况
$ sinfo --format="%12P %.10n %.5T %.14C"
PARTITION HOSTNAMES STATE CPUS(A/I/O/T)
normal c1 idle 0/32/0/32
normal c2 idle 0/32/0/32
normal c3 idle 0/32/0/32
$ sinfo -o "%P %C"
PARTITION CPUS(A/I/O/T)
normal 0/32/0/32
debiug* 0/0/32/32
$ sinfo -p force1 -O CPUs,Nodes,CPUsState
$ sinfo -p normal -O "CPUs,Nodes,AllocMem,Gres,available,CPUsState"
CPUS NODES ALLOCMEM GRES AVAIL CPUS(A/I/O/T)
256 1 600 (null) up 6/250/0/256
$ sinfo -O GresUsed,Gres
GRES_USED GRES
gpu:0 (null)
gpu:tesla:0(IDX:N/A)gpu:tesla:2
$ sinfo -o "%P %C %T %G %GresUsed"
PARTITION CPUS(A/I/O/T) STATE GRES GRESresUsed
p1 12/244/0/256 mixed (null) (null)resUsed
p2 0/48/0/48 idle gpu:tesla:2 gpu:tesla:2resUsed
gpu 0/48/0/48 idle gpu:tesla:2 gpu:tesla:2resUsed
$ sinfo -o "%all"
AVAIL|ACTIVE_FEATURES|CPUS|TMP_DISK|FREE_MEM|AVAIL_FEATURES|GROUPS|OVERSUBSCRIBE|TIMELIMIT|MEMORY|HOSTNAMES|NODE_ADDR|PRIO_TIER|ROOT|JOB_SIZE|STATE|USER|VERSION|WEIGHT|S:C:T|NODES(A/I) |MAX_CPUS_PER_NODE |CPUS(A/I/O/T) |NODES |REASON |NODES(A/I/O/T) |GRES |TIMESTAMP |PRIO_JOB_FACTOR |DEFAULTTIME |PREEMPT_MODE |NODELIST |CPU_LOAD |PARTITION |PARTITION |ALLOCNODES |STATE |USER |CLUSTER |SOCKETS |CORES |THREADS
up|(null)|256|0|1951925|(null)|all|YES:4|3-00:00:00|2051799|c3|c3|1|no|1-infinite|mix|Unknown|20.11.8|1|2:64:2|1/0 |UNLIMITED |12/244/0/256 |1 |none |1/0/0/1 |(null) |Unknown |1 |n/a |GANG,REQUEUE |c3 |8.26 |p1 |p1 |all |mixed |Unknown |N/A |2 |64 |2
up|(null)|48|0|353600|(null)|all|YES:4|3-00:00:00|385414|c1|c1|1|no|1-infinite|mix|Unknown|20.11.8|1|2:12:2|1/0 |UNLIMITED |6/42/0/48 |1 |none |1/0/0/1 |gpu:tesla:2 |Unknown |1 |n/a |GANG,REQUEUE |c1 |0.02 |p2 |p2 |all |mixed |Unknown |N/A |2 |12 |2
up|(null)|48|0|353600|(null)|all|YES:4|3-00:00:00|385414|c1|c1|1|no|1-infinite|mix|Unknown|20.11.8|1|2:12:2|1/0 |UNLIMITED |6/42/0/48 |1 |none |1/0/0/1 |gpu:tesla:2 |Unknown |1 |n/a |GANG,REQUEUE |c1 |0.02 |gpu |gpu |all |mixed |Unknown |N/A |2 |12 |2
$ sinfo -o "%10P %.5a %.10l %.16F %40N %E"
PARTITION AVAIL TIMELIMIT NODES(A/I/O/T) NODELIST REASON
normal up 3-00:00:00 1/0/0/1 c3 none
normal up 3-00:00:00 1/0/0/1 c1 none
gpu up 3-00:00:00 1/0/0/1 c1 none
$ sinfo -p normal -o "%m %e %a %n"
MEMORY FREE_MEM AVAIL HOSTNAMES
505465 N/A up c1
505465 493951 up c2
505465 494037 up c3参数含义
- PARRITION:节点所在分区
- AVAIL:分区状态
- up 可用
- down 不可用
- TIMELIMIT:程序运行最大时长,
infinite表示不限制,限制时格式为:days-houres:minutes:seconds - NODES:节点数
- STATE:节点状态(如果状态后跟*,表示节点没有响应),可能的状态包括:
- allocated、alloc:已分配
- completing、comp:完成中
- down:宕机
- drained、drain:已失去活力
- fail:失效
- idle:空闲
- mixed:混合,节点在运行作业,但有些空闲 CPU 核,可接受新作业
- reserved、resv:资源预留
- unknown、unk:未知原因
- NODELIST:节点名列表
命令行参数
- -a, –all 查看所有分区信息
- -d, –dead 查看处于 dead 状态的详细信息
- -l, –long 查看分区详细信息
- -N, –Node 查看节点信息
- -p
, –partition= 查看指定分区信息 - -t
, –state= 查看指定状态的节点
squeue
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
4 normal bash xiexianb R 13:43 3 c[1-3]
$ squeue -r/-q all/-a
# 查看指定作业的信息
$ squeue -j <job-id>
# 查看指定作业的详细信息
$ squeue -j <job-id> -l
# 查看指定账户的作业信息
$ squeue -u <usename>
# 查看指定 parition 的作业信息
$ squeue -p <parition-name>
# 查看指定节点的作业信息
$ squeue -w <hostname>
# 交替显示作业队列,SchedulerTimeSlice=30
$ squeue -i 30参数含义:
- JOBID:作业号
- PARITION:分区名
- NAME:作业名
- USER:用户名
- ST:状态,常见的状态包括:
- PD:排队中,PENDING
- R:运行中,RUNNING
- CA:已取消,CANCELLED
- CF:配置中,CONFIGURING
- CG:完成中,COMPLETING
- CD:已完成,COMPLETED
- F:已失败,FAILED
- TO:超时,TIMEOUT
- NF:节点失效,NODE FAILURE
- SE:特殊退出状态,SPECIAL EXIT STATE
- S:挂起,SUSPENDED
- PR:抢占,PREEMPTED
- TIME:运行时长,格式为:
days-houres:minutes:seconds - NODELIST(REASON):节点名列表,若异常显示原因
- AssociationCpuLimit:作业指定的关联 CPU 已在用,作业最终会运行
- AssociationMaxJobsLimit:作业关联的最大作业数已到,作业最终会运行
- AssociationNodeLimit:作业指定的关联节点已在用,作业最终会运行
- AssociationJobLimit:作业达到其最大允许的作业数限制
- AssociationResourceLimit:作业达到其最大允许的资源限制
- AssociationTimeLimit:作业达到时间限制
- BadConstraints:作业含有无法满足的约束
- BeginTime:作业最早开始时间尚未达到
- Cleaning:作业被重新排入队列,并且仍旧在执行之前运行的清理工作
- Dependency:作业等待一个依赖的作业结束后才能运行
- FrontEndDown:没有前端节点可用于执行此作业
- InactiveLimit:作业达到系统非激活限制
- InvalidAccount:作业用户无效,建议取消该作业重新采用正确账户提交
- InvalidQOS:作业 QOS 无效,建议取消该作业重新采用正确 QoS 提交
- JobHeldAdmin:作业被系统管理员挂起
- JobHeldUser:作业被用户自己挂起
- JobLaunchFailure:作业无法被启动,有可能因为文件系统故障、无效程序名等
- Licenses:作业等待相应的授权
- NodeDown:作业所需的节点宕机
- NonZeroExitCode:作业停止时退出代码非零
- PartitionDown:作业所需的队列出于 DOWN 状态
- PartitionInactive:作业所需的队列处于 Inactive 状态
- PartitionNodeLimit:作业所需的节点超过所用队列当前限制
- PartitionTimeLimit:作业所需的队列达到时间限制
- PartitionCpuLimit:该作业使用的队列对应的 CPU 已经被使用,作业最终会运行
- PartitionMaxJobsLimit:该作业使用的队列的最大作业数已到,作业最终会运行
- PartitionNodeLimit:该作业使用的队列对指定的节点都已在用,作业最终会运行
- Priority:作业所需的队列存在高等级作业或预留
- Prolog:作业的 PrologSlurmctld 前处理程序仍旧在运行
- QOSJobLimit:作业的 QOS 达到其最大作业数限制
- QOSResourceLimit:作业的 QOS 达到其最大资源限制
- QOSGrpCpuLimit: 作业的 QoS 的指定所有 CPU 已被占用,作业最终会运行
- QOSGrpMaxJobsLimit:作业的 QoS 的最大作业数已到,作业最终会运行
- QOSGrpNodeLimit:作业的 QoS 指定的节点都已经被占用,作业最终会运行
- QOSTimeLimit:作业的 QOS 达到其时间限制
- QOSUsageThreshold:所需的 QOS 阈值被违反
- ReqNodeNotAvail:作业所需的节点无效,如节点宕机
- Reservation:作业等待其预留的资源可用
- Resources:作业将要等待所需要的资源满足后才运行
- SystemFailure:Slurm 系统失效,如文件系统、网络失效等
- TimeLimit:作业超过去时间限制
- QOSUsageThreshold:所需的 QOS 阈值被违反
- WaitingForScheduling:等待被调度中
节点
slurm 节点状态:
- alloc 节点已经分配了一个或者多个作业且所有核心用满
- drain 节点已经下线
- down 节点下线
- drng 已下线但仍有作业在运行
- idle 节点可用
- mix 核心部分占用
- unk 未知
计算节点:
slurmd -Cscancel
# 取消作业
$ scancel <job-id>
# Cancel array ID 1 to 3 from job array 20
$ scancel 20_[1-3]
# Cancel array ID 4 and 5 from job array 20
$ scancel 20_4 20_5
# Cancel all elements from job array 20
$ scancel 20
# Cancel the current job or job array element (if job array)
if [[ -z $SLURM_ARRAY_JOB_ID ]]; then
scancel $SLURM_JOB_ID
else
scancel ${SLURM_ARRAY_JOB_ID}_${SLURM_ARRAY_TASK_ID}
fi
# 取消指定作业名的作业
scancel -n <job-name>
# 取消指定队列的作业
scancel -p <parition-name>
# 取消正在排队的作业
scancel -t PENDING
# 取消指定计算节点上的作业
scancel -w <hostname>
# 取消执行用户的作业
scancel -u <uid>大量作业需要取消时,使用 scancel 会有限制删除策略。要快速删除作业,可以将 slurmctld 服务停止后删除 job_state 文件,再重启服务。
sbcast
$ salloc -N1024 bash
$ sbcast a.out /tmp/joe.a.outseff
# 查看作业的 CPU、Memory 使用率
$ seff 301
Job ID: 301
Cluster: hpc
User/Group: abc/abc
State: CANCELLED (exit code 0)
Nodes: 1
Cores per node: 2
CPU Utilized: 00:00:26
CPU Efficiency: 48.15% of 00:00:54 core-walltime
Job Wall-clock time: 00:00:27
Memory Utilized: 0.00 MB (estimated maximum)
Memory Efficiency: 0.00% of 4.88 GB (2.44 GB/core)strigger
# 获取触发器
strigger --getsdiag
[root@sms ~]# sdiag
*******************************************************
sdiag output at Sun Aug 15 13:50:03 2021 (1629049803)
Data since Sun Aug 15 13:51:03 2021 (1629049863)
*******************************************************
Server thread count: 3
Agent queue size: 0
Agent count: 0
Agent thread count: 0
DBD Agent queue size: 0
Jobs submitted: 0
Jobs started: 0
Jobs completed: 0
Jobs canceled: 0
Jobs failed: 0
Job states ts: Sun Aug 15 13:50:03 2021 (1629049803)
Jobs pending: 0
Jobs running: 0
Main schedule statistics (microseconds):
Last cycle: 47
Max cycle: 47
Total cycles: 1
Mean cycle: 47
Mean depth cycle: 0
Last queue length: 0
Backfilling stats
Total backfilled jobs (since last slurm start): 0
Total backfilled jobs (since last stats cycle start): 0
Total backfilled heterogeneous job components: 0
Total cycles: 0
Last cycle when: N/A
Last cycle: 0
Max cycle: 0
Last depth cycle: 0
Last depth cycle (try sched): 0
Last queue length: 0
Last table size: 0
Latency for 1000 calls to gettimeofday(): 20 microseconds
Remote Procedure Call statistics by message type
REQUEST_PARTITION_INFO ( 2009) count:2 ave_time:412 total_time:825
MESSAGE_NODE_REGISTRATION_STATUS ( 1002) count:1 ave_time:857 total_time:857
REQUEST_NODE_INFO ( 2007) count:1 ave_time:711 total_time:711
REQUEST_JOB_INFO ( 2003) count:1 ave_time:310 total_time:310
REQUEST_STATS_INFO ( 2035) count:1 ave_time:427 total_time:427
Remote Procedure Call statistics by user
root ( 0) count:6 ave_time:521 total_time:3130
Pending RPC statistics
No pending RPCssprio
查看作业优先级的具体构成因素
$ sprio
JOBID PARTITION PRIORITY SITE FAIRSHARE PARTITION QOS
23 debug 1219 0 220 1000 0
24 normal 2000 0 1000 1000 0sstat
报告正在运行的作业/作业步的信息,包含状态采集
$ sstat 2 -p
JobID|MaxVMSize|MaxVMSizeNode|MaxVMSizeTask|AveVMSize|MaxRSS|MaxRSSNode|MaxRSSTask|AveRSS|MaxPages|MaxPagesNode|MaxPagesTask|AvePages|MinCPU|MinCPUNode|MinCPUTask|AveCPU|NTasks|AveCPUFreq|ReqCPUFreqMin|ReqCPUFreqMax|ReqCPUFreqGov|ConsumedEnergy|MaxDiskRead|MaxDiskReadNode|MaxDiskReadTask|AveDiskRead|MaxDiskWrite|MaxDiskWriteNode|MaxDiskWriteTask|AveDiskWrite|TRESUsageInAve|TRESUsageInMax|TRESUsageInMaxNode|TRESUsageInMaxTask|TRESUsageInMin|TRESUsageInMinNode|TRESUsageInMinTask|TRESUsageInTot|TRESUsageOutAve|TRESUsageOutMax|TRESUsageOutMaxNode|TRESUsageOutMaxTask|TRESUsageOutMin|TRESUsageOutMinNode|TRESUsageOutMinTask|TRESUsageOutTot|
2.0|1337996K|c1|0|1337996K|876440K|c1|0|876440K|0|c1|0|0|00:02.000|c1|0|00:02.000|1|0|Unknown|Unknown|Unknown|0|8526169|c1|0|8526169|34422|c1|0|34422|cpu=00:00:02,energy=0,fs/disk=8526169,mem=876440K,pages=0,vmem=1337996K|cpu=00:00:02,energy=0,fs/disk=8526169,mem=876440K,pages=0,vmem=1337996K|cpu=c1,energy=c1,fs/disk=c1,mem=c1,pages=c1,vmem=c1|cpu=00:00:00,fs/disk=0,mem=0,pages=0,vmem=0|cpu=00:00:02,energy=0,fs/disk=8526169,mem=876440K,pages=0,vmem=1337996K|cpu=c1,energy=c1,fs/disk=c1,mem=c1,pages=c1,vmem=c1|cpu=00:00:00,fs/disk=0,mem=0,pages=0,vmem=0|cpu=00:00:02,energy=0,fs/disk=8526169,mem=876440K,pages=0,vmem=1337996K|energy=0,fs/disk=34422|energy=0,fs/disk=34422|energy=c1,fs/disk=c1|fs/disk=0|energy=0,fs/disk=34422|energy=c1,fs/disk=c1|fs/disk=0|energy=0,fs/disk=34422|AveCPU:作业中所有 task 的平均 CPU 耗时(Average CPU time of all tasks,即系统态与用户态 CPU 时间的均值;而总消耗 CPU 时间对应 TotalCPU)
sshare
查看各账号的公平共享相关数据
[root@sms1 ~]# sshare
Account User RawShares NormShares RawUsage EffectvUsage FairShare
-------------------- ---------- ---------- ----------- ----------- ------------- ----------
root 0.000000 140134 1.000000
root root 1 0.333333 0 0.000000 1.000000
user1 1 0.333333 1 0.000011
user2 1 0.333333 0 0.000000- 上一页: Linux limits.conf 详解与配置
- 下一页: 梯度
专栏文章
- Slurm 开发
- Slurm rpmbuild
- Slurm 相关术语
- Slurm QoS 使用
- Slurm Job
- Slurm Partition 使用
- Slurm REST API 使用
- Slurm scontrol 命令
- Slurm sacct/sacctmgr 命令
- Slurm 命令使用说明(当前)
- Slurm sreport 命令
- Slurm FaQ
- Slurm 安装部署
最近更新
最新评论