SLURM (Simple Linux Utility for Resouce Management)
非常成熟的开源社区集群批处理调度系统。
介绍
- 2008年左右起源于LLNL实验室, 最新版本20.11
- 开源软件(约50万行c源码),开发和发布一直活跃
- 用户群: Top10里有5家使用(天河HPC是其一)
- 商业公司SchedMD提供顾问咨询服务
- 完善的插件为用户提供较便利的扩展功能
- 特点:结构清晰、功能丰富、接口明确
架构
SLURM由一组运行在控制节点与计算节点上的服务和一组用户命令组成
- 控制节点:节点管理、分区管理、作业管理等(主要后台服务slurmctld,一般采用主从热备方式提供高可用性)
- 计算节点:节点状态、作业状态与控制、IO流拷贝等(主要后台服务slurmd)
核心后台服务
- slurmctld
- slurmd
- slurmdbd
- slurmrestd
核心概念
- Partition:分区,硬件上可看做是节点的逻辑划分,可以对分区设置约束,例如哪个用户可以使用,分区内的作业时限等。作业不能跨分区。软件上可看做是一个作业队列。
- Job: 作业,用户提交的一个批处理作业
- Job step: 作业步,属于某个作业的一组任务(可能串行也可能并行)
- task: 任务,可认为一个在指定节点上执行的具体进程(process)
核心用户命令
客户端命令和slurm系统的网络后台程序进行交互,主要包括作业提交、作业修改、系统各种信息查询、运行环境控制配置等几个方面
- sbatch 提交批处理作业
- srun 执行并行作业
- salloc 申请计算资源,srun可以在所申请资源环境下进行交互调试
- scanel 取消作业
- sinfo 查看分区和节点状态等
- squeue 查看队列状态
- scontrol 查看和更改系统设置参数
- sacct 查看历史作业信息,记账信息