scontrol

部分: Slurm 命令 (1)
更新: Slurm 命令
索引

 

名称

scontrol - 查看或修改 Slurm 配置和状态。

 

概要

scontrol [选项...] [命令...]

 

描述

scontrol 用于查看或修改 Slurm 配置,包括:作业、作业步骤、节点、分区、保留和整体系统配置。大多数命令只能由 root 用户或管理员执行。如果未经授权的用户尝试查看或修改配置信息,将会打印错误消息,并且请求的操作将不会发生。如果在执行行上未输入命令,scontrol 将以交互模式运行并提示输入。它将继续提示输入并执行命令,直到显式终止。如果在执行行上输入了命令,scontrol 将执行该命令并终止。所有命令和选项不区分大小写,但节点名称、分区名称和保留名称是区分大小写的(节点名称 "LX" 和 "lx" 是不同的)。所有命令和选项可以缩写到唯一的程度。可以使用 scontrol write config 命令将修改后的 Slurm 配置写入文件。生成的文件将使用约定 "slurm.conf.<datetime>" 命名,并位于与原始 "slurm.conf" 文件相同的目录中。包含原始 slurm.conf 的目录必须可写才能实现此操作。

 

选项

-a, --all
当使用 show 命令时,显示所有分区、它们的作业和作业步骤。这会导致显示关于配置为隐藏的分区和对用户组不可用的分区的信息。

-M, --clusters=<字符串>
要发出命令的集群。只能指定一个集群名称。注意,slurmdbd 必须处于运行状态,以便此选项正常工作,除非在配置了 FederationParameters=fed_display 的联合中运行,或设置了 --federation 选项。此选项隐含地设置 --local 选项。

-d, --details
导致 show 命令提供可用的额外详细信息。

--federation
如果是联合的成员,则报告来自联合的作业。

-F, --future
报告处于未来状态的节点。

-h, --help
打印描述 scontrol 使用的帮助信息。

--hide
不显示关于隐藏分区、它们的作业和作业步骤的信息。默认情况下,既不显示配置为隐藏的分区,也不显示对用户组不可用的分区(即这是默认行为)。

--json, --json=列表, --json=<数据解析器>
以 JSON 格式转储信息,使用默认的数据解析器插件或显式的数据解析器及其参数。所有信息都会被转储,即使它通常不会。传递给其他选项的排序和格式化参数将被忽略;但是,大多数过滤参数仍然有效。此选项并非适用于每个命令。此选项隐含地设置 --details 选项。

--local
仅显示本集群的本地信息。如果是联合的成员,则忽略其他集群。覆盖 --federation。

-o, --oneliner
每条记录打印一行信息。

-Q, --quiet
不打印警告或信息消息,仅打印致命错误消息。

--sibling
显示联合集群上的所有兄弟作业。隐含地表示 --federation。

-u, --uid=<uid>
尝试以用户 <uid> 更新作业,而不是调用用户 ID。

-v, --verbose
打印详细的事件日志。多个 '-v' 将进一步增加日志的详细程度。默认情况下,仅显示错误。

-V , --version
打印版本信息并退出。

--yaml, --yaml=列表, --yaml=<数据解析器>
以 YAML 格式转储信息,使用默认的数据解析器插件或显式的数据解析器及其参数。所有信息都会被转储,即使它通常不会。传递给其他选项的排序和格式化参数将被忽略;但是,大多数过滤参数仍然有效。此选项并非适用于每个命令。此选项隐含地设置 --details 选项。

 

命令

cancel_reboot <NodeList>
取消节点上的待处理重启。如果节点是由于 ASAP 重启而被排空,则节点将被取消排空并清除原因。

create <SPECIFICATION>
创建一个新的节点、分区或保留。请参见下面的完整参数列表。

completing
显示所有处于完成状态的作业及其相关节点,状态为完成或关闭。

delete <SPECIFICATION>
删除指定的 SPECIFICATION 条目。三个 SPECIFICATION 选项是 NodeName=<nodelist>PartitionName=<name>ReservationName=<name>。只有没有正在运行作业且不属于保留的动态节点可以被删除。保留和分区在删除时应没有关联的作业(首先修改作业)。如果指定的分区正在使用,请求将被拒绝。

errnumstr <ERRNO>
给定一个 Slurm 错误编号,返回描述字符串。

fsdampeningfactor <FACTOR>
设置 slurmctld 中的 FairShareDampeningFactor。

getaddrs <NODES>
从 slurmctld 获取 <NODES> 的 IP 地址。

help
显示 scontrol 选项和命令的描述。

hold <job_list>
防止待处理作业启动(将其优先级设置为 0)。使用 release 命令允许作业被调度。job_list 参数是作业 ID 的逗号分隔列表,或是带有作业名称的 "jobname=",这将尝试保持所有具有该名称的作业。注意,当作业被系统管理员使用 hold 命令保持时,只有系统管理员可以释放该作业以供执行(另见 uhold 命令)。当作业被其拥有者保持时,作业的拥有者也可以释放它。此外,尝试保持正在运行的作业不会暂停或取消它。但它会将作业优先级设置为 0 并更新作业原因字段,如果在稍后重新排队时将保持作业。

notify <job_id> <message>
向与指定 job_id 相关的 salloc 或 srun 命令或批处理作业的标准错误发送消息。

pidinfo <proc_id>
打印与提供的进程 ID proc_id 相关的 Slurm 作业 ID 和计划终止时间,位于当前节点上。此命令仅适用于在运行 scontrol 的节点上生成的进程及其后代。

listjobs [<NodeName>]
打印在运行此命令的主机上运行的作业。这会联系任何在本地运行的 slurmstepd,而不会联系 slurmctld。

如果使用 --enable-multiple-slurmd,请使用 <NodeName>。

listpids [<job_id>[.<step_id>]] [<NodeName>]
打印作业步骤中的进程 ID 列表(如果提供了 JOBID.STEPID),或作业中的所有作业步骤(如果提供了 job_id),或在本地节点上所有作业中的所有作业步骤(如果未提供 job_idjob_id 为 "*")。此命令仅适用于在运行 scontrol 的节点上生成的进程及其后代。注意某些 Slurm 配置(ProctrackType 值为 pgid)无法识别与作业或作业步骤相关的所有进程。

注意,NodeName 选项仅在您在同一主机上运行多个 slurmd 守护进程时真正有用。一个主机上的多个 slurmd 守护进程通常仅供 Slurm 开发人员使用。

liststeps [<NodeName>]
打印在运行此命令的主机上运行的步骤。这会联系任何在本地运行的 slurmstepd,而不会联系 slurmctld。

如果使用 --enable-multiple-slurmd,请使用 <NodeName>。

ping
对主从 slurmctld 守护进程进行 ping 测试,并报告它们是否响应。

power {up|down} [asap|force] {ALL|<NodeList>|<NodeSet>} [Reason=<reason>]
控制提供的节点列表/集合的电源状态。对于 'power down',可选的 ASAP/FORCE 标志将添加到电源关闭请求,但对于电源开启请求将被拒绝。所有参数将不区分大小写处理,节点列表/集合除外。可选的 reason 仅在电源关闭时可以指定。此子命令废弃了 scontrol 的更新命令的先前用法:

scontrol update NodeName=<nodes>
                State={POWER_UP|POWER_DOWN|POWER_DOWN_ASAP|POWER_DOWN_FORCE}

命令:
down
将使用配置的 SuspendProgram 程序显式将节点置于节能模式。如果节点已经在关闭电源的过程中,则该命令仅会更改节点的状态,但在达到配置的 SuspendTimeout 之前不会产生任何效果。使用此命令在 ResumeProgram(如 Cray 机器中的 capmc)停滞的情况下,可以手动将节点恢复到 "IDLE"。在这种情况下,重启节点并将状态设置为 "power down" 将取消先前的 "power up" 状态,节点将变为 "IDLE"。

down asap
将排空节点并标记为关闭电源。当前正在运行的作业将首先完成,并且不会将其他作业分配给节点。

down force
将取消节点上的所有作业,关闭电源,并将其状态重置为 "IDLE"。

up
将使用配置的 ResumeProgram 程序显式将节点移出节能模式。如果节点已经在开启电源的过程中,则该命令仅会更改节点的状态,但在达到配置的 ResumeTimeout 之前不会产生任何效果。

reboot [ASAP] [nextstate={RESUME|DOWN}] [reason=<reason>] {ALL|<NodeList>|<NodeSet>}
在节点变为空闲时重启系统中的节点,使用配置在 Slurm 的 slurm.conf 文件中的 RebootProgram。每个节点将添加 "REBOOT" 标志到其节点状态。节点重启后,slurmd 守护进程再次启动,HealthCheckProgram 将运行一次。然后,slurmd 守护进程将向 slurmctld 守护进程注册,"REBOOT" 标志将被清除。"ASAP" 选项将为每个节点的状态添加 "DRAIN" 标志,防止在节点上运行其他作业,以便可以重启并尽快返回服务(即 ASAP)。如果未指定 "reason" 选项,"ASAP" 还将将节点原因设置为 "Reboot ASAP",并且如果未指定 nextstate,则将设置 nextstate=UNDRAIN。如果 "nextstate" 选项指定为 "DOWN",则节点在重启后将保持在关闭状态。如果 "nextstate" 指定为 "RESUME",则节点将正常恢复,节点的原因和 "DRAIN" 状态将被清除。恢复的节点将在未来的调度中被视为可用,并且不会被保留中的空闲节点替换。"reason" 选项将每个节点的原因设置为用户定义的消息。如果未设置其他原因,则默认原因为 "reboot requested"。当发出重启时,原因将附加为:"reboot issued";当节点注册并具有 "nextstate" 为 "DOWN" 时,原因将附加为 "reboot complete";或者当节点未能在 ResumeTimeout 内注册时,原因将附加为 "reboot timed out"。您必须指定节点列表或所有节点都要重启。

注意: 对于处于以下状态的主机,重启请求将被忽略:FUTURE、POWER_DOWN、POWERED_DOWN、POWERING_DOWN、REBOOT_ISSUED、REBOOT_REQUESTED

注意: 默认情况下,此命令不会阻止在重启之前在任何节点上调度其他作业。要做到这一点,您可以使用 "ASAP" 选项或在此之前显式排空节点。您还可以创建高级保留,以防止在要重启的节点上启动其他作业。可以使用 "scontrol cancel_reboot <node>" 或将节点状态设置为 "CANCEL_REBOOT" 来取消待处理的重启。如果节点在 ResumeTimeout 内未重启,将被标记为 "DOWN"。

reconfigure
指示所有 slurmctld 和 slurmd 守护进程重新读取配置文件。此机制可用于在不中断正在运行的作业的情况下修改 slurm.conf(5) 中设置的配置参数。从 23.11 开始,此命令通过为守护进程创建新进程来操作,然后在它们成功启动时将控制权传递给新进程。这使其能够优雅地捕获配置问题,并在出现问题时继续使用先前的配置。此操作将 能更改守护进程的 TCP 端口设置或身份验证机制。

release <job_list>
释放先前保持的作业以开始执行。job_list 参数是作业 ID 的逗号分隔列表,或是带有作业名称的 "jobname=",这将尝试释放所有具有该名称的作业。另见 hold

