Slurm
Slurm(也称为 Slurm Workload Manager 或 slurm-llnl)是一款开源工作负载管理器,专为各种规模的 Linux 集群设计,被世界上许多超级计算机和计算机集群使用。它提供三个主要功能。首先,它为用户在特定时间段内分配独占和/或非独占的资源(计算节点)访问权限,以便他们可以执行工作。其次,它提供了一个在分配的节点集上启动、执行和监视工作(通常是并行作业)的框架。最后,它通过管理待处理工作的队列来仲裁资源争用。
安装
安装 slurm-llnl 包。它会作为依赖项拉入 munge([1]),一个认证服务。它是通过 slurmd 的 systemd 服务启动的,并加密了各个主机之间的连接。因此,请确保您的集群中的所有节点在 /etc/munge/munge.key 中具有相同的密钥。然后 启动并 启用 munge.service。
软件包本身有许多可选的依赖项,但 Slurm 必须重新编译才能使用它们,一旦它们被安装。
配置
slurm-llnl 的配置文件位于 /etc/slurm-llnl 下。在启动任何 slurm 服务之前,必须通过在 /etc/slurm-llnl/slurm.conf 创建一个配置文件来正确配置它。客户端和服务器可以使用相同的配置文件,该文件可以在 官方网站上生成,或者通过复制 /etc/slurm-llnl/slurm.conf.example 到 /etc/slurm-llnl/slurm.conf 并根据需要进行调整来生成。
默认情况下,在安装过程中添加到您系统的 Slurm 用户具有 64030 作为 UID 和 GID,这简化了在多个系统上的设置。UID 和 GID 与 Debian 中使用的相同,因此它们可以并行使用,但请记住,二进制文件在每个发行版中的目录不同。
客户端(计算节点)配置
在客户端,现在可以安全地 启动/启用 slurmd.service。
服务器(头节点)配置
启动/启用 slurmctld.service。
此外,您可能还想 启动/启用 slurmdbd.service,它处理 SQL 数据库以方便管理,并记录一些重要的进程信息。
/etc/default/slurm-llnl 可以在程序中传递附加参数,同时仍然利用 systemd 的强大功能。此文件被视为各种服务的环境文件,并将任何参数传递给程序。故障排除
服务在启动时失败
如果在启动时 slurmd.service 或 slurmctld.service 启动失败,但在手动启动时工作正常,则该服务可能尝试在网络连接建立之前启动。要验证这一点,请将下面与失败服务相关的行添加到 slurm.conf 文件中。
slurm.conf
SlurmctldDebug=info SlurmctldLogFile=/var/log/slurm-llnl/slurmctld.log SlurmdDebug=info SlurmdLogFile=/var/log/slurm-llnl/slurmd.log
然后,检查相关的日志文件。如果您注意到致命异常提到了 Address family not supported by protocol,那么您可能需要 扩展单元,以便它通过 network-online.target 等待有效的网络连接。
技巧与提示
并行运行基于 RHEL 的节点
在基于 RedHat 的发行版上,slurm 默认以 root 用户运行。[2] 要将这些节点添加到集群,首先创建一个 slurm 用户,其 UID 和 GID 等于 64030 以匹配 Arch Linux 中使用的用户,然后使用命令 slurm-setuser -u slurm -g slurm 更改 slurm 用户。
参见
- Slurm 教程 — 面向用户和系统管理员的 Slurm Workload Manager 入门介绍,以及一些面向 Slurm 程序员的材料
- 管理员快速入门指南 — 入门指南
- Slurm 管理作业 — 方便的 Slurm 命令
- 运行作业 — 哈佛大学如何使用 Slurm