Slurm
Slurm(也称为 Slurm Workload Manager 或 slurm-llnl)是一个开源工作负载管理器,专为各种规模的 Linux 集群而设计,被世界上许多超级计算机和计算机集群使用。 它提供三个主要功能。 首先,它为用户分配对资源(计算机节点)的独占和/或非独占访问权限,以便他们可以在一段时间内执行工作。 其次,它提供了一个框架,用于在一组分配的节点上启动、执行和监视工作(通常是并行作业)。 最后,它通过管理待处理工作的队列来仲裁资源争用。
安装
安装 slurm-llnl 软件包(或 slurm-llnl-gitAUR)。 它会拉取 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 用户,其 UID 和 GID 为 64030
,这简化了在多个系统上的设置。 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 在哈佛大学的使用方式