requeue [<option>] <job_list>
将正在运行、挂起或完成的 Slurm 批处理作业重新排队为待处理状态。job_list 参数是作业 ID 的逗号分隔列表。该命令接受以下选项:
Incomplete
仅对未完成的作业(或作业数组的任务)进行操作。具体来说,仅将处于以下状态的作业重新排队:CONFIGURING、RUNNING、STOPPED 或 SUSPENDED。

requeuehold [<option>] <job_list>
将正在运行、挂起或完成的 Slurm 批处理作业重新排队为待处理状态,并将作业置于保持状态(优先级为零)。job_list 参数是作业 ID 的逗号分隔列表。可以使用 scontrol 释放保持的作业以重置其优先级(例如 "scontrol release <job_id>")。该命令接受以下选项:
Incomplete
仅对未完成的作业(或作业数组的任务)进行操作。具体来说,仅将处于以下状态的作业重新排队:CONFIGURING、RUNNING、STOPPED 或 SUSPENDED。

State=SpecialExit
"SpecialExit" 关键字指定作业必须被置于特殊状态 JOB_SPECIAL_EXIT。"scontrol show job" 命令将显示作业状态为 SPECIAL_EXIT,而 "squeue" 命令则为 SE

resume <job_list>
恢复先前挂起的作业。job_list 参数是作业 ID 的逗号分隔列表。另见 suspend

注意: 挂起的作业释放其 CPU 以分配给其他作业。恢复先前挂起的作业可能导致多个作业分配相同的 CPU,这可能会在某些配置中触发团体调度,或在其他配置中严重降低性能。使用 scancel 命令发送 SIGSTOP 和 SIGCONT 信号将停止作业而不释放其 CPU 以分配给其他作业,在许多情况下将是更可取的机制。如果进行系统维护,您可能希望以以下方式使用挂起/恢复。在挂起之前,将所有节点设置为排空或将所有分区设置为关闭,以便不调度新的作业。然后挂起作业。维护完成后,恢复作业,然后恢复节点和/或将所有分区设置回开启。谨慎使用。只有账户协调员、操作员、管理员、SlurmUser 或 root 可以恢复作业。

schedloglevel <LEVEL>
启用或禁用调度器日志记录。LEVEL 可以是 "0"、"1"、"disable" 或 "enable"。"0" 的效果与 "disable" 相同。"1" 的效果与 "enable" 相同。此值是临时的,当 slurmctld 守护进程读取 slurm.conf 配置文件时(例如,当守护进程重新启动或执行 scontrol reconfigure 时),如果存在 SlurmSchedLogLevel 参数,则将被覆盖。

setdebug <LEVEL> [nodes=<NODES>]
更改 slurmctld 守护进程的调试级别,适用于所有未最初配置为关闭(安静)的日志通道。LEVEL 可以是 0 到 9 之间的整数值(使用与 slurm.conf 文件中的 SlurmctldDebug 相同的值),或要打印的最详细消息类型的名称:"quiet"、"fatal"、"error"、"info"、"verbose"、"debug"、"debug2"、"debug3"、"debug4" 或 "debug5"。此值是临时的,并且每当守护进程读取 slurm.conf 配置文件时将被覆盖(例如,当守护进程重新启动或执行 scontrol reconfigure 时)。
nodes=<NodeName>
如果设置,请求更改调试级别的请求将发送到节点上的 slurmd 进程,而不是发送到 slurmctld。可以使用节点范围表达式指定 NodeName。

setdebugflags {+|-}<FLAG> [{+|-}<FLAG>] [nodes=<NODES>]
添加或删除 slurmctld 守护进程的 DebugFlags。有关支持的 DebugFlags 列表,请参见 "man slurm.conf"。

注意: 更改某些 DebugFlags 的值在不重新启动 slurmctld 守护进程的情况下将无效,后者将根据 slurm.conf 配置文件的内容或 SLURM_DEBUG_FLAGS 环境变量设置 DebugFlags。环境变量优先于 slurm.conf 中的设置。

nodes=<NodeName>
该参数是可选的,如果使用,则请求更改调试级别的请求将发送到 slurmd,而不是 slurmctld。可以使用节点范围表达式指定 NodeName。

show <ENTITY>[=<ID>] 或 <ENTITY> [<ID>]
显示指定实体及其标识的状态。
aliases
返回与给定 NodeHostname 关联的所有 NodeName 值(在多个 slurmd 守护进程在单个计算节点上执行的配置中,获取与真实节点关联的虚拟节点列表时很有用)。

assoc_mgr
显示 slurmctld 内部缓存中用户、关联和/或 qos 的当前内容。输出可以按不同的记录类型进行过滤:
users=<user1>[...,<userN>]
将显示的用户记录限制为具有指定用户名的记录。

accounts=<acct1>[...,<acctN>]
将显示的关联记录限制为具有指定账户名称的记录。

qos=<qos1>[...,<qosN>]
将显示的 QOS 记录限制为具有指定 QOS 名称的记录。

flags={users|assoc|qos}
指定要显示的所需记录类型。如果未指定标志,则显示所有记录类型。

bbstat
显示当前突发缓冲区插件状态工具的输出(slurm_bb_get_status 用于 lua 或 dwstat 用于 datawarp)。在 bbstat 后面的选项直接传递给 slurmctld 守护进程的状态工具,并将响应返回给用户。等同于 dwstat

burstbuffer
显示突发缓冲区插件的当前状态。

config
显示配置文件中的参数名称,混合大小写(例如 SlurmdPort=7003),而派生参数名称则仅为大写(例如 SLURM_VERSION)。

daemons
报告此节点上应运行的守护进程。

dwstat
显示当前突发缓冲区插件状态工具的输出(slurm_bb_get_status 用于 lua 或 dwstat 用于 datawarp)。在 dwstat 后面的选项直接传递给 slurmctld 守护进程的状态工具,并将响应返回给用户。等同于 bbstat

federation
控制器所属的联合名称,联合的兄弟集群将被列出。

hostlist
接受主机名列表并打印它们的主机列表表达式(与 hostnames 相反)。hostlist 还可以接受包含主机名列表的文件的绝对路径名(以字符 '/' 开头),或单个 '-' 以直接从标准输入读取。可以使用简单的节点范围表达式指定多个节点名称(例如 "lx[10-20]")。默认情况下,hostlist 不对节点列表进行排序或去重(例如 tux2,tux1,tux2 = tux[2,1-2])。如果您希望获得排序列表,请使用 hostlistsorted(例如 tux2,tux1,tux2 = tux[1-2,2])。

hostlistsorted
接受主机名列表并打印一个排序(但不唯一)的主机列表表达式。请参见 hostlist

hostnames
接受可选的主机列表表达式作为输入,并将单个主机名列表写入标准输出(每行一个)。如果未提供主机列表表达式,则使用 SLURM_JOB_NODELIST 环境变量的内容。例如 "tux[1-3]" 被映射为 "tux1"、"tux2" 和 "tux3"(每行一个主机名)。

job
默认情况下显示所有作业的统计信息。如果指定了可选的作业 ID,将仅显示该作业的详细信息。如果作业未指定每个节点的插座、每个插座的核心或每个核心的线程,则将在 ReqS:C:T=*:*:* 字段中显示 '*'。

licenses
默认情况下显示所有配置许可证(本地和远程)的统计信息。如果指定了可选的许可证名称,将仅显示该许可证的详细信息。

node
默认情况下显示所有节点的统计信息。如果指定了可选的节点名称,将仅显示该节点的详细信息。

partition
默认情况下显示所有分区的统计信息。如果指定了可选的分区名称,将仅显示该分区的详细信息。

reservation
默认情况下显示所有保留的统计信息。如果指定了可选的保留名称,将仅显示该保留的详细信息。

slurmd
显示当前节点上运行的 slurmd 的统计信息。

step
默认情况下显示所有作业步骤的统计信息。如果指定了可选的作业 ID,将仅显示该作业的步骤详细信息。如果指定了作业 ID.步骤 ID,将仅显示该步骤的详细信息。如果指定了 container-id=<id>,则将显示与给定 container-id 匹配的第一个步骤。

topoconf
以与 topology.yaml 相同的格式显示多个拓扑的运行配置。

topology [topology_name] [unit=NAME] [node=NAME]
显示所选拓扑布局的信息。如果未提供参数,将返回默认拓扑。

如果指定了单元,将显示该单元的信息。unit 关键字可以替换为 switchblock(例如 block=b2)。

如果指定了一个节点名称,将显示与该节点连接的所有单元(及其父交换机)。如果指定了多个节点名称,仅显示连接到所有命名节点的单元。

shutdown <OPTION>
指示 Slurm 守护进程保存当前状态并终止。默认情况下,Slurm 控制器(slurmctld)将请求转发给所有其他守护进程(每个计算节点上的 slurmd 守护进程)。OPTIONslurmctldcontroller 时,仅关闭 slurmctld 守护进程,slurmd 守护进程保持活动状态。

suspend <job_list>
挂起正在运行的作业。job_list 参数是作业 ID 的逗号分隔列表。使用 resumecommand to resume its execution. 用户进程必须在接收到SIGSTOP信号时停止,并在接收到SIGCONT信号时恢复,以使此操作生效。 并非所有架构和配置都支持作业挂起。 如果一个挂起的作业被重新排队,它将被置于保持状态。 作业挂起的时间不会计入作业的时间限制。 只有账户协调员、操作员、管理员、Slurm用户或root可以挂起作业。

takeover [<INDEX>]
指示Slurm的一个备份控制器(slurmctld)接管系统控制。默认情况下,第一个备份控制器(INDEX=1)请求从主控制器获取控制权,并等待其终止。之后,它将从备份模式切换到控制器模式。如果无法联系到主控制器,它将直接切换到控制器模式。这可以在主节点宕机时加速Slurm控制器的故障转移机制。如果执行主Slurm控制器的计算机计划停机,这可以用来最小化干扰。 (注意:Slurm的主控制器将在启动时重新获得控制权。)

top <job_list>
将指定的作业ID移动到属于相同用户ID、分区名称、账户和QOS的作业队列的顶部。 job_list参数是一个用逗号分隔的有序作业ID列表。 任何不匹配所有这些字段的作业将不受影响。 只有提交到单个分区的作业将受到影响。 此操作通过调整作业的优先级值来改变作业的顺序。 对该用户的吞吐量的净影响将是微不足道的或略微负面。 此操作默认对非特权(非操作员、管理员、Slurm用户或root)用户禁用。系统管理员可以通过在SchedulerParameters配置参数中包含选项“enable_user_top”来启用非特权用户的此操作。

token [lifespan=<lifespan>] [username=<username>]
返回一个身份验证令牌,如果系统上启用了AuthAltTypes=auth/jwt,则可以用于支持JWT身份验证。 支持两个可选参数。lifespan=可用于指定令牌的生命周期(以秒为单位)。username(仅对Slurm用户/root可用)可用于请求不同用户名的令牌。生命周期可以设置为“无限”,以获得不会过期的令牌。建议站点使用所需的最小生命周期,并更频繁地生成令牌,而不是使用生命周期较长的令牌。

uhold <job_list>
防止待处理作业启动(将其优先级设置为0)。 job_list参数是用空格分隔的作业ID或作业名称列表。 使用release命令允许作业被调度。 此命令旨在让系统管理员保持作业,以便作业所有者可以释放它,而不需要系统管理员的干预(另请参见hold命令)。

