Slurm工作调度工具
| 当前版本 | 26.05.4 |
|---|---|
| 源代码库 | |
| 编程语言 | C |
| 操作系统 | Linux, BSDs |
| 类型 | 超级计算机和集群的任务调度工具 |
| 许可协议 | GNU General Public License |
| 网站 | slurm |
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作为一个资源管理器。
参考文献
[编辑]- ^ Slurm Workload Manager - Overview. SchedMD. [2026-10-04].
- ^ 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.0 3.1 3.2 Slurm Workload Manager - Overview. SchedMD. [2026-10-04].
- ^ Slurm Workload Manager - Multifactor Priority Plugin. SchedMD. [2026-10-04].
- ^ Slurm Workload Manager - Scheduling Configuration Guide. SchedMD. [2026-10-04].
- ^ Slurm Commercial Support, Development, and Installation. SchedMD. [2014-02-23]. (原始内容存档于2014-02-16).