Slurm 简介
了解 Slurm 工作负载管理器的核心功能与基本组成
Slurm 工作负载管理器(曾用名:简单 Linux 资源管理工具 或 SLURM),是一款免费开源的作业调度系统,适用于 Linux 及类 Unix 内核环境,被全球众多超级计算机和计算集群所采用。它提供三项核心功能:
- 首先,它能够分配独占或非独占的资源访问权限(如计算节点)给用户,并指定使用时长,以便用户执行任务。
- 其次,它提供一个框架,用于启动、执行和监控在分配节点上运行的工作(通常是并行任务,例如
MPI作业)。 - 最后,它通过管理待处理作业队列来协调资源竞争。
目前,约有 60% 的 TOP500 超级计算机使用 Slurm 作为工作负载管理器,其中包括直到 2016 年为止世界最快计算机——天河二号。
发展历程
Slurm 最初由劳伦斯利弗莫尔国家实验室、SchedMD、Linux NetworX、惠普公司以及 Groupe Bull 等机构在 2000 年代初期联合开发,作为一款自由软件资源管理工具。其设计灵感来源于闭源的 Quadrics RMS,语法也较为相似。名称“Slurm”源自科幻动画《飞出个未来》中的饮料名称!
Slurm 工作负载管理器的组成部分
Slurm 是一个功能强大的批处理调度系统,能够满足大型计算中心的各种需求。
它由运行在每个计算节点上的 slurmd 守护进程和运行在管理/主节点上的中央 slurmctld 守护进程组成。slurmd 进程支持容错的分层通信机制。用户常用的命令包括:sacct、salloc、sattach、sbatch、sbcast、scancel、scontrol、sinfo、smap、squeue、srun、strigger 和 sview。所有这些命令均可在集群任意位置执行。
Slurm 的核心实体
与 PBS 不同,Slurm 围绕四个核心实体展开:节点(nodes)、分区(partitions,类似于 PBS 中的 队列,但并非完全相同)、作业(jobs)和 作业步骤(job steps)。
其中,节点 是 Slurm 中的计算资源;分区 是将节点划分为逻辑上可能重叠的集合;作业 是分配给用户的、指定时间长度的资源占用;作业步骤 是作业内部的一组(可能并行)任务。
请注意,Slurm 的 分区 可以被视为作业的 队列,每个分区都包含多种约束条件,例如作业的 大小限制、时间限制、允许使用的 用户范围 等。