update <SPECIFICATION>
根据提供的规范更新作业、步骤、节点、分区或预留配置。SPECIFICATION的格式与Slurm配置文件和上述show命令的输出相同。可能希望在要更新的特定实体上执行show命令(如上所述),然后使用剪切和粘贴工具将更新的配置值输入到update中。请注意,虽然大多数配置值可以使用此命令更改,但并非所有值都可以通过此机制更改。特别是,节点的硬件配置或从集群中物理添加或移除节点只能通过编辑Slurm配置文件并执行reconfigure命令(如上所述)来完成。

update <SuspendExc*>[=|+=|-=]<LIST>
更新SuspendExcNodesSuspendExcPartsSuspendExcStates。 <LIST>分别是节点列表、分区列表或节点状态列表。使用+=/-=将节点、分区或状态添加到当前配置列表中。使用=替换当前列表。 当使用“:”选项时,SuspendExcNodes不支持“+=”或“-=”,但是,直接赋值“=”始终支持。 考虑使用“scontrol show config | grep SuspendExc”查看这些设置的当前状态。

version
显示正在执行的scontrol的版本号。

wait_job <job_id>
等待直到作业及其所有节点准备好使用,或作业进入某种终止状态。此选项在Slurm Prolog或批处理脚本本身中特别有用,如果节点在需要时自动关闭和重新启动。

注意:不要在PrologSlurmctld或Prolog中使用scontrol wait_job,或在PrologFlags=Alloc的情况下使用,因为这将导致死锁。

注意:在对数组作业使用wait_job时,使用SLURM_JOB_ID环境变量引用作业,而不是SLURM_ARRAY_JOB_ID变量。

write batch_script <job_id> [<optional_filename>]
将给定job_id的批处理脚本写入文件或标准输出。如果未给出可选文件名参数,则文件默认为slurm-<job_id>.sh。如果给出“-”而不是文件名,则脚本将写入标准输出。 批处理脚本只能由管理员或操作员,或作业所有者检索。

write config <optional_filename>
将当前配置写入文件,命名约定为“slurm.conf.<datetime>”,位于原始slurm.conf文件的同一目录中。如果给定文件名,则将创建带有.<datetime>后缀的文件位置。

 

交互命令

注意: 下面列出的所有命令都可以在交互模式中使用,但不能在初始命令行上使用。

all
显示所有分区、它们的作业和作业步骤。这将显示有关配置为隐藏的分区和对用户组不可用的分区的信息。

cluster <CLUSTER_NAME>
要发出命令的集群。只能指定一个集群名称。

details
导致show命令提供可用的附加详细信息。 作业信息将包括在每个节点上分配的CPU和NUMA内存。 请注意,在启用超线程并且Slurm配置为分配核心的计算机上,每个列出的CPU代表一个物理核心。 该核心上的每个超线程可以分配一个单独的任务,因此作业的CPU计数和任务计数可能不同。 有关更多信息,请参见srun手册页中的--cpu-bind--mem-bind选项描述。 details选项目前仅支持show job命令。

exit
终止scontrol交互会话。

hide
不显示配置为隐藏的分区或对用户组不可用的分区的作业、作业或作业步骤信息。 这是默认行为。

oneliner
每条记录打印一行信息。

quiet
不打印警告或信息消息,仅打印致命错误消息。

quit
终止scontrol的执行。

verbose
打印详细事件日志。 这包括数据结构的时间戳、记录计数等。

!!
重复最后执行的命令。

 

作业 - 更新命令的规范

请注意,root、Slurm用户或管理员进行的更新请求不受某些限制的约束。例如,如果管理员更改了待处理作业的QOS,则某些限制(如TimeLimit)将不会自动更改,因为管理员所做的更改被允许违反这些限制。

Account=<account>
要更改此作业资源使用的账户名称。 可以使用空数据值“Account=”清除该值。

AdminComment=<spec>
任意描述性字符串。只能由Slurm管理员设置。

ArrayTaskThrottle=<count>
指定作业数组中可以同时执行的最大任务数。 将计数设置为零以消除任何限制。 作业数组的任务节流计数作为其ArrayTaskId字段的一部分报告,前面带有百分号。 例如“ArrayTaskId=1-10%2”表示最大运行任务数限制为2。

BurstBuffer=<spec>
要更改此作业资源使用的突发缓冲区规范。 可以使用空数据值“BurstBuffer=”清除该值。 格式是突发缓冲区插件特定的。

Clusters=<spec>
指定联邦作业可以运行的集群。

ClusterFeatures=<spec>
指定联邦集群必须具备的特征,以便提交兄弟作业。如果集群至少具有一个指定特征,Slurm将尝试将兄弟作业提交到该集群。

Comment=<spec>
任意描述性字符串。

Contiguous={yes|no}
设置作业对连续(连续)节点的分配要求。 可能的值为“YES”和“NO”。 只有Slurm管理员或root可以更改此参数。

CoreSpec=<count>
每个节点保留的核心数量供系统使用。 作业将为这些核心收费,但无法使用它们。 如果不受限制,将报告为“*”。

CPUsPerTask=<count>
更改CPUsPerTask作业的值。

Deadline=<time_spec>
接受形式为HH:MM:SS的时间,以指定作业在特定时间的截止日期(秒是可选的)。 您还可以指定midnightnoonelevenses(上午11点)、fika(下午3点)或teatime(下午4点),并且您可以在上午或下午的截止日期后加上AMPM。 您可以使用形式为MMDDYYMM/DD/YYMM.DD.YY的日期为作业指定截止日期,或使用YYYY-MM-DD[THH:MM[:SS]]的日期和时间。您还可以给出类似now + count time-units的时间,其中时间单位可以是seconds(默认)、minuteshoursdaysweeks,并且您可以告诉Slurm在明天设置截止日期,使用关键字tomorrow。 指定的截止日期必须晚于当前时间。 只有待处理作业可以更新截止日期。 只有Slurm管理员或root可以更改此参数。

DelayBoot=<time_spec>
更改决定是否重新启动节点以满足作业特征规范的时间,如果作业在此时间段内有资格运行。请参见salloc/sbatch手册页选项--delay-boot。

Dependency=<dependency_list>
推迟作业的启动,直到满足指定的作业依赖规范。一旦满足依赖关系,它将从作业中删除。 使用空依赖列表(例如“Dependency=”)取消依赖。 <dependency_list>的形式为<type:job_id[:job_id][,type:job_id[:job_id]]>。 许多作业可以共享相同的依赖关系,这些作业甚至可以属于不同的用户。
after:job_id[:jobid...]
此作业可以在指定作业开始执行或被取消后开始执行。

afterany:job_id[:jobid...]
此作业可以在指定作业终止后开始执行。

afternotok:job_id[:jobid...]
此作业可以在指定作业以某种失败状态(非零退出代码、节点故障、超时等)终止后开始执行。 此依赖关系必须在指定作业仍处于活动状态时添加,或在指定作业结束后的MinJobAge秒内添加。

afterok:job_id[:jobid...]
此作业可以在指定作业成功执行(以零退出代码完成)后开始执行。 此依赖关系必须在指定作业仍处于活动状态时添加,或在指定作业结束后的MinJobAge秒内添加。

singleton
此作业可以在任何先前启动的共享相同作业名称和用户的作业终止后开始执行。 换句话说,任何时候只能有一个该名称且由该用户拥有的作业处于运行或挂起状态。

EligibleTime=<time_spec>
StartTime

EndTime
作业预计根据作业的时间限制终止的时间。当作业提前结束时,此字段将更新为实际结束时间。

ExcNodeList=<nodes>
设置作业的排除节点列表。可以使用简单的节点范围表达式(例如“lx[10-20]”)指定多个节点名称。 可以使用空数据值“ExcNodeList=”清除该值。

Extra=<spec>
如果使用空格或某些特殊字符,则用单引号或双引号括起来的任意字符串。有关更多详细信息,请参见<https://slurm.schedmd.com/extra_constraints.html>。

Features=<features>
设置作业所需的节点特征。 特征列表可以包括多个特征名称,以与号(AND)和/或竖线(OR)运算符分隔。 例如:Features="opteron&video"Features="fast|faster"。 在第一个示例中,仅使用同时具有特征“opteron”和特征“video”的节点。 没有机制可以指定您希望一个节点具有特征“opteron”,另一个节点具有特征“video”,以防没有节点同时具有这两个特征。 如果应为所有分配的节点使用一组可能选项中的一个,则使用OR运算符并将选项括在方括号内。 例如:“Features=[rack1|rack2|rack3|rack4]"可能用于指定所有节点必须在集群的单个机架上分配,但可以使用这四个机架中的任何一个。 请求还可以通过在特征名称后附加星号和计数来指定所需的节点数。 例如“Features=graphics*4”表示至少四个分配的节点必须具有特征“graphics”。 特征也支持括号以进行AND操作。 例如“Features=[(knl&a2a&flat)*4&haswell*2]”表示资源分配应包括4个具有所有特征“knl”、“a2a”和“flat”的节点,以及2个具有特征“haswell”的节点。 节点计数的约束只能与AND运算符组合。 可以使用空数据值清除该值,例如“Features=”。

Gres=<list>
指定每个节点请求的通用可消耗资源的逗号分隔列表。 列表中每个条目的格式为“name[:count[*cpu]]”。 名称是可消耗资源的名称。 计数是这些资源的数量,默认值为1。 指定的资源将在每个分配的节点上分配给作业,除非附加“*cpu”,在这种情况下,资源将按每个CPU分配。 可用的通用可消耗资源由系统管理员配置。 如果选项参数为“help”,将打印可用的通用可消耗资源列表,并且命令将退出。 使用示例包括“Gres=gpus:2*cpu,disk=40G”和“Gres=help”。

JobId=<job_list>
识别要更新的作业。 job_list可以是用逗号分隔的作业ID列表。 必须提供JobIdJobName。 如果JobId等于ArrayJobID,则更新将影响数组的所有单个作业。在这种情况下,要更新特定的单个作业,必须使用形式<ArrayJobID>_<ArrayTaskId>。

Licenses=<name>
根据salloc/sbatch/srun手册页中描述的规范指定许可证(或集群所有节点上可用的其他资源)。

MailType=<types>
设置邮件事件类型。有效的类型值为NONE、BEGIN、END、FAIL、REQUEUE、ALL(等同于BEGIN、END、FAIL、REQUEUE和STAGE_OUT)、STAGE_OUT(突发缓冲区阶段输出和拆解完成)、TIME_LIMIT、TIME_LIMIT_90(达到时间限制的90%)、TIME_LIMIT_80(达到时间限制的80%)、TIME_LIMIT_50(达到时间限制的50%)和ARRAY_TASKS(为每个数组任务发送电子邮件)。可以在逗号分隔的列表中指定多个类型值。除非指定了ARRAY_TASKS选项,否则作业BEGIN、END和FAIL的邮件通知适用于整个作业数组,而不是为作业数组中的每个任务生成单独的电子邮件消息。

MailUser=<name>
设置接收状态更改电子邮件通知的用户。空字符串将把邮件用户设置为默认值,即提交用户。

MCSLabel=<name>
设置作业的MCS标签,仅在slurmctld中加载了MCS插件时生效。

MinCPUsNode=<count>
将作业每个节点的最小CPU数量设置为指定值。

MinMemoryCPU=<megabytes>
将作业每个分配CPU所需的最小实际内存设置为指定值。可以设置MinMemoryCPUMinMemoryNode,但不能同时设置。

