跳转到内容

Slurm工作调度工具

维基百科,自由的百科全书
Slurm
当前版本26.05.4
源代码库
编程语言C
操作系统Linux, BSDs
类型超级计算机和集群的任务调度工具
许可协议GNU General Public License
网站slurm.schedmd.com

Slurm(Slurm Workload Manager)是一个开源、容错且可扩展的集群资源管理与作业调度系统,主要用于 Linux 集群。它负责向作业分配计算资源、启动和监控作业,并通过维护等待队列协调多个作业之间的资源竞争。[1]

Slurm 被广泛用于高性能计算集群和超级计算机中心。

Slurm使用基于Hilbert曲线调度或肥胖 网络拓扑结构的最适算法,以便优化并行计算机中的任务分配。[2]

架构

[编辑]

Slurm 采用集中式控制架构。核心控制进程为 slurmctld,负责监控集群资源和作业状态、接收作业请求并为作业分配资源;系统也可以配置备用控制器,以在主控制器故障时接管其职责。每个计算节点运行 slurmd 守护进程,负责执行任务、报告节点状态并与控制器通信。[3]

Slurm 还可以使用 slurmdbd 将多个集群的作业记账和使用记录保存到数据库,并可通过 slurmrestd 提供 REST API。用户常用命令包括用于提交批处理作业的 sbatch、启动任务的 srun、查看作业队列的 squeue、查看节点和分区状态的 sinfo,以及查询历史作业记录的 sacct。[3]

Slurm 管理的主要对象包括计算节点(node)、分区(partition)、作业(job)和作业步骤(job step)。分区用于将一组节点组织为逻辑资源池,并可分别设置用户访问、时间限制、作业规模和资源共享等策略。[3]

调度机制

[编辑]

Slurm 支持多种作业优先级和调度策略。其多因素优先级插件可以根据作业等待时间、作业规模、公平共享(fair-share)等因素计算作业优先级;系统也支持基本的先进先出(FIFO)优先级方式。[4]

Slurm 默认提供回填调度(backfill scheduling)。在不延迟高优先级作业预计启动时间的情况下,调度器可以先运行较低优先级、能够利用暂时空闲资源的作业,从而提高集群资源利用率。回填调度的效果依赖于用户为作业设置较为准确的运行时间限制。[5]

历史

[编辑]

早期,Slurm的开发归功于勞倫斯利佛摩國家實驗室,SchedMD[6] ,Linux NetworX, Hewlett-Packard,Groupe Bull,他们把Slurm作为一个资源管理器。

参考文献

[编辑]
  1. ^ Slurm Workload Manager - Overview. SchedMD. [2026-10-04]. 
  2. ^ Pascual, Jose Antonio; Navaridas, Javier; Miguel-Alonso, Jose. Job Scheduling Strategies for Parallel Processing. Lecture Notes in Computer Science 5798: 138–144. 2009. ISBN 978-3-642-04632-2. doi:10.1007/978-3-642-04633-9_8. 
  3. ^ 3.0 3.1 3.2 Slurm Workload Manager - Overview. SchedMD. [2026-10-04]. 
  4. ^ Slurm Workload Manager - Multifactor Priority Plugin. SchedMD. [2026-10-04]. 
  5. ^ Slurm Workload Manager - Scheduling Configuration Guide. SchedMD. [2026-10-04]. 
  6. ^ Slurm Commercial Support, Development, and Installation. SchedMD. [2014-02-23]. (原始内容存档于2014-02-16).