1. 概述
Slurm 是一个开源、容错、高可伸缩的集群管理和大型小型 Linux 集群作业调度系统。slurm不需要对操作系统内核进行修改,而是相对独立的。
作为集群工作负载管理器。slurm有三个关键功能:- 首先,它在一段时间内为用户分配独占或者非独占的计算资源,以便他们能够执行工作任务
- 其次,它能提供一个框架,用于在分配的节点集上启动,执行,监视工作,通常是并行作业任务
- 最后,它通过管理挂起的工作队列,来仲裁资源争夺问题
2. 架构
如下图2.1所示,slurm构成有:
- 运行在每个计算节点上的slurmd守护进程
- 运行在管理节点上的中央slurmctld守护进程(可选的故障切换节点模式) 用户命令,包括:sacct,salloc,sattach,sbatch,sbcast,scancel,scontrol,sinfo,smap,squeue,srun,strigger,sviw,sreport等,均可以在集群的任何地方运行。 如下图所示,由这些 Slurm 守护程序管理的实体,包括:
- 计算资源node
- 计算资源组成的逻辑集partition
- 分配给用户指定的时间量的资源分配job
- 作业中的一组任务(有可能是并行任务)
3. 命令
在部署了slurm的系统上,slurm daemons,slurm commands,和API functions均可通过帮助选择查看。
命令选择--help也能够提供一个简洁的功能选项总结。需要注意的是,命令选项都区分大小写。3.1 sacct
sacct 用于汇总报告正在活动或者已经结束的job和job step的审计信息。
3.2 sattach
sattach用于input、output和error plus signal功能附加到当前正在运行的作业或作业步骤中。你可以多次连接和分离工作。
3.4 sbatch
sbatch用于提交作业脚本以供以后执行。脚本通常包含一个或多个 srun 命令来启动并行任务
3.5 sbcast
sbatch用于将文件从本地磁盘传输到分配给作业的节点上的本地磁盘。这可用于有效地使用无盘计算节点或提供相对于共享文件系统的改进性能
3.6 scancel
scancel用于取消挂起或正在运行的作业或作业步骤。它还可用于向与正在运行的作业或作业步骤关联的所有进程发送任意信号。
3.7 scontrol
scontrol是用于查看和/或修改 Slurm 状态的管理工具。请注意, 许多 scontrol 命令只能作为用户根执行。
3.8 sinfo
sinfo报告由 Slurm 管理的分区和节点的状态。它具有多种筛选、排序和格式设置选项。
3.9 smap
smap报告由 Slurm 管理的作业、分区和节点的状态信息, 但以图形方式显示信息以反映网络拓扑。
3.10 squeue
报告作业或作业步骤的状态。它具有多种筛选、排序和格式设置选项。
默认情况下, 它以优先级顺序报告正在运行的作业, 然后按优先级顺序报表挂起的作业。3.11 srun
用于提交执行任务或实时启动作业步骤。
srun 有各种各样的选项来指定资源需求, 包括: 最小和最大节点数、处理器计数、要使用或不使用的特定节点以及特定节点特征 (内存、磁盘空间、某些必需的功能等)。 作业可以包含在作业节点分配中按顺序或并行执行的多个作业步骤。3.12 strigger
strigger用于设置、获取或查看事件触发器。事件触发器包括节点下降或工作接近其时间限制等内容。
3.13 sview
是一个图形用户界面, 用于获取和更新由 Slurm 管理的作业、分区和节点的状态信息。