MinMemoryNode=<megabytes>
将作业每个节点所需的最小实际内存设置为指定值。可以设置MinMemoryCPUMinMemoryNode,但不能同时设置。

MinTmpDiskNode=<megabytes>
将作业每个节点所需的最小临时磁盘空间设置为指定值。 只有Slurm管理员或root可以更改此参数。

TimeMin=<timespec>
更改TimeMin值,指定作业的最小时间限制分钟数。

JobName=<name>
识别要修改的作业名称或将作业名称设置为指定值。 当用于识别要修改的作业时,所有用户的所有作业都会被修改,除非使用UserID选项来识别特定用户。 必须提供JobIdJobName

Name[=<name>]
见JobName。

Nice[=<adjustment>]
使用调整的调度优先级更新作业。在没有调整值的情况下,调度优先级降低100。负的nice值会提高优先级,否则会降低。调整范围为+/- 2147483645。只有特权用户可以指定负的调整值。

NodeList=<nodes>
将分配给正在运行的作业的节点更改为缩小其大小。 指定的节点列表必须是当前分配给作业的节点的子集。可以使用简单的节点范围表达式(例如“lx[10-20]”)指定多个节点名称。在减少作业的分配后,后续的srun命令必须明确指定适合新分配的节点和任务计数。

注意:具有任意分配的作业的分配节点不能更新。

NumCPUs=<min_count>[-<max_count>]
设置作业的最小和可选最大CPU数量。

NumNodes=<min_count>[-<max_count>]
设置作业的最小和可选最大节点数量。 如果作业已经在运行,使用此选项指定小于当前分配的节点计数,之前分配给作业的资源将被放弃。在减少作业的分配后,后续的srun命令必须明确指定适合新分配的节点和任务计数。另请参见上面的NodeList参数。这与ReqNodes相同。

注意:具有任意分配的作业的节点计数不能更新。

NumTasks=<count>
将作业请求的任务计数设置为指定值。 在分配内的特定步骤中启动的任务数量可能与此值不同,例如在步骤创建时请求不同数量的任务。这与ReqProcs相同。

OverSubscribe={yes|no}
设置作业与其他作业共享计算资源(即单个CPU)的能力。可能的值为“YES”和“NO”。 此选项只能在待处理作业中更改。

Partition=<name>
将作业的分区设置为指定值。

Prefer=<features>
设置作业的首选节点特征。此列表仅为首选,而不是像Features那样的要求。此列表将覆盖在Features中请求的内容。 请参见上面的Features选项。

Priority=<number>
将作业的优先级设置为指定值。 请注意,作业优先级为零将阻止作业被调度。 通过将作业的优先级设置为零,它被保持。 将优先级设置为非零值以允许其运行。 显式设置作业的优先级将清除任何先前设置的nice值,并移除优先级/多因子插件管理作业优先级的能力。 为了恢复优先级/多因子插件管理作业优先级的能力,请保持作业,然后释放作业。 只有Slurm管理员或root可以提高作业的优先级。

QOS=<name>
将作业的QOS(服务质量)设置为指定值,或以逗号分隔的QOS列表。 如果请求列表,将根据给定QOS的优先级进行排序,第一个为最高优先级。 可以使用空数据值“QOS=”清除该值。

Reboot={yes|no}
设置作业的标志,以指定是否在开始作业之前强制分配的节点重新启动。这仅在某些系统配置中受支持,因此可能会被静默忽略。

ReqCores=<count>
更改作业请求的核心计数。

ReqNodeList=<nodes>
设置作业的必需节点列表。可以使用简单的节点范围表达式(例如“lx[10-20]”)指定多个节点名称。 可以使用空数据值“ReqNodeList=”清除该值。

ReqNodes=<min_count>[-<max_count>]
见NumNodes。

ReqProcs=<count>
见NumTasks。

ReqSockets=<count>
更改作业请求的插槽计数。

ReqThreads=<count>
更改作业请求的线程计数。

Requeue={0|1}
规定作业在节点故障后是否应重新排队:0表示不,1表示是。

ReservationName=<name>
将作业的预留设置为指定值。 可以使用空数据值“ReservationName=”清除该值。

ResetAccrueTime
将作业的累积时间值设置为“现在”,这意味着它将失去之前为优先级累积的任何时间。如果您有大量作业已经在队列中,并且希望开始限制在不等待队列清空的情况下可以累积时间的作业数量,这将很有帮助。

SiteFactor=<account>
指定作业的管理员优先级因子,范围为+/-2147483645。 只有特权用户可以修改该值。

StdErr=<filepath>
设置批处理作业的stderr文件路径。 可以使用空数据值“StdErr=”将其重置为作业默认值。

注意:默认情况下,StdErr将合并到StdOut中。

StdIn=<filepath>
设置批处理作业的stdin文件路径。 可以使用空数据值“StdIn=”将其重置为作业默认值。

注意:默认情况下,StdIn将为“/dev/null”。

StdOut=<filepath>
设置批处理作业的stdout文件路径。 可以使用空数据值“StdOut=”将其重置为作业默认值。

注意:默认情况下,StdOut将基于JobId

Shared={yes|no}
见上面的OverSubscribe选项。

StartTime=<time_spec>
设置作业的最早启动时间。 接受形式为HH:MM:SS的时间,以在特定时间运行作业(秒是可选的)。 (如果该时间已经过去,则假定为第二天。) 您还可以指定midnightnoonelevenses(上午11点)、fika(下午3点)或teatime(下午4点),并且您可以在上午或下午的时间后加上AMPM。 您还可以指定作业将在何时运行,指定形式为MMDDYYMM/DD/YYMM.DD.YY的日期,或指定YYYY-MM-DD[THH:MM[:SS]]的日期和时间。您还可以给出类似now + count time-units的时间,其中时间单位可以是seconds(默认)、minuteshoursdaysweeks,并且您可以告诉Slurm今天运行作业,使用关键字today,并在明天运行作业,使用关键字tomorrow

关于日期/时间规范的说明:
 - 尽管代码允许HH:MM:SS时间规范的“秒”字段,但请注意,Slurm调度程序的轮询时间不够精确,无法保证在确切的秒数上调度作业。作业将在指定时间之后的下一个轮询中有资格启动。确切的轮询间隔取决于Slurm调度程序(例如,默认调度/内置为60秒)。
 - 如果未指定时间(HH:MM:SS),则默认值为(00:00:00)。
 - 如果指定了没有年份的日期(例如,MM/DD),则假定为当前年份,除非MM/DD和HH:MM:SS的组合在该年份已经过去,在这种情况下使用下一年。

Switches=<count>[@<max-time-to-wait>]
当使用树形拓扑时,这定义了作业分配所需的最大交换机数量。如果Slurm找到的分配包含的交换机数量超过指定的计数,则作业将保持待处理状态,直到找到所需交换机数量的分配或时间限制到期。默认情况下,没有交换机计数限制,也没有时间限制延迟。将计数设置为零以清除任何先前设置的计数(禁用限制)。 作业的最大时间延迟可能会受到系统管理员使用SchedulerParameters配置参数中的max_switch_wait参数选项的限制。 另请参见wait-for-switch

wait-for-switch=<seconds>
更改等待交换机的最大时间<seconds>秒。

TasksPerNode=<count>
更改作业请求的TasksPerNode。

ThreadSpec=<count>
每个节点保留的线程数量供系统使用。 作业将为这些线程收费,但无法使用它们。 如果不受限制,将报告为“*”。

TimeLimit=<time>
作业的时间限制。 输出格式为[days-]hours:minutes:seconds或“UNLIMITED”。 输入格式(对于update命令)设置为分钟、分钟:秒、小时:分钟:秒、天-小时、天-小时:分钟或天-小时:分钟:秒。 时间分辨率为一分钟,秒值向上舍入到下一个分钟。 如果更改作业的时间限制,则必须指定新的时间限制值,或在时间和等号前加上“+”或“-”以增加或减少当前时间限制(例如“TimeLimit+=30”)。为了增加或减少当前时间限制,JobId规范必须在TimeLimit规范之前。 请注意,增加或减少作业数组的时间限制仅在作业数组尚未拆分为多个作业记录之前允许。 只有Slurm管理员或root可以增加作业的TimeLimit。

UserID=<UIDname>
JobName选项一起使用,以识别要修改的作业。 可以指定用户名或数字ID(UID)。

WCKey=<key>
将作业的工作负载特征键设置为指定值。

WorkDir=<directory_name>
将作业的工作目录设置为指定值。请注意,这只能为处于PENDING状态的作业设置,如果作业依赖于相对路径到原始提交的WorkDir,则可能会导致作业启动失败。

 

作业 - 显示命令的规范

“show”命令在与“job”或“job <jobid>”实体一起使用时,显示有关作业或作业的详细信息。许多信息可以使用上述描述的“update job”命令进行修改。然而,show job命令显示的以下字段是只读的,无法修改:

AllocNode:Sid
进行资源分配的本地节点和系统ID。

BatchFlag
使用sbatch命令提交的作业的BatchFlag设置为1。如果由于故障而重新排队,BatchFlag将增加到1以上。使用其他命令提交的作业的BatchFlag设置为0,不会增加。

ExitCode=<exit>:<sig>
wait()函数报告的作业退出状态。第一个数字是退出代码,通常由exit()函数设置。第二个数字是导致进程终止的信号,如果是由信号终止的。

GroupId
提交作业的组。

JobState
作业的当前状态。

NodeListIndices
NodeIndices暴露了与分配给作业的节点相关的节点表的内部索引。

NtasksPerN:B:S:C=<tasks_per_node>:<tasks_per_baseboard>:<tasks_per_socket>:<tasks_per_core>
指定每个硬件组件(节点、主板、插槽和核心)要启动的任务数。未约束的值可能显示为“0”或“*”。

PreemptEligibleTime
作业变得可以被抢占的时间。由slurm.conf中的全局选项或作业QOS的PreemptExemptTime修改。如果作业尚未开始或PreemptMode=OFF,则此项将被隐藏。

PreemptTime
作业被通知选择抢占的时间。此值仅对PreemptMode=CANCELPreemptMode=REQUEUE以及在具有指定GraceTime值的分区或QOS中的作业有意义。如果作业尚未开始或PreemptMode=OFF,则此项将被隐藏。

PreSusTime
作业在最后一次挂起之前运行的时间。

Reason
调度程序未启动作业的原因:例如,等待“资源”。有关作业原因代码的详细信息,请访问此页面:<https://slurm.schedmd.com/job_reason_codes.html>

ReqB:S:C:T=<baseboard_count>:<socket_per_baseboard_count>:<core_per_socket_count>:<thread_per_core_count>
指定作业请求的各种硬件组件的数量。未约束的值可能显示为“0”或“*”。

SecsPreSuspend=<seconds>
如果作业被挂起,这是作业在被挂起之前累积的运行时间(以秒为单位)。

SegmentSize=<size>
作业请求的段大小。

Socks/Node=<count>
每个节点所需的插槽数量

SubmitTime
作业提交的时间和日期戳(以当地时间)。输出格式与EndTime字段的格式相同。

注意:如果作业被重新排队,提交时间将被重置。要获取原始提交时间,必须使用“sacct -j <job_id[.<step_id>]"命令,同时指定-D或--duplicate选项以显示作业的所有重复条目。

SuspendTime
作业最后一次挂起或恢复的时间。

