快速入门管理员指南

目录

概述

请参阅快速入门用户指南以获取 一般概述。

另请参见平台以获取支持的 计算平台列表。

有关执行升级的信息,请参见 升级指南

超级快速入门

  1. 确保集群中的时钟、用户和组(UID 和 GID)已同步。
  2. 安装MUNGE进行 身份验证。确保集群中的所有节点具有相同的munge.key。确保在启动 Slurm 守护进程之前,MUNGE 守护进程munged已启动。
  3. 下载最新版本的 Slurm。
  4. 使用以下方法之一安装 Slurm:
    • 构建RPMDEB 包(推荐用于生产环境)
    • 从源代码手动构建(适用于开发人员或高级用户)
    • 注意:某些 Linux 发行版可能在软件库中提供非官方的 Slurm 包。SchedMD 不维护或推荐这些包。
  5. 使用您喜欢的网页浏览器和Slurm 配置工具构建配置文件。
    注意SlurmUser 必须在启动 Slurm 之前存在,并且必须在集群的所有节点上存在。
    注意:Slurm 的日志文件、进程 ID 文件、状态保存目录等的父目录不是由 Slurm 创建的。 它们必须在启动 Slurm 守护进程之前根据需要创建并由SlurmUser 赋予写入权限。
    注意:如果在安装过程中创建了任何父目录(用于可执行文件、库等), 这些目录的访问权限将等于读取/写入/执行权限,减去 umask 值(例如,umask=0022 生成权限为 "drwxr-r-x" 的目录,而 mask=0000 生成权限为 "drwxrwrwx" 的目录,这存在安全问题)。
  6. 将配置文件安装在<sysconfdir>/slurm.conf
    注意:您需要在集群的所有节点上安装此配置文件。
  7. systemd(可选):在每个系统上启用相应的服务:
    • 控制器:systemctl enable slurmctld
    • 数据库:systemctl enable slurmdbd
    • 计算节点:systemctl enable slurmd
  8. 启动slurmctldslurmd 守护进程。

FreeBSD 管理员应参见下面的FreeBSD部分。

构建与安装 Slurm

安装前提条件

在构建 Slurm 之前,请考虑您将需要哪些插件。可以构建的插件取决于运行配置脚本时可用的库。请参考下面的可能插件列表及其构建所需的内容。

请注意,在大多数情况下,所需的软件包是相应的开发库,其确切名称可能因不同的发行版而异。RHEL 基础发行版的典型命名约定是NAME-devel,而 Debian 基础发行版的约定是libNAME-dev

