slurm命令行介绍

Slurm ( Simple Linux Utility for Resource Management ,http://slurm.schedmd.com/ )是开源的、具有容错性和高度可扩展大型和小型 Linux集群资源管理和作业调度系统。超级计算系统可利用 Slurm 进行资源和作业管理,以避免相互干扰,提高运行效率。所有需运行的作业无论是用于程序调试还是业务计算均必须通过交互式并行 srun、批处理式 sbatch 或分配式 salloc 等命令提交,提交后可以利用相关命令查询作业状态等。

本页目录

基本概念

Slurm 利用分区(partition)对 CPU、内存、网络等资源进行分类,以便将不同需求的作业运行到不同计算节点上。用户需利用 slurm 命令将该作业所需要的CPU 核等资源等提交到特定的分区中,等作业申请的资源得到满足后,作业才开始运行。作业运行受分区、账户、服务质量(QOS)等限制。

三种作业提交模式区别

1.批处理作业(采用 sbatch 命令提交)

对于批处理作业,使用 sbatch 命令提交作业脚本,作业被调度运行后,在所分配的首个节点上执行作业脚本,在作业脚本中也可使用 srun 命令加载作业任务。

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

资源分配与任务加载两步均通过 srun 命令进行:当在登录 shell 中执行 srun命令时,srun 首先向系统提交作业请求并等待资源分配,然后在所分配的节点上加载作业任务。

3.分配模式作业(采用 salloc 命令提交)

分配作业模式类似于交互式作业模式和批处理作业模式的融合。用户需要指定资源分配的需求条件,向资源管理器提出作业的资源分配请求。作业排队,当用户请求资源被满足时,将在用户提交作业的节点上执行用户所指定的命令,指定的命令执行结束后,也运行结束,用户申请的资源被释放。

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

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

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

Cngird12 使用 Slurm 作业管理系统,采用节点共享模式。

作业管理系统常用命令

命令:sinfo 功能介绍:显示系统资源使用情况 常用命令例子:

sinfo

命令:squeue 功能介绍:显示作业状态 常用命令例子:

squeue

命令:sbatch 功能介绍:用于交互式作业提交 常用命令例子:

srun -N 2 -n 80 -p hpxg A.exe

命令:srun 功能介绍:用于批处理作业提交 常用命令例子:

sbatch -N 2 -n 80 job.sh

命令:salloc 功能介绍:用于分配模式作业提交 常用命令例子:

salloc -p gpu

命令:scancel 功能介绍:用于取消已提交的作业 常用命令例子:

scancel JOBID

命令:scontrol 功能介绍:用于查询节点信息或正在运行的作业信息 常用命令例子:

scontrol show job JOBID

命令:sacct 功能介绍:用于查看历史作业信息 常用命令例子:

sacct -u para04 -S 03/01/17 -E 03/31/17 --field=jobid,partition,jobname,user,nnodes,start,end,elapsed,state