关于各种作业状态显示的信息的注意事项: 当您提交“show job”功能的请求时,scontrol进程向slurmctld发出带有REQUEST_JOB_INFO消息类型的RPC请求调用。如果作业的状态为PENDING,则返回一些详细信息,例如:min_nodes、min_procs、cpus_per_task等。如果状态不是PENDING,则代码假定它处于更进一步的状态,例如RUNNING、COMPLETE等。在这些情况下,代码明确返回这些值为零。一旦作业资源被分配并且作业已启动,这些值就没有意义。

 

步骤 - 更新命令的规范

StepId=<job_id>[.<step_id>]
识别要更新的步骤。如果给定job_id,但未指定step_id,则将修改识别的作业的所有步骤。此规范是必需的。

TimeLimit=<time>
作业的时间限制。输出格式为[days-]hours:minutes:seconds或“UNLIMITED”。输入格式(对于update命令)设置为分钟、分钟:秒、小时:分钟:秒、天-小时、天-小时:分钟或天-小时:分钟:秒。时间分辨率为一分钟,秒值向上舍入到下一个分钟。如果更改步骤的时间限制,则必须指定新的时间限制值,或在时间前加上“+”或“-”以增加或减少当前时间限制(例如“TimeLimit=+30”)。为了增加或减少当前时间限制,StepId规范必须在TimeLimit规范之前。

 

节点 - 创建命令的规范

提供与slurm.conf中找到的相同NodeName配置。有关详细信息,请参阅slurm.conf手册页。仅允许State=CLOUD和State=FUTURE节点。

 

节点 - 更新命令的规范

NodeName=<name>
识别要更新的节点。可以使用简单的节点范围表达式(例如“lx[10-20]”)指定多个节点名称。节点集也可以单独指定或与节点范围表达式混合,使用逗号作为列表分隔符。如果单独指定关键字“ALL”,则将尝试对本地集群中的所有节点进行更新。此规范是必需的。

ActiveFeatures=<features>
识别当前在指定节点上活动的特性。任何先前活动的特性规范将被新值覆盖。另请参见AvailableFeatures。通常ActiveFeatures将与AvailableFeatures相同;然而ActiveFeatures可能被配置为AvailableFeatures的子集。例如,一个节点可能以多种配置启动。在这种情况下,所有可能的配置可能被识别为AvailableFeatures,而ActiveFeatures将识别当前节点配置。使用scontrol更新ActiveFeatures时,变更仅在slurmctld中进行。当使用node_features插件时,必须在节点上更新节点的状态/特性,以便新的节点启动将报告更新的状态/特性。

AvailableFeatures=<features>
识别指定节点上可用的特性。任何先前定义的可用特性规范将被新值覆盖。通过scontrol分配的AvailableFeatures仅在使用-R选项重新启动slurmctld守护进程并保留状态文件时持久存在,或者在slurmctld收到SIGHUP时。更新slurm.conf以进行任何希望在正常重启slurmctld或执行scontrol reconfig时持久化的更改。

注意:通过scontrol删除的可用特性必须处于非活动状态(即先从ActiveFeatures中删除它们)。

CertToken=<token>
由certmgr插件接口使用的唯一令牌字符串,用于验证节点身份。

Comment=<comment>
任意描述字符串。使用引号括起包含多个单词的注释

CpuBind=<node>
指定此节点默认使用的任务绑定模式。支持的选项包括:“none”、“socket”、“ldom”(NUMA)、“core”、“thread”和“off”(移除先前的绑定模式)。

Extra=<comment>
节点上的任意字符串。使用引号括起包含多个单词的字符串。有关更多详细信息,请参见<https://slurm.schedmd.com/extra_constraints.html>。

Gres=<gres>
识别与指定节点关联的通用资源。任何先前定义的通用资源将被新值覆盖。多个通用资源的规范应以逗号分隔。每个资源规范由名称后跟可选的冒号和数字值(默认值为1)(例如“Gres=bandwidth:10000”)组成。除非将其计数设置为零,否则不允许修改与特定文件(例如GPU)相关联的GRES计数。要将GRES计数更改为其他值,请修改您的slurm.conf和gres.conf文件并重新启动守护进程。如果GRES与特定插槽相关联,则该信息将被报告。例如,如果节点上的所有4个GPU都与插槽零相关联,则“Gres=gpu:4(S:0)”。如果与插槽0和1相关联,则“Gres=gpu:4(S:0-1)”。与特定GPU相关联的具体GPU的信息未被报告,但仅通过解析gres.conf文件可用。通过scontrol分配的通用资源仅在使用-R选项重新启动slurmctld守护进程并保留状态文件时持久存在,或在slurmctld收到SIGHUP时。更新slurm.conf以进行任何希望在正常重启slurmctld或执行scontrol reconfig时持久化的更改。

InstanceId=<instance_id>
云实例ID。

InstanceType=<instance_type>
云实例类型。

NodeAddr=<node address>
节点在建立通信路径时应引用的名称。此名称将用作getaddrinfo()函数的参数以进行识别。如果使用节点范围表达式指定多个节点,则它们必须与NodeName中的条目完全匹配(例如“NodeName=lx[0-7] NodeAddr=elx[0-7]”)。NodeAddr还可以包含IP地址。

NodeHostname=<node hostname>
通常这是“/bin/hostname -s”返回的字符串。它也可以是“/bin/hostname -f”返回的完全合格域名(例如“foo1.bar.com”),或与主机通过主机数据库(/etc/hosts)或DNS关联的任何有效域名,具体取决于解析器设置。请注意,如果未使用主机名的短形式,则可能会阻止使用主机列表表达式(方括号中的数字部分必须位于字符串的末尾)。可以使用节点范围表达式指定一组节点。如果使用表达式,则NodeHostname识别的节点数量必须与NodeName识别的节点数量相同。

Reason=<reason>
识别节点处于“DOWN”、“DRAINED”、“DRAINING”、“FAILING”或“FAIL”状态的原因。使用引号括起包含多个单词的原因。

ResumeAfter=<seconds>
在节点状态更新为“DOWN”或“DRAIN”后,安排节点状态恢复的秒数。在状态恢复时,节点的状态将从DRAINDRAININGDOWNREBOOT更改为IDLENoResp。slurmctld将尝试联系slurmd请求节点注册自身。

注意:值为-1将取消节点状态恢复的安排。

State=<state>
将以下状态/操作之一分配给通过更新命令指定的节点。
CANCEL_REBOOT
取消节点上的待处理重启(与scontrol cancel_reboot <node>相同)。

DOWN
停止所有正在运行和挂起的作业,并使节点无法接受新作业。

DRAIN
指示此节点上不允许启动新作业。允许现有作业运行到完成,完成后将节点置于DRAINED状态。

FAIL
类似于DRAIN,但某些应用程序会在作业完成之前寻求放弃这些节点。

FUTURE
指示节点尚未完全配置,但预计在未来某个时刻可用。

IDLE
将清除DOWNDRAINFAIL状态。将状态设置为IDLENoResp。slurmctld将尝试联系slurmd请求节点注册自身。一旦注册,节点状态将移除NoResp标志,并恢复正常操作。

NoResp
这将为节点设置“未响应”标志,而不改变其底层状态。

RESUME
不是实际的节点状态,但将节点状态从DRAINDRAININGDOWNREBOOT更改为IDLENoResp。slurmctld将尝试联系slurmd请求节点注册自身。一旦注册,节点状态将移除NoResp标志,并恢复正常操作。它还将清除节点的POWERING_DOWN状态,使其有资格被分配。

UNDRAIN
清除节点的排水状态(类似于RESUME),但不会改变节点的基本状态(例如DOWN)。UNDRAIN需要有效的节点注册,才能在节点上调度新作业。将节点设置为DOWN将导致该节点上所有正在运行和挂起的作业被终止。

虽然上述所有状态都是有效的,但其中一些在其先前状态下不是有效的新节点状态。

注意:不应使用scontrol命令在Cray系统上更改节点状态。请使用Cray工具,例如xtprocadmin

Topology=<topology_name>:<topology_unit>[,<topology_name>:<topology_unit>,...]
其中<topology_unit>是块名称或叶交换机的名称。可以提供中间交换机名称——用“:”分隔——并在需要时创建(例如Topology=topo-tree:sw_root:s1:s2)。此配置将覆盖topology.conftopology.yaml中的节点拓扑隶属设置。

Weight=<weight>
识别要与指定节点关联的权重。这允许动态更改与节点关联的权重,这将用于后续的节点分配决策。通过scontrol分配的权重仅在使用-R选项重新启动slurmctld守护进程并保留状态文件时持久存在,或在slurmctld收到SIGHUP时。更新slurm.conf以进行任何希望在正常重启slurmctld或执行scontrol reconfig时持久化的更改。

 

节点 - 删除命令的规范

NodeName=<nodes>
识别要删除的节点。可以使用简单的节点范围表达式(例如“lx[10-20]”)指定多个节点名称。节点集也可以单独指定或与节点范围表达式混合,使用逗号作为列表分隔符。如果单独指定关键字“ALL”,则将尝试对本地集群中的所有节点进行更新。此规范是必需的。

 

节点 - 显示命令的规范

AllocMem
当前由节点上的作业分配的总内存(以MB为单位)。

CPULoad
操作系统报告的节点CPU负载。

CPUSpecList
此节点上保留供Slurm计算节点守护进程(slurmd、slurmstepd)独占使用的Slurm抽象CPU ID列表。

FreeMem
操作系统报告的当前节点上总共可用的内存(以MB为单位)。

LastBusyTime
节点最后一次忙碌的时间(即节点上最后一次有作业的时间)。此时间用于PowerSave以确定何时挂起节点(例如,现在 - LastBusy > SuspendTime)。

MemSpecLimit
此节点上Slurm计算节点守护进程(slurmd、slurmstepd)的组合内存限制(以MB为单位)。

RealMemory
节点上的总内存(以MB为单位)。

State
识别分配给节点的状态,使用“+”分隔状态标志。

状态:

ALLOCATED
指示节点的所有CPU均分配给在该节点上运行的作业。

DOWN
节点没有任何正在运行的作业,并且无法接受新工作。

ERROR
节点处于错误状态。请查阅日志以获取有关导致此状态的更多信息。

FUTURE
节点当前尚未完全配置,但预计在未来某个时刻可用。

IDLE
指示节点可用于工作,但当前没有分配任何作业。

MIXED
指示节点处于多种状态。例如,如果节点的仅部分为ALLOCATED而其余部分为IDLE,则状态将为MIXED

UNKNOWN
节点尚未向控制器注册,其状态未知。

标志:

CLOUD
指示节点被配置为云节点,以便按需启动,但当前未运行。

COMPLETING
指示节点上的唯一作业或所有作业正在完成的过程中。

DRAIN
节点不接受任何新作业,任何当前正在运行的作业将完成。

DYNAMIC
Slurm允许您在FUTURE状态下定义多种类型的节点。启动slurmd时,可以指定-F标志以使节点匹配并使用slurm.conf文件中的现有定义。DYNAMIC状态指示节点作为动态未来节点启动。

INVALID_REG
节点未正确注册到控制器。这发生在节点以少于在slurm.conf文件中配置的资源注册时。节点将通过有效注册清除此状态(即需要重新启动slurmd)。

MAINTENANCE
节点当前处于包含maintenance标志的保留状态。

NOT_RESPONDING
节点未响应。

PERFCTRS
指示与此节点相关的网络性能计数器正在使用,使该节点无法用于其他作业。

POWER_DOWN
节点待电源关闭。

POWERED_DOWN
节点当前已关闭电源,无法运行任何作业。

POWERING_DOWN
节点正在关闭电源的过程中。

POWERING_UP
节点正在启动的过程中。

PLANNED
节点被指定用于将来启动的作业。

REBOOT_ISSUED
已向配置为处理此请求的代理发送重启请求。

REBOOT_REQUESTED
已请求重启此节点,但尚未处理。

RESERVED
指示节点处于高级保留状态,通常不可用。

能源信息的含义如下:
CurrentWatts
节点在最后一次节点能源计量样本时的瞬时功耗,以瓦特为单位。

LowestJoules
节点在最后一次开机和最后一次由slurmd注册之间消耗的能量,以焦耳为单位。

ConsumedJoules
节点在最后一次由slurmd守护进程注册和最后一次节点能源计量样本之间消耗的能量,以焦耳为单位。

如果报告的值为“n/s”(不支持),则节点不支持配置的AcctGatherEnergyType插件。如果报告的值为零,则禁用节点的能源计量。

 

分区 - 创建、更新和删除命令的规范

AllocNodes=<name>
用户可以在分区中执行作业的节点的逗号分隔列表。节点名称可以使用上述描述的节点范围表达式语法指定。默认值为“ALL”。

AllowAccounts=<name>
可以在分区中执行作业的账户的逗号分隔列表。默认值为“ALL”。此列表是分层的,意味着子账户会自动包含。注意:如果使用AllowAccounts,则不会强制执行DenyAccounts。另请参阅DenyAccounts。

AllowGroups=<name>
识别可以使用此分区的用户组。可以在逗号分隔的列表中指定多个组。要允许所有组使用该分区,请指定“AllowGroups=ALL”。

AllowQOS=<name>
识别可以使用此分区的QOS。可以在逗号分隔的列表中指定多个QOS。要允许所有QOS使用该分区,请指定“AllowQOS=ALL”。

Alternate=<partition name>
如果此分区的状态为“DRAIN”或“INACTIVE”,则使用的备用分区。值“NONE”将清除先前设置的备用分区。

CpuBind=<node>
指定此分区默认使用的任务绑定模式。支持的选项包括:“none”、“socket”、“ldom”(NUMA)、“core”、“thread”和“off”(移除先前的绑定模式)。

Default={yes|no}
指定此分区是否应由未明确指定要使用的分区的作业使用。可能的输出值为“YES”和“NO”。要更改正在运行的系统的默认分区,请使用scontrol update命令并将Default=yes设置为您希望成为新默认值的分区。

DefaultTime=<time>
未指定值的作业使用的运行时间限制。如果未设置,则将使用MaxTime。格式与MaxTime相同。

DefMemPerCPU=<MB>
为此分区中的作业设置每个CPU分配的默认内存。内存大小以兆字节为单位指定。

DefMemPerNode=<MB>
为此分区中的作业设置每个节点分配的默认内存。内存大小以兆字节为单位指定。

DenyAccounts=<name>
逗号分隔的账户列表,这些账户不得在分区中执行作业。默认情况下,没有账户被拒绝访问。此列表是分层的,意味着子账户会自动包含。注意:如果使用AllowAccounts,则不会强制执行DenyAccounts。另请参阅AllowAccounts。

DenyQOS=<name>
识别应被拒绝访问此分区的QOS。可以在逗号分隔的列表中指定多个QOS。

DisableRootJobs={yes|no}
指定作业是否可以作为root用户执行。可能的值为“YES”和“NO”。

ExclusiveUser={yes|no}
启用时,节点将专门分配给用户。可以同时运行多个作业,但这些作业必须来自单个用户。

GraceTime=<seconds>
指定以秒为单位的抢占宽限时间,以延长已选择抢占的作业。默认值为零,表示此分区或QOS不允许抢占宽限时间。(仅对PreemptMode=CANCELPreemptMode=REQUEUE有意义)

Hidden={yes|no}
指定分区及其作业是否应隐藏。隐藏的分区默认情况下不会被Slurm API或命令报告。可能的值为“YES”和“NO”。

JobDefaults=<specs>
使用逗号分隔的“key=value”对指定作业默认值。支持的键包括
DefCpuPerGPU
每个分配的GPU的默认CPU数量。

DefMemPerGPU
每个分配的GPU的默认内存限制(以兆字节为单位)。

MaxCPUsPerNode=<count>
设置此分区中所有作业每个节点可以分配的最大CPU数量。

LLN={yes|no}
在负载最轻的节点上调度作业(基于空闲CPU的数量)。

MaxMemPerCPU=<MB>
设置此分区中作业每个CPU可以分配的最大内存。内存大小以兆字节为单位指定。

MaxMemPerNode=<MB>
设置此分区中作业每个节点可以分配的最大内存。内存大小以兆字节为单位指定。

MaxNodes=<count>
设置分区中分配给任何单个作业的最大节点数。指定一个数字、"INFINITE" 或 "UNLIMITED"。更改分区的 MaxNodes 对于已经开始执行的作业没有影响。

MaxTime=<time>
作业的最大运行时间。输出格式为 [天-]小时:分钟:秒 或 "UNLIMITED"。输入格式(对于 update 命令)为分钟、分钟:秒、小时:分钟:秒、天-小时、天-小时:分钟 或 天-小时:分钟:秒。时间分辨率为一分钟,秒值向上舍入到下一个分钟。更改分区的 MaxTime 对于已经开始执行的作业没有影响。

MinNodes=<count>
设置分区中分配给任何单个作业的最小节点数。更改分区的 MinNodes 对于已经开始执行的作业没有影响。增加此值可能会阻止待处理作业启动,即使它们是在没有 -N/--nodes 规范的情况下提交的。如果您确实遇到这种情况,使用 scontrol 命令更新待处理作业的 MinNodes 值将允许该作业被调度。

MaxCPUsPerSocket=<count>
设置此分区中每个插槽可以分配的最大 CPU 数。

Nodes=<name>
确定与此分区关联的节点。可以使用简单的节点范围表达式(例如 "lx[10-20]")指定多个节点名称。指定 "ALL" 将关联所有节点。您可以通过在 '=' 符号前添加 '+' 或 '-' 符号来添加或移除节点。如果您想同时移除 lx[2-4] 并添加 lx0,可以使用 nodes=+lx0,-lx[2-4]。请注意,作业在任何时候只能与一个分区关联。指定空数据值以从分区中移除所有节点:"Nodes="。更改分区中的 Nodes 对于已经开始执行的作业没有影响。

OverSubscribe={yes|no|exclusive|force}[:<job_count>]
指定此分区中的计算资源(即单个 CPU)是否可以被多个作业共享。可能的值为 "YES"、"NO"、"EXCLUSIVE" 和 "FORCE"。可选的作业计数指定可以分配给每个资源的作业数量。

OverTimeLimit=<count>
作业可以超出其时间限制的分钟数,超出后将被取消。配置的作业时间限制被视为 soft 限制。将 OverTimeLimit 添加到 soft 限制提供了一个 hard 限制,此时作业将被取消。这对于基于每个作业的软时间限制的回填调度特别有用。特定于分区的 OverTimeLimit 将覆盖任何全局 OverTimeLimit 值。如果未指定,全局 OverTimeLimit 值将优先。不得超过 65533 分钟。输入值 "UNLIMITED" 将清除任何先前配置的特定于分区的 OverTimeLimit 值。

PartitionName=<name>
确定要更新的分区。此规范是必需的。

PowerDownOnIdle
如果设置为 "YES",则从此分区分配的节点将在变为空闲时立即请求关闭电源。关闭电源请求会阻止进一步调度到该节点,直到它被 SuspendProgram 置于节能模式。

另请参见 SuspendTime

PreemptMode=<mode>
如果 PreemptType 配置为 preempt/partition_prio,则重置用于抢占此分区中作业的机制。默认的抢占机制由集群范围的 PreemptMode 配置参数指定。可能的值为 "OFF"、"CANCEL"、"REQUEUE" 和 "SUSPEND"。

PriorityJobFactor=<count>
优先级/多因素插件在计算作业优先级时使用的分区因子。该值不得超过 65533。另请参见 PriorityTier。

PriorityTier=<count>
提交到优先级层级值更高的分区的作业将在优先级层级值较低的分区中待处理作业之前被调度,并且如果可能,它们将抢占优先级层级值较低的分区中的运行作业。请注意,分区的优先级层级优先于作业的优先级。该值不得超过 65533。另请参见 PriorityJobFactor。

QOS=<QOSname|blank to remove>
使用 QOS 名称设置分区 QOS,或要删除分区 QOS,请留空该选项。

ReqResv={yes|no}
指定是否仅满足指定保留的分配请求。这用于限制分区的使用仅在保留内允许。可能的值为 "YES" 和 "NO"。

RootOnly={yes|no}
指定是否仅满足由用户 root 发起的分配请求。这可以用于限制对分区的控制仅限于某些元调度器。可能的值为 "YES" 和 "NO"。

Shared={yes|no|exclusive|force}[:<job_count>]
重命名为 OverSubscribe,请参见上述选项描述。

State={up|down|drain|inactive}
指定作业是否可以在此分区中分配节点或排队。可能的值为 "UP"、"DOWN"、"DRAIN" 和 "INACTIVE"。
UP
指定可以在分区上排队新作业,并且可以为作业分配节点并从分区运行。

DOWN
指定可以在分区上排队新作业,但待处理作业不能分配节点并从分区运行。已经在分区上运行的作业继续运行。作业必须显式取消以强制终止。

DRAIN
指定不允许在分区上排队新作业(作业提交请求将被拒绝并显示错误消息),但已经在分区上排队的作业可以分配节点并运行。另请参见 "Alternate" 分区规范。

INACTIVE
指定不允许在分区上排队新作业,并且已经排队的作业不能分配节点并运行。另请参见 "Alternate" 分区规范。

Topology=<topology name>
在此分区中由作业使用的拓扑名称,定义在 topology.yaml 中。

TRESBillingWeights=<TRES Billing Weights>
TRESBillingWeights 用于定义在计算作业使用时每种 TRES 类型的计费权重。计算的使用量用于计算公平份额和在作业上强制执行 TRES 计费限制。更新影响新作业,而不影响现有作业。有关更多信息,请参见 slurm.conf 手册页。

 

预留 - 创建、更新和删除命令的规范

ReservationName=<name>
确定要创建、更新或删除的预留名称。此参数在更新时是必需的,并且是删除时的唯一参数。对于创建,如果您不想给出预留名称,请使用 "scontrol create reservation ...",将自动创建一个名称。

Accounts=<account list>
允许使用保留节点的帐户列表,例如 "Accounts=physcode1,physcode2"。在任何指定帐户或子帐户中的用户可以使用保留节点。新的预留必须指定用户或组和/或帐户。如果同时指定用户/组和帐户,则作业必须同时匹配才能使用预留。帐户也可以通过在所有帐户名称前加 '-' 来拒绝访问预留。或者在等号前加 '-'。例如,"Accounts=-physcode1,-physcode2" 或 "Accounts-=physcode1,physcode2" 将允许除 physcode1 和 physcode2 之外的任何帐户使用该预留。您可以通过使用更新命令并在 '=' 符号前添加 '+' 或 '-' 符号来添加或移除现有预留中的单个帐户。如果帐户被拒绝访问预留(帐户名称前加 '-'),则所有其他帐户隐式允许使用该预留,并且无法显式指定允许的帐户。Root 和 SlurmUser 被授予对所有预留的访问权限,无论此处设置的帐户如何。

BurstBuffer=<buffer_spec>[,<buffer_spec>,...]
要保留的突发缓冲区资源的规范。"buffer_spec" 由四个元素组成:[plugin:][type:]#[units]。"plugin" 是突发缓冲区插件名称,目前为 "datawarp" 或 "generic"。如果未指定插件,则预留适用于所有配置的突发缓冲区插件。"type" 指定 Cray 通用突发缓冲区资源,例如 "nodes"。如果未指定 "type",则数字是存储空间的度量。"units" 可以是 "N"(节点)、"K|KiB"、"M|MiB"、"G|GiB"、"T|TiB"、"P|PiB"(以 1024 为底的幂)和 "KB"、"MB"、"GB"、"TB"、"PB"(以 1000 为底的幂)。默认单位为字节,用于存储空间的预留。例如 "BurstBuffer=datawarp:2TB"(保留 2TB 的存储加上 3 个来自 Cray 插件的节点)或 "BurstBuffer=100GB"(从所有配置的突发缓冲区插件保留 100 GB 的存储)。使用此预留的作业不受这些突发缓冲区资源的限制,但可以使用这些保留的资源加上任何通常可用的资源。注意:通常 Slurm 将 KB、MB、GB、TB、PB 单位解释为以 1024 为底的幂,但对于突发缓冲区大小规范,Slurm 支持 IEC/SI 格式。这是因为用于管理 DataWarps 的 CRAY API 支持这两种格式。

CoreCnt=<num>
仅在使用 select/cons_tres 时支持此选项。确定要保留的核心数量。如果使用 NodeCnt 或 Nodelist,则这是要保留的核心总数,其中每个节点的核心数为 CoreCnt/NodeCnt。

Licenses=<license>
要保留的许可证(或集群所有节点上可用的其他资源)的规范。许可证名称可以后跟冒号和计数(默认计数为 1)。多个许可证名称应以逗号分隔(例如 "Licenses=foo:4,bar")。新的预留必须指定一个或多个资源以包含:NodeCnt、Nodes 和/或 Licenses。如果预留包括许可证,但没有 NodeCnt 或 Nodes,则还必须指定选项 Flags=LICENSE_ONLY。使用此预留的作业不受这些许可证的限制,但可以使用这些保留的许可证加上任何通常可用的许可证。

MaxStartDelay[=<timespec>]
更改 MaxStartDelay 值,该值指定不请求此预留的合格作业可以延迟请求此预留的作业的最大时间。默认值为无。有效格式为分钟、分钟:秒、小时:分钟:秒、天-小时、天-小时:分钟、天-小时:分钟:秒。时间分辨率为一分钟,秒值向上舍入到下一个分钟。输出格式始终为 [天-]小时:分钟:秒。

NodeCnt=<num>[,<num>,...]
确定要保留的节点数量。该数字可以包含后缀 "k" 或 "K",在这种情况下,指定的数字乘以 1024。新的预留必须指定一个或多个资源以包含:NodeCnt、Nodes 和/或 Licenses。

Nodes=<name>
确定要保留的节点。可以使用简单的节点范围表达式(例如 "Nodes=lx[10-20]")指定多个节点名称。当使用 Nodes 指定更多或更少的节点时,NodeCnt 将更新以尊重新的节点数。但是,当设置空列表("Nodes=")时,节点列表将填充随机节点以满足先前的节点计数,并且 SPEC_NODES 标志将被移除。新的预留必须指定一个或多个资源以包含:NodeCnt、Nodes 和/或 Licenses。指定 "ALL" 将保留所有节点。设置 Flags=PART_NODESPartitionName= 以便与分区关联的节点的更改也反映在与预留关联的节点中。您可以通过在 '=' 符号前添加 '+' 或 '-' 符号来添加或移除现有预留中的节点。如果您想同时移除 lx[2-4] 并添加 lx0,可以使用 nodes=+lx0,-lx[2-4]。

注意:更新预留时,如果同时设置 Nodes 和 Nodecnt,则始终尊重 nodecnt。如果节点数 > nodecnt,预留将获得节点的子集,或者如果节点数 < nodecnt,则将向列表中添加额外的节点。

StartTime=<time_spec>
预留的开始时间。新的预留必须指定开始时间。它接受 HH:MM:SS 形式的时间,表示一天中的特定时间(秒是可选的)。如果该时间已经过去,则假定为第二天。您还可以指定 midnightnoonelevenses(上午 11 点)、fika(下午 3 点)或 teatime(下午 4 点),并且您可以在早上或晚上运行时将时间后缀为 AMPM。您还可以指定作业将运行的日期,格式为 MMDDYYMM/DD/YYMM.DD.YY,或日期和时间为 YYYY-MM-DD[THH:MM[:SS]]。您还可以给出类似 now + count time-units 的时间,其中时间单位可以是 seconds(默认)、minuteshoursdaysweeks,并且您可以告诉 Slurm 今天运行作业,使用关键字 today,并使用关键字 tomorrow 运行作业。您无法更新处于 ACTIVE 状态的预留的 StartTime

EndTime=<time_spec>
预留的结束时间。新的预留必须指定结束时间或持续时间。有效格式与 StartTime 相同。

Duration=<time>
预留的长度。新的预留必须指定结束时间或持续时间。有效格式为分钟、分钟:秒、小时:分钟:秒、天-小时、天-小时:分钟、天-小时:分钟:秒,或 UNLIMITED。时间分辨率为一分钟,秒值向上舍入到下一个分钟。输出格式始终为 [天-]小时:分钟:秒。

PartitionName=<name>
用于保留节点的分区。此操作将尝试分配指定分区中的所有节点,除非您请求的资源少于 CoreCntNodeCntTRES 中可用的资源。如果在提交时未指定分区,则此分区将覆盖作业的默认分区。显式请求不同分区的作业仍然可以使用该预留,只要两个分区之间有足够的重叠节点以分配作业。

Flags=<flags>
与预留相关的标志。您可以通过在 '=' 符号前添加 '+' 或 '-' 符号来添加或移除现有预留中的单个标志。例如:Flags-=DAILY (注意:此快捷方式并不适用于所有标志)。当前支持的标志包括:
ANY_NODES
这是仅用于突发缓冲区和/或许可证的预留,而不是计算节点。如果设置此标志,使用此预留的作业可以使用关联的突发缓冲区和/或许可证加上任何计算节点。如果未设置此标志,使用此预留的作业只能使用与预留关联的节点和许可证。

DAILY
每天在同一时间重复预留。

FLEX
允许请求预留的作业在预留开始之前开始,在预留结束之后结束,并使用预留内和/或外的任何资源,而不考虑在预留中可能设置的任何限制。一个典型的用例是防止未显式请求预留的作业使用那些保留的资源,而不是强制请求预留的作业在预留的时间范围内使用这些资源。另一个用例可能是始终为特定帐户保留特定特征的特定数量的节点,以便该帐户中的用户可以使用这些节点以及可能没有此特征的其他节点。

FORCE_START
允许重复预留在过去的开始时间,因此不要求重复预留提前一天进行。此标志必须与重复预留标志一起使用。

IGNORE_JOBS
在创建预留时忽略当前正在运行的作业。这在为维护保留系统中的所有节点时特别有用。

HOURLY
每小时在同一时间重复预留。

LICENSE_ONLY
参见 ANY_NODES

MAINT
维护模式,获得特殊的会计处理。此预留被允许使用已经在另一个预留中的资源。MAINT 标志的行为类似于 STATIC_ALLOC(见下文),即一旦设置节点将不再更改。

MAGNETIC
此标志允许作业被视为此预留,即使它们没有请求它。

NO_HOLD_JOBS_AFTER
默认情况下,当预留结束时,预留请求将从任何提交到预留的待处理作业中删除,并将其置于保持状态。使用此标志允许作业在预留结束后在预留之外运行。标志移除使用 '-=' 不受支持。

OVERLAP
此预留可以分配已经在另一个预留中的资源。标志移除使用 '-=' 不受支持。

PART_NODES
此标志可用于保留指定分区内的所有节点。必须与此标志一起指定 PartitionName 和 Nodes=ALL。

PURGE_COMP[=<timespec>]
如果预留在任何时候空闲(没有与其关联的作业),则清除该预留。如果未给出 timespec,则默认值为 5 分钟。有效的 timespec 格式为分钟、分钟:秒、小时:分钟:秒、天-小时、天-小时:分钟、天-小时:分钟:秒。时间分辨率为一分钟,秒值向上舍入到下一个分钟。输出格式始终为 [天-]小时:分钟:秒。

REPLACE
处于 DOWN、DRAINED 或分配给作业的节点会自动使用空闲资源进行补充。此选项可用于保持可用于待处理作业的空闲资源的恒定数量(受空闲资源可用性的限制)。应与 NodeCnt 预留选项一起使用;不要指定要包含在预留中的特定节点。标志移除使用 '-=' 不受支持。

注意:在具有 REPLACE 标志的预留中从集群中移除节点不会导致其被替换。

REPLACE_DOWN
处于 DOWN 或 DRAINED 状态的节点会自动使用空闲资源进行补充。这是默认行为。此选项可用于保持可用于待处理作业的恒定大小的资源池(受空闲资源可用性的限制)。应与 NodeCnt 预留选项一起使用;不要指定要包含在预留中的特定节点。标志移除使用 '-=' 不受支持。

注意:在具有 REPLACE_DOWN 标志的预留中从集群中移除节点不会导致其被替换。

SPEC_NODES
预留特定节点(仅输出)。

STATIC_ALLOC
确保在为预留选择节点后,它们不会更改。没有此选项时,当为预留选择节点且有一个节点出现故障时,预留将选择一个新节点来填补该位置。

TIME_FLOAT
预留开始时间相对于当前时间,并向前推进(例如,StartTime=now+10minutes 将始终是未来 10 分钟)。不支持重复(例如 DAILY)浮动预留。标志不能添加到现有预留中,也不能从中移除。

USER_DELETE
允许任何能够在预留中运行的用户删除它。

WEEKDAY
在每个工作日(星期一、星期二、星期三、星期四和星期五)在同一时间重复预留。

WEEKEND
在每个周末(星期六和星期日)在同一时间重复预留。

WEEKLY
每周在同一时间重复预留。

Features=<features>
设置预留所需的节点特性。如果所有特性都是必需的,可以用 "&" 分隔多个值(AND 操作),或者如果任何指定的特性是必需的,则用 "|" 分隔(OR 操作)。也支持括号,以便将特性与具有指定特性的节点计数进行 AND 操作。例如 "Features=[(knl&a2a&flat)*4&haswell*2]" 表示高级预留应包括 4 个具有所有特性 "knl"、"a2a" 和 "flat" 的节点,以及 2 个具有特性 "haswell" 的节点。

可以使用空数据值清除值,"Features="。

