快速入门管理员指南
目录
概述
请参阅快速入门用户指南以获取 一般概述。
另请参见平台以获取支持的 计算平台列表。
有关执行升级的信息,请参见 升级指南。
超级快速入门
- 确保集群中的时钟、用户和组(UID 和 GID)已同步。
- 安装MUNGE进行 身份验证。确保集群中的所有节点具有相同的munge.key。确保在启动 Slurm 守护进程之前,MUNGE 守护进程munged已启动。
- 下载最新版本的 Slurm。
- 使用以下方法之一安装 Slurm:
- 使用您喜欢的网页浏览器和Slurm 配置工具构建配置文件。
注意:SlurmUser 必须在启动 Slurm 之前存在,并且必须在集群的所有节点上存在。
注意:Slurm 的日志文件、进程 ID 文件、状态保存目录等的父目录不是由 Slurm 创建的。 它们必须在启动 Slurm 守护进程之前根据需要创建并由SlurmUser 赋予写入权限。
注意:如果在安装过程中创建了任何父目录(用于可执行文件、库等), 这些目录的访问权限将等于读取/写入/执行权限,减去 umask 值(例如,umask=0022 生成权限为 "drwxr-r-x" 的目录,而 mask=0000 生成权限为 "drwxrwrwx" 的目录,这存在安全问题)。 - 将配置文件安装在<sysconfdir>/slurm.conf。
注意:您需要在集群的所有节点上安装此配置文件。 - systemd(可选):在每个系统上启用相应的服务:
- 控制器:
systemctl enable slurmctld
- 数据库:
systemctl enable slurmdbd
- 计算节点:
systemctl enable slurmd
- 控制器:
- 启动slurmctld 和 slurmd 守护进程。
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 版本 |
MySQL 或 MariaDB |
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 支持在scontrol 和sacctmgr 的交互模式中 |
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) |
请参阅相关软件页面以获取构建这些插件所需软件的参考。
如果所需的库或头文件位于非标准位置,请相应地设置CFLAGS
和LDFLAGS
环境变量。
构建 RPMs
要直接构建 RPMs,请将分发的 tarball 复制到一个目录中并执行(替换为适当的 Slurm 版本号):rpmbuild -ta slurm-23.02.7.tar.bz2
$(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
命令时,这些依赖关系的强制执行存在差距。因此,我们建议避免使用低级命令,如dpkg
和rpm
,而是使用高层命令,如dnf
和apt
进行所有操作。
Debian 基础系统上的用户还应知道,apt
会在事务后自动删除由于依赖冲突而导致的 Slurm 软件包。始终在指示其继续之前仔细阅读事务摘要。
手动构建
手动构建和安装 Slurm 的说明如下。 这比 RPM 和 DEB 构建过程要复杂得多,因此仅建议开发人员或 高级用户使用此方法以获得更自定义的安装。 有关更多详细信息,请参阅源代码分发中的 README 和 INSTALL 文件。
- 解压分发的 tarball:
tar -xaf slurm*tar.bz2
cd
到包含 Slurm 源代码的目录并输入./configure
,并使用适当的选项(见下文)。- 输入
make install
以编译和安装程序、 文档、库、头文件等。 - 输入
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(先进先出)和multifactor。 multifactor 插件将根据多种配置参数(年龄、大小、公平共享分配等)为作业分配优先级,其详细信息超出了本文档的范围。 有关详细信息,请参见多因素作业优先级插件文档。
SchedType 配置参数控制排队作业的调度,并提供几种可用选项。
- builtin 将严格按优先级顺序启动作业,通常是(先进先出)
- backfill 将启动较低优先级的作业,如果这样做不会延迟较高优先级作业的预期启动时间;本质上使用较小的作业填补资源分配计划中的空缺。有效的回填调度确实要求用户指定作业时间限制。
- gang 在同一分区/队列中对作业进行时间切片,并可用于从较低优先级队列中抢占作业,以便执行较高优先级队列中的作业。
有关调度选项的更多信息,请参见组调度、抢占、资源预留指南、资源限制和共享可消耗资源。
资源选择
Slurm 使用的资源选择机制由SelectType 配置参数控制。 如果您希望每个节点执行多个作业,但跟踪和管理处理器、内存和其他资源的分配,建议使用cons_tres(可消耗的可跟踪资源)插件。 有关更多信息,请参见Slurm 中的可消耗资源。
日志记录
如果未设置SlurmctldLogFile
和SlurmdLogFile
位置,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 日