组件 所需开发库
acct_gather_energy/ipmi
通过 IPMI 收集能耗
freeipmi
acct_gather_interconnect/ofed
为 InfiniBand 网络收集流量数据
libibmad
libibumad
acct_gather_profile/hdf5
通过 HDF5 收集详细作业分析
hdf5
accounting_storage/mysql
用于记账;应使用当前支持的 MySQL 或 MariaDB 版本
MySQLMariaDB
auth/slurm
(传统 MUNGE身份验证方法的替代方案)
jwt
auth/munge
(默认身份验证方法
MUNGE
AutoDetect=nvml
提供对 NVIDIA GPU 的自动检测,支持 MIGs 和 NVlinks(AutoDetect=nvidia,在 24.11 中添加,无需任何前提条件)
libnvidia-ml
AutoDetect=oneapi
提供对 Intel GPU 的自动检测
libvpl
AutoDetect=rsmi
提供对 AMD GPU 的自动检测
ROCm
HTML 手册页
此依赖项是必须存在的命令,通常由同名的软件包提供。
man2html
Lua API lua
PAM 支持 PAM
PMIx 支持(在构建时需要--with-pmix pmix
Readline 支持scontrolsacctmgr的交互模式中 readline
slurmrestd
提供对 Slurm 的REST API的支持(可选前提条件将启用其他功能)
http-parser
json-c
yaml(可选)
jwt(可选)
sview手册页 gtk+-2.0
switch/hpe_slingshot cray-libcxi
curl
json-c
NUMA 支持与task/affinity numa
task/cgroup
这两个软件包仅在支持 cgroup/v2 时需要
hwloc
bpf(cgroup/v2)
dbus(cgroup/v2)

请参阅相关软件页面以获取构建这些插件所需软件的参考。

如果所需的库或头文件位于非标准位置,请相应地设置CFLAGSLDFLAGS环境变量。

构建 RPMs

要直接构建 RPMs,请将分发的 tarball 复制到一个目录中并执行(替换为适当的 Slurm 版本号):
rpmbuild -ta slurm-23.02.7.tar.bz2

生成的 rpm 文件将安装在构建它们的用户的$(HOME)/rpmbuild目录下。

您可以通过在主目录中使用.rpmmacros文件来控制 RPM 构建的一些方面。特殊宏定义可能仅在文件安装在非常规位置时需要。 完整的rpmbuild选项列表可以在slurm.spec文件的顶部找到。 在构建 Slurm 时可能使用的一些宏定义包括:

_enable_debug
指定是否启用 Slurm 内部的调试逻辑
_prefix
包含 Slurm 文件的目录的路径
_slurm_sysconfdir
包含 slurm.conf 配置文件的目录的路径(默认值为 /etc/slurm)
with_munge
指定 MUNGE(身份验证库)的安装位置

示例 .rpmmacros 文件:

# .rpmmacros
# 从 /usr/lib/rpm/macros 重写某些 RPM 宏
# 为非常规文件位置设置 Slurm 特定宏
#
%_enable_debug     "--with-debug"
%_prefix           /opt/slurm
%_slurm_sysconfdir %{_prefix}/etc/slurm
%_defaultdocdir    %{_prefix}/doc
%with_munge        "--with-munge=/opt/munge"

构建 Debian 包

从 Slurm 23.11.0 开始,Slurm 包含构建 Debian 包所需的文件。这些包与 Debian 基础发行版中提供的包冲突,并且命名不同以区分它们。在下载所需版本的 Slurm 后,可以执行以下操作来构建这些包:

  • 安装基本的 Debian 包构建要求:
    apt-get install build-essential fakeroot devscripts equivs
  • 解压分发的 tarball:
    tar -xaf slurm*tar.bz2
  • cd到包含 Slurm 源代码的目录
  • 安装 Slurm 包依赖项:
    mk-build-deps -i debian/control
  • 构建 Slurm 包:
    debuild -b -uc -us

构建完成后,包将位于父目录中。

安装软件包

以下软件包被推荐以实现不同节点类型的基本功能。可以添加其他软件包以启用可选功能:

RPM 名称 DEB 名称 登录 控制器 计算 DBD
slurm slurm-smd X X X X
slurm-perlapi slurm-smd-client X X X
slurm-slurmctld slurm-smd-slurmctld X
slurm-slurmd slurm-smd-slurmd X
slurm-slurmdbd slurm-smd-slurmdbd X

处理依赖关系

按照上述方式构建的软件包将依赖于外部软件包和一般的slurm 软件包。然而,我们观察到在使用低级dpkg命令时,这些依赖关系的强制执行存在差距。因此,我们建议避免使用低级命令,如dpkgrpm,而是使用高层命令,如dnfapt进行所有操作。

Debian 基础系统上的用户还应知道,apt会在事务后自动删除由于依赖冲突而导致的 Slurm 软件包。始终在指示其继续之前仔细阅读事务摘要。

手动构建

手动构建和安装 Slurm 的说明如下。 这比 RPM 和 DEB 构建过程要复杂得多,因此仅建议开发人员或 高级用户使用此方法以获得更自定义的安装。 有关更多详细信息,请参阅源代码分发中的 README 和 INSTALL 文件。

  1. 解压分发的 tarball:
    tar -xaf slurm*tar.bz2
  2. cd到包含 Slurm 源代码的目录并输入 ./configure,并使用适当的选项(见下文)。
  3. 输入make install以编译和安装程序、 文档、库、头文件等。
  4. 输入ldconfig -n <library_location>,以便 Slurm 库可以被打算直接使用 Slurm API 的应用程序找到。 库的位置将是 PREFIX(下面描述)的一部分子目录,并依赖于系统类型和配置,通常是 lib 或 lib64。 例如,如果 PREFIX 是 "/usr",而子目录是 "lib64",那么您会发现名为 "/usr/lib64/libslurm.so" 的文件已安装,并且应执行命令 ldconfig -n /usr/lib64

完整的configure选项列表将由命令configure --help返回。最常用的参数 包括:

--enable-debug
在 Slurm 内部启用额外的调试逻辑。

--prefix=PREFIX
在 PREFIX 中安装与架构无关的文件;默认值为 /usr/local。

--sysconfdir=DIR
指定 Slurm 配置文件的位置。默认值为 PREFIX/etc

节点类型

集群由许多不同类型的节点组成,这些节点共同为集群的整体功能做出贡献。操作集群至少需要一个计算节点和一个控制节点。可以添加其他类型的节点以启用可选功能。建议在生产集群中使用单一用途的节点。

大多数 Slurm 守护进程应作为非根服务帐户执行。 我们建议您创建一个名为slurm的 Unix 用户供 slurmctld 使用,并确保它在整个集群中存在。此用户应在 slurm.conf 配置文件中配置为SlurmUser,并授予足够的权限以访问守护进程使用的文件。有关更多详细信息,请参阅slurm.conf手册页。

以下是 Slurm 使用的不同类型节点的简要概述:

计算节点

计算节点(通常简称为“节点”)在集群中执行计算工作。 每个计算节点上都运行slurmd 守护进程。 它监控节点上运行的所有任务,接受工作,启动任务,并在请求时终止正在运行的任务。由于 slurmd 启动和管理用户作业,因此必须以根用户身份执行。

控制节点

运行slurmctld 的机器有时被称为“头节点”或“控制器”。 它协调 Slurm 活动,包括作业排队、 监控节点状态和为作业分配资源。还有一个可选的备份控制器,在主控制器发生故障时自动接管控制(请参见下面的高可用性部分)。主控制器在恢复服务时恢复控制。控制器在状态发生变化时将其状态保存到磁盘(请参见下面的配置部分中的“StateSaveLocation”)。此状态可以在启动时由控制器恢复。状态变化被保存,以便在控制器移动(到或从备份控制器)或重启时可以保留作业和其他状态信息。

DBD 节点

如果您想将作业记账记录保存到数据库中,则应使用slurmdbd(Slurm 数据库守护进程)。 在不同于控制器的机器上运行 slurmdbd 守护进程是良好的做法。在较大的系统上,我们还建议将slurmdbd使用的数据库放在单独的机器上。当开始使用 Slurm 时,我们建议您在系统上建立基本的 Slurm 功能后再添加记账支持。有关更多信息,请参阅记账页面。

登录节点

登录节点或提交主机是用于访问集群的共享系统。 用户可以使用登录节点进行数据准备、准备作业以供提交、 在准备好后提交这些作业、检查工作状态以及执行其他与集群相关的任务。工作站可以配置为能够提交作业,但由于操作系统兼容性或安全性问题,拥有单独的登录节点可能是有用的。如果用户在其本地机器上具有根访问权限,他们将能够直接访问安全密钥,并可能以根身份在集群上运行作业。

登录节点应能够访问用户预期使用的任何 Slurm 客户端命令。它们还应具有集群的 'slurm.conf' 文件和其他必要组件,以用于集群中使用的身份验证方法。它们不应配置为在其上调度作业,用户在登录时不应在其上执行计算密集型工作。通常不需要在其上运行任何 Slurm 守护进程。如果使用auth/slurm,则应运行sackd以提供身份验证。如果在无配置模式下运行,并且不使用auth/slurm,则可以配置slurmd来管理您的配置文件。

Restd 节点

slurmrestd 守护进程在 20.02 版本中引入,提供了一个可以用于与 Slurm 集群交互的REST API。在满足前提条件的情况下,默认情况下为手动构建安装,但必须为RPM 构建启用。它有两种运行模式,允许您将其作为传统 Unix 服务运行并始终监听 TCP 连接,或者仅在使用时将其作为 Inet 服务运行。

高可用性

可以配置多个 SlurmctldHost 条目,除了第一个条目外的任何条目都被视为备份主机。所有配置的备份主机应位于不同于主 slurmctld 的节点上。然而,所有主机应挂载一个包含状态信息的公共文件系统(请参见下面的配置部分中的“StateSaveLocation”)。

如果指定了多个主机,当主机故障时,第二个列出的 SlurmctldHost 将接管其控制。当主机恢复服务时,它会通知备份。备份然后保存状态并返回备份模式。主机读取保存的状态并恢复正常操作。同样,如果前两个列出的主机都发生故障,第三个 SlurmctldHost 将接管,直到主机恢复服务。除了短暂的无响应时间,前后切换应不会被察觉。

在 18.08 之前,Slurm 使用“BackupAddr”“BackupController”参数实现高可用性。这些参数已被弃用,并被“SlurmctldHost”替代。另请参见“SlurmctldPrimaryOnProg”“SlurmctldPrimaryOffProg”以调整在机器在主控制器之间切换时采取的操作。

任何时候,如果 slurmctld 守护进程或硬件故障,状态信息在到达磁盘之前可能会丢失。 Slurmctld 会频繁写入状态(默认每五秒),但在作业数量较多时,记录的格式化和写入可能需要几秒钟,最近的更改可能未写入磁盘。 另一个例子是,如果状态信息写入文件,但该信息在节点故障时仍保留在内存中而未写入磁盘。 状态保存写入磁盘的间隔可以在构建时通过将 SAVE_MAX_WAIT 定义为不同于五的值进行配置。

还可以通过在 slurm.conf 中指定AccountingStorageBackupHost,以及在 slurmdbd.conf 中指定DbdBackupHost来配置 slurmdbd 的备份实例。备份主机应位于不同于主 slurmdbd 实例的机器上。两个 slurmdbd 实例都应能够访问相同的数据库。网络页面提供了此情况的可视化表示。

基础设施

用户和组标识

集群中必须有统一的用户和组名称空间(包括 UID 和 GID)。 不必允许用户登录控制主机 (SlurmctldHost),但用户和组必须在这些主机上可解析。

Slurm 通信的身份验证

Slurm 组件之间的所有通信都是经过身份验证的。 身份验证基础设施由在运行时通过 Slurm 配置文件中的AuthType关键字选择的动态加载插件提供。直到 23.11.0,唯一支持的身份验证类型是munge,这需要安装 MUNGE 软件包。 使用 MUNGE 时,集群中的所有节点必须配置相同的munge.key文件。MUNGE 守护进程munged也必须在 Slurm 守护进程之前启动。请注意,MUNGE 确实要求集群中的时钟同步,通常通过 NTP 实现。

从 23.11.0 开始,AuthType 还可以设置为slurm,这是一种内部身份验证插件。此插件的要求与 MUNGE 类似,需要一个共享给所有 Slurm 守护进程的密钥文件。auth/slurm 插件需要安装 jwt 软件包。

MUNGE 目前是默认和推荐的选项。 此分发的顶层目录中的配置脚本将确定可以构建哪些身份验证插件。 配置文件指定将使用哪些可用插件。

MPI 支持

Slurm 支持许多不同的 MPI 实现。 有关更多信息,请参见MPI

调度器支持

根据您的需求和愿意管理配置的程度(其中大部分需要数据库),Slurm 可以配置为相当简单或相当复杂的调度算法。 第一个感兴趣的配置参数是PriorityType,有两个可用选项:basic(先进先出)和multifactormultifactor 插件将根据多种配置参数(年龄、大小、公平共享分配等)为作业分配优先级,其详细信息超出了本文档的范围。 有关详细信息,请参见多因素作业优先级插件文档。

SchedType 配置参数控制排队作业的调度,并提供几种可用选项。

  • builtin 将严格按优先级顺序启动作业,通常是(先进先出)
  • backfill 将启动较低优先级的作业,如果这样做不会延迟较高优先级作业的预期启动时间;本质上使用较小的作业填补资源分配计划中的空缺。有效的回填调度确实要求用户指定作业时间限制。
  • gang 在同一分区/队列中对作业进行时间切片,并可用于从较低优先级队列中抢占作业,以便执行较高优先级队列中的作业。

有关调度选项的更多信息,请参见组调度抢占资源预留指南资源限制共享可消耗资源

资源选择

Slurm 使用的资源选择机制由SelectType 配置参数控制。 如果您希望每个节点执行多个作业,但跟踪和管理处理器、内存和其他资源的分配,建议使用cons_tres(可消耗的可跟踪资源)插件。 有关更多信息,请参见Slurm 中的可消耗资源

日志记录

如果未设置SlurmctldLogFileSlurmdLogFile位置,Slurm 使用 syslog 记录事件。

记账

Slurm 支持将记账记录写入简单文本文件、直接写入数据库(MySQL 或 MariaDB),或安全地管理多个集群的记账数据的守护进程。有关更多信息,请参见记账

计算节点访问

Slurm 本身并不限制对分配的计算节点的访问, 但它确实提供了实现此目的的机制。 有一个可下载的可插拔身份验证模块(PAM),用于限制对计算节点的访问。 安装后,Slurm PAM 模块将阻止用户登录到未分配给该用户的任何节点。 在作业终止时,用户在 Slurm 控制之外启动的任何进程可能会使用在slurm.conf中配置的Epilog脚本被终止。

配置

Slurm 配置文件包含各种参数。 此配置文件必须在集群的每个节点上可用,并且必须具有一致的内容。完整的 参数描述包含在slurm.conf手册页中。为了避免重复该信息,下面显示了一个最小的示例配置文件。 您的 slurm.conf 文件应至少定义此示例中定义的配置参数,可能还包括其他参数。任何文本 在“#”后面被视为注释。文件中的关键字不区分大小写,尽管参数通常是区分大小写的(例如,“SlurmUser=slurm” 可以指定为“slurmuser=slurm”)。控制机器与 所有其他机器规格一样,可以同时包含主机名和用于通信的名称。在这种情况下,主机的名称是“mcri”, 而用于通信的名称是“emcri”。 在这种情况下,“emcri”是主机“mcri”的私有管理网络接口。用于 通信的端口号以及各种定时器值也被指定。

SlurmUser 必须在启动 Slurm 之前根据需要创建,并且必须在集群的所有节点上存在。 Slurm 的日志文件、进程 ID 文件、状态保存目录等的父目录不是由 Slurm 创建的。 它们必须在启动 Slurm 守护进程之前根据需要创建并由SlurmUser 赋予写入权限。

StateSaveLocation 用于存储有关当前 集群状态的信息,包括有关排队、运行和最近完成的作业的信息。使用的目录应位于低延迟的本地磁盘上,以防止文件系统延迟影响 Slurm 性能。如果使用备份主机,则 StateSaveLocation 应位于两个主机共享的文件系统上。我们不建议使用 NFS 使目录对两个主机可访问,但建议使用一个共享挂载,使两个控制器可以访问,并允许对磁盘进行低延迟的读写。如果控制器在没有访问状态信息的情况下启动,排队和运行的作业将被取消。

需要描述节点及其分组到分区的信息。 可以选择使用简单的节点范围表达式来指定节点范围,以避免构建具有大量条目的配置文件。节点范围表达式可以包含一对方括号,里面有一系列以逗号分隔的数字和/或用“-”分隔的数字范围(例如“linux[0-64,128]”或“lx[15,18,32-33]”)。 表达式中最多可以包含两个数字范围(例如“rack[0-63]_blade[0-41]”)。 如果包含一个或多个数字表达式,则其中一个必须位于名称的末尾(例如“unit[0-31]rack”是无效的),但可以在逗号分隔的列表中始终使用任意名称。

节点名称可以有最多三个名称规范: NodeName 是所有 Slurm 工具在引用节点时使用的名称, NodeAddr 是 Slurm 用于与节点通信的名称或 IP 地址,NodeHostname 是命令/bin/hostname -s返回的名称。 只有NodeName是必需的(其他名称默认为相同名称), 尽管支持所有三个参数提供对节点命名和寻址的完全控制。有关所有配置参数的详细信息,请参见slurm.conf手册页。

节点可以属于多个分区,每个分区可以具有不同的 约束(允许的用户、时间限制、作业大小限制等)。 因此,每个分区可以被视为一个单独的队列。 分区和节点规范使用节点范围表达式以简洁的方式识别节点。此配置文件定义了一个 1154 节点的 Slurm 集群,但只需更改几个节点范围表达式即可用于更大的集群。指定节点应具有的最小处理器数量(CPU)、实际内存空间(RealMemory,兆字节)和临时磁盘空间(TmpDisk,兆字节),以便被视为可用。任何缺少这些最小配置值的节点将被视为 DOWN,并且不会被调度。 请注意,提供了更广泛的示例配置文件在etc/slurm.conf.example中。我们还有一个基于网页的配置工具,可用于构建简单的配置文件,然后可以手动编辑以实现更复杂的配置。

#
# 示例 /etc/slurm.conf 用于 mcr.llnl.gov
#
SlurmctldHost=mcri(12.34.56.78)
SlurmctldHost=mcrj(12.34.56.79)
#
AuthType=auth/munge
Epilog=/usr/local/slurm/etc/epilog
JobCompLoc=/var/tmp/jette/slurm.job.log
JobCompType=jobcomp/filetxt
PluginDir=/usr/local/slurm/lib/slurm
Prolog=/usr/local/slurm/etc/prolog
SchedulerType=sched/backfill
SelectType=select/linear
SlurmUser=slurm
SlurmctldPort=7002
SlurmctldTimeout=300
SlurmdPort=7003
SlurmdSpoolDir=/var/spool/slurmd.spool
SlurmdTimeout=300
StateSaveLocation=/var/spool/slurm.state
TreeWidth=16
#
# 节点配置
#
NodeName=DEFAULT CPUs=2 RealMemory=2000 TmpDisk=64000 State=UNKNOWN
NodeName=mcr[0-1151] NodeAddr=emcr[0-1151]
#
# 分区配置
#
PartitionName=DEFAULT State=UP
PartitionName=pdebug Nodes=mcr[0-191] MaxTime=30 MaxNodes=32 Default=YES
PartitionName=pbatch Nodes=mcr[192-1151]

安全性

除了基于 AuthType 的 Slurm 通信认证外,作业步骤凭证中还使用了数字签名。 这个签名由 slurmctld 用于构建作业步骤凭证,该凭证被发送到 srun,然后转发到 slurmd 以启动作业步骤。 这种设计通过消除大部分作业步骤启动开销,从 slurmctld 守护进程中提高了性能。 数字签名机制由 CredType 配置参数指定,默认机制为 MUNGE。

可插拔认证模块 (PAM) 支持

Slurm 提供了一个 PAM 模块(可插拔认证模块),可以防止用户访问未分配给他的节点, 如果需要这种操作模式的话。

启动守护进程

出于测试目的,您可能希望仅在一个节点上运行 slurmctld 和 slurmd。 默认情况下,它们在后台执行。使用 -D 选项可以让每个守护进程在前台执行,日志将记录到您的终端。 -v 选项将以更详细的方式记录事件,更多的 v 会增加详细级别(例如 -vvvvvv)。 您可以使用一个窗口执行 "slurmctld -D -vvvvvv", 第二个窗口执行 "slurmd -D -vvvvv"。 在一个守护进程正在运行而另一个正在启动时,您可能会看到“连接被拒绝”或“节点 X 未响应”等错误,但 守护进程可以以任意顺序启动,一旦两个守护进程完成初始化,将建立正确的通信。 您可以使用第三个窗口执行类似于 "srun -N1 /bin/hostname" 的命令来确认功能。

另一个重要的选项是 "-c" 用于清除先前的状态信息。没有 "-c" 选项,守护进程将恢复任何先前保存的状态信息:节点状态、作业状态等。使用 "-c" 选项将清除所有 先前运行的作业,节点状态将恢复为配置文件中指定的值。这意味着手动使用 scontrol 命令配置为关闭的节点将 被恢复为服务,除非在配置文件中注明为关闭。 实际上,Slurm 一直以保留状态的方式重新启动。

管理示例

scontrol 可用于打印所有系统信息 并修改其中大部分。下面仅显示了一些示例。有关完整细节,请参见 scontrol 手册页。命令和选项均不区分大小写。

打印系统中所有作业的详细状态。

adev0: scontrol
scontrol: show job
JobId=475 UserId=bob(6885) Name=sleep JobState=COMPLETED
   Priority=4294901286 Partition=batch BatchFlag=0
   AllocNode:Sid=adevi:21432 TimeLimit=UNLIMITED
   StartTime=03/19-12:53:41 EndTime=03/19-12:53:59
   NodeList=adev8 NodeListIndecies=-1
   NumCPUs=0 MinNodes=0 OverSubscribe=0 Contiguous=0
   MinCPUs=0 MinMemory=0 Features=(null) MinTmpDisk=0
   ReqNodeList=(null) ReqNodeListIndecies=-1

JobId=476 UserId=bob(6885) Name=sleep JobState=RUNNING
   Priority=4294901285 Partition=batch BatchFlag=0
   AllocNode:Sid=adevi:21432 TimeLimit=UNLIMITED
   StartTime=03/19-12:54:01 EndTime=NONE
   NodeList=adev8 NodeListIndecies=8,8,-1
   NumCPUs=0 MinNodes=0 OverSubscribe=0 Contiguous=0
   MinCPUs=0 MinMemory=0 Features=(null) MinTmpDisk=0
   ReqNodeList=(null) ReqNodeListIndecies=-1

打印作业 477 的状态并将其优先级更改为零。优先级为零会阻止作业被启动(它处于“待处理” 状态)。

adev0: scontrol
scontrol: show job 477
JobId=477 UserId=bob(6885) Name=sleep JobState=PENDING
   Priority=4294901286 Partition=batch BatchFlag=0
   更多数据已删除....
scontrol: update JobId=477 Priority=0

打印节点 adev13 的状态并将其排水。要排水节点,请指定新的 状态为 DRAIN、DRAINED 或 DRAINING。Slurm 将根据节点是否被分配自动将其设置为适当的 DRAINING 或 DRAINED 值。稍后将其恢复为服务。

adev0: scontrol
scontrol: show node adev13
NodeName=adev13 State=ALLOCATED CPUs=2 RealMemory=3448 TmpDisk=32000
   Weight=16 Partition=debug Features=(null)
scontrol: update NodeName=adev13 State=DRAIN
scontrol: show node adev13
NodeName=adev13 State=DRAINING CPUs=2 RealMemory=3448 TmpDisk=32000
   Weight=16 Partition=debug Features=(null)
scontrol: quit
稍后
adev0: scontrol
scontrol: show node adev13
NodeName=adev13 State=DRAINED CPUs=2 RealMemory=3448 TmpDisk=32000
   Weight=16 Partition=debug Features=(null)
scontrol: update NodeName=adev13 State=IDLE

重新配置所有节点上的所有 Slurm 守护进程。这应该 在更改 Slurm 配置文件后进行。

adev0: scontrol reconfig

打印当前 Slurm 配置。这也报告主控制器和备份控制器(slurmctld 守护进程)是否响应。要仅 查看控制器的状态,请使用命令 ping

adev0: scontrol show config
Configuration data as of 2019-03-29T12:20:45
...
SlurmctldAddr           = eadevi
SlurmctldDebug          = info
SlurmctldHost[0]        = adevi
SlurmctldHost[1]        = adevj
SlurmctldLogFile        = /var/log/slurmctld.log
...

Slurmctld(primary) at adevi is UP
Slurmctld(backup) at adevj is UP

关闭所有节点上的所有 Slurm 守护进程。

adev0: scontrol shutdown

升级

Slurm 支持在某些版本之间进行就地升级。有关执行升级所需步骤和潜在问题的重要细节,请参见此页面: 升级指南

FreeBSD

FreeBSD 管理员可以使用以下命令安装最新的稳定版 Slurm 作为二进制 包:

pkg install slurm-wlm

或者,可以使用以下命令从源代码构建和安装:

cd /usr/ports/sysutils/slurm-wlm && make install

二进制包安装了适合典型计算节点的最小 Slurm 配置。从源代码安装允许用户通过配置菜单启用 mysql 和 gui 工具等选项。

最后修改于 2025 年 6 月 5 日