Groups=<group list>
允许使用保留节点的组列表,例如 "Group=bio,chem"。新的预留必须指定用户或组和/或帐户。如果同时指定用户/组和帐户,则作业必须同时匹配才能使用预留。与用户不同,组不允许拒绝访问预留。您可以通过使用更新命令并在 '=' 符号前添加 '+' 或 '-' 符号来添加或移除现有预留中的单个组。Root 和 SlurmUser 被授予对所有预留的访问权限,无论此处设置的组如何。注意:组和用户在预留中是互斥的,如果您想在两者之间切换,必须使用 group='' 或 user='' 更新预留,并用适当的设置填充相反的值。

Skip
用于重复预留,跳过到下一个预留迭代。注意:仅在更新时可用。

Users=<user list>
允许使用保留节点的用户列表,例如 "User=jones1,smith2"。新的预留必须指定用户或组和/或帐户。如果同时指定用户/组和帐户,则作业必须同时匹配才能使用预留。用户也可以通过在所有用户名前加 '-' 来拒绝访问预留。或者在等号前加 '-'。例如,"User=-jones1,-smith2" 或 "User-=jones1,smith2" 将允许除 jones1 和 smith2 之外的任何用户使用该预留。您可以通过使用更新命令并在 '=' 符号前添加 '+' 或 '-' 符号来添加或移除现有预留中的单个用户。如果用户被拒绝访问预留(用户名前加 '-'),则所有其他用户隐式允许使用该预留,并且无法显式指定允许的用户。Root 和 SlurmUser 被授予对所有预留的访问权限,无论此处设置的用户如何。注意:组和用户在预留中是互斥的,如果您想在两者之间切换,必须使用 group='' 或 user='' 更新预留,并用适当的设置填充相反的值。

TRES=<tres_spec>
预留所需的 TRES 的逗号分隔列表。当前支持的预留 TRES 类型有:CPU、GRES、Node、License 和 BB。CPU 和 Node 分别遵循与 CoreCnt 和 NodeCnt 参数相同的格式。许可证名称可以后跟等号 '=' 和计数:

License/<name1>=<count1>[,License/<name2>=<count2>,...]

BurstBuffer 可以以与 BurstBuffer 参数类似的方式指定。唯一的区别是冒号符号 ':' 应该用等号 '=' 替换,以遵循 TRES 格式。

一些有效的 TRES 规范示例:

TRES=cpu=5,bb/cray=4,license/iop1=1,license/iop2=3

TRES=node=5k,license/iop1=2

TRES=gres/gpu:a100=2

请注意,CPU、Node、License 和 BB 可以分别覆盖 CoreCnt、NodeCnt、Licenses 和 BurstBuffer 参数。此外,CPU 表示预留中的 CoreCnt,并且如果您的节点上有每个核心的线程,则会进行调整。

请注意,包含节点或核心的预留与一个分区相关联,并且不能跨多个分区跨越资源。唯一的例外是当预留是使用显式请求的节点创建时。

请注意,如果请求 GRES,则这些 GRES 必须在 AccountingStorageTRES 中列出才能有效。


注意:预留将自动尝试在 GRES 上强制绑定。多个 GRES 不能跨多个插槽保留。

TRESPerNode=<tres_spec>
每个节点所需的 TRES 的逗号分隔列表。请参见上述 TRES 以获取支持的类型。

TRESPerNode=gres/gpu:a100=2

上述将为每个节点分配 2 个 gpu:a100,如 Nodecnt 中指定的那样。

 

性能

执行 scontrol 会向 slurmctld 发送远程过程调用。如果来自 scontrol 或其他向 slurmctld 守护进程发送远程过程调用的 Slurm 客户端命令的调用过于频繁,可能会导致 slurmctld 守护进程的性能下降,可能导致服务拒绝。

请勿在 shell 脚本或其他程序的循环中运行 scontrol 或其他发送远程过程调用到 slurmctld 的 Slurm 客户端命令。确保程序将对 scontrol 的调用限制为收集信息所需的最小值。

 

环境变量

某些 scontrol 选项可以通过环境变量设置。这些环境变量及其对应的选项如下所示。(注意:命令行选项将始终覆盖这些设置。)

SCONTROL_ALL
-a, --all

SCONTROL_FEDERATION
--federation

SCONTROL_FUTURE
-F, --future

SCONTROL_LOCAL
--local

SCONTROL_SIBLING
--sibling

SLURM_BITSTR_LEN
指定用于保存作业数组任务 ID 表达式的字符串长度。默认值为 64 字节。值为 0 将打印所需的任何长度的完整表达式。较大的值可能会对应用程序性能产生不利影响。

SLURM_CLUSTERS
--clusters 相同

SLURM_CONF
Slurm 配置文件的位置。

SLURM_CONF_OUT
运行 'write config' 时,要写入的 Slurm 配置文件的位置。

SLURM_DEBUG_FLAGS
指定 scontrol 使用的调试标志。有关完整的标志列表,请参见 slurm.conf(5) 手册页。环境变量优先于 slurm.conf 中的设置。

SLURM_JSON
控制 JSON 序列化:
compact
尽可能紧凑地输出 JSON。

pretty
以美观的格式输出 JSON,以使其更易读。

SLURM_TIME_FORMAT
指定用于报告时间戳的格式。值为 standard,默认值,生成的输出形式为 "year-month-dateThour:minute:second"。值为 relative 仅在当前日期返回 "hour:minute:second"。对于当前年份中的其他日期,它打印 "hour:minute",前面加上 "Tomorr"(明天)、"Ystday"(昨天)、即将到来的星期几的名称(例如 "Mon"、"Tue" 等),否则返回日期(例如 "25 Apr")。对于其他年份,它返回没有时间的日期、月份和年份(例如 "6 Jun 2012")。所有时间戳使用 24 小时格式。

还可以指定有效的 strftime() 格式。例如,值为 "%a %T" 将报告星期几和时间戳(例如 "Mon 12:34:56")。

SLURM_TOPO_LEN
指定打印拓扑时的最大行大小。如果未设置,默认值为无限制。

SLURM_YAML
控制 YAML 序列化:
compact 尽可能紧凑地输出 YAML。

pretty 以美观的格式输出 YAML,以使其更易读。

 

授权

使用 SlurmDBD 时,具有定义的 AdminLevel(操作员或管理员)和帐户协调员的用户被授予查看和修改作业、预留、节点等的权限,如下表所示 - 无论 slurm.conf 文件中是否定义了 PrivateData 限制。


scontrol show job(s): 管理员、操作员、协调员
scontrol update job: 管理员、操作员、协调员
scontrol requeue: 管理员、操作员、协调员
scontrol show step(s): 管理员、操作员、协调员
scontrol update step: 管理员、操作员、协调员

scontrol show node: 管理员、操作员
scontrol update node: 管理员

scontrol create partition: 管理员
scontrol show partition: 管理员、操作员
scontrol update partition: 管理员
scontrol delete partition: 管理员

scontrol create reservation: 管理员、操作员
scontrol show reservation: 管理员、操作员
scontrol update reservation: 管理员、操作员
scontrol delete reservation: 管理员、操作员

scontrol reconfig: 管理员
scontrol shutdown: 管理员
scontrol takeover: 管理员

 

示例

$ scontrol
scontrol: show part debug
PartitionName=debug
   AllowGroups=ALL AllowAccounts=ALL AllowQos=ALL
   AllocNodes=ALL Default=YES QoS=N/A
   DefaultTime=NONE DisableRootJobs=NO ExclusiveUser=NO ExclusiveTopo=NO GraceTime=0 Hidden=NO
   MaxNodes=UNLIMITED MaxTime=UNLIMITED MinNodes=0 LLN=NO MaxCPUsPerNode=UNLIMITED MaxCPUsPerSocket=UNLIMITED
   NodeSets=ALL
   Nodes=snowflake[0-48]
   PriorityJobFactor=100 PriorityTier=100 RootOnly=NO ReqResv=NO OverSubscribe=NO
   OverTimeLimit=NONE PreemptMode=REQUEUE
   State=UP TotalCPUs=588 TotalNodes=49 SelectTypeParameters=NONE
   JobDefaults=(null)
   DefMemPerNode=UNLIMITED MaxMemPerNode=UNLIMITED
   TRES=cpu=588,mem=1204224M,node=49,billing=49
scontrol: update PartitionName=debug MaxTime=60:00 MaxNodes=4
scontrol: show job 71701
JobId=71701 Name=hostname
   UserId=da(1000) GroupId=da(1000)
   Priority=66264 Account=none QOS=normal WCKey=*123
   JobState=COMPLETED Reason=None Dependency=(null)
   TimeLimit=UNLIMITED Requeue=1 Restarts=0 BatchFlag=0 ExitCode=0:0
   SubmitTime=2010-01-05T10:58:40 EligibleTime=2010-01-05T10:58:40
   StartTime=2010-01-05T10:58:40 EndTime=2010-01-05T10:58:40
   SuspendTime=None SecsPreSuspend=0
   Partition=debug AllocNode:Sid=snowflake:4702
   ReqNodeList=(null) ExcNodeList=(null)
   NodeList=snowflake0
   NumNodes=1 NumCPUs=10 CPUs/Task=2 ReqS:C:T=1:1:1
   MinCPUsNode=2 MinMemoryNode=0 MinTmpDiskNode=0
   Features=(null) Reservation=(null)
   OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)
scontrol: update JobId=71701 TimeLimit=30:00 Priority=500
scontrol: show hostnames tux[1-3]
tux1
tux2
tux3
scontrol: create res StartTime=2009-04-01T08:00:00 Duration=5:00:00 Users=dbremer NodeCnt=10
Reservation created: dbremer_1
scontrol: update Reservation=dbremer_1 Flags=Maint NodeCnt=20
scontrol: delete Reservation=dbremer_1
scontrol: quit

 

版权

版权所有 (C) 2002-2007 加州大学理事会。 在劳伦斯利弗莫尔国家实验室制作(参见免责声明)。
版权所有 (C) 2008-2010 劳伦斯利弗莫尔国家安全。
版权所有 (C) 2010-2022 SchedMD LLC。

该文件是Slurm资源管理程序的一部分。 有关详细信息,请参见 <https://slurm.schedmd.com/>。

Slurm是自由软件;您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它;许可证的版本为2,或(根据您的选择)任何更高版本。

Slurm的分发希望它能有用,但不提供任何保证;甚至没有对适销性或特定用途适用性的隐含保证。有关更多详细信息,请参见GNU通用公共许可证。  

文件

/etc/slurm.conf  

另请参见

scancel(1), sinfo(1), squeue(1), slurm_create_partition (3), slurm_delete_partition (3), slurm_load_ctl_conf (3), slurm_load_jobs (3), slurm_load_node (3), slurm_load_partitions (3), slurm_reconfigure (3), slurm_requeue (3), slurm_resume (3), slurm_shutdown (3), slurm_suspend (3), slurm_takeover (3), slurm_update_job (3), slurm_update_node (3), slurm_update_partition (3), slurm.conf(5), slurmctld(8)


 

索引

名称
概要
描述
选项
命令
交互式命令
作业 - 更新命令的规范
作业 - 显示命令的规范
步骤 - 更新命令的规范
节点 - 创建命令的规范
节点 - 更新命令的规范
节点 - 删除命令的规范
节点 - 显示命令的规范
分区 - 创建、更新和删除命令的规范
预留 - 创建、更新和删除命令的规范
性能
环境变量
授权
示例
版权
文件
另请参见

该文档由 man2html 使用手册页创建。
时间:2025年7月2日 13:21:55 GMT