资源绑定
概述
Slurm 提供了一套丰富的选项来控制任务与资源的默认绑定。 例如,任务可以绑定到单个线程、核心、插槽、NUMA 或板卡。 有关这些选项如何工作的更多信息,请参见 slurm.conf 和 srun 手册页。 本文档重点介绍如何配置默认绑定配置。
默认绑定可以在每个节点、每个分区或全局范围内进行配置。优先级最高的是使用 srun --cpu-bind 选项指定的绑定。 其次是节点特定的绑定,如果作业分配中的某个节点具有某个 CpuBind 配置参数,并且作业分配中的所有其他节点具有相同或没有 CpuBind 配置参数。 其次是分区特定的 CpuBind 配置 参数(如果有的话)。 优先级最低的是由 TaskPluginParam 配置参数指定的绑定。
执行顺序摘要:
- Srun --cpu-bind 选项
- 节点 CpuBind 配置参数(如果所有节点匹配)
- 分区 CpuBind 配置参数
- TaskPluginParam 配置参数
Srun --cpu-bind 选项
srun --cpu-bind 选项将始终 用于控制任务绑定。如果 --cpu-bind 选项仅包含 "verbose" 而不是识别要绑定的实体,则将使用详细选项与基于 Slurm 配置参数的默认实体一起使用,如下所述。
节点 CpuBind 配置
资源绑定信息的下一个可能来源是节点配置的 CpuBind 值,但仅在每个节点具有相同的 CpuBind 值(或没有配置的 CpuBind 值)时。 节点的 CpuBind 值在 slurm.conf 文件中配置。 可以使用 scontrol 命令查看或修改其值。 要清除节点的 CpuBind 值,请使用以下命令:
scontrol update NodeName=node01 CpuBind=off
如果配置了 node_features 插件,通常用于支持将 Intel KNL 节点启动到不同的 NUMA 和/或 MCDRAM 模式,可以配置该插件根据 NUMA 模式修改节点的 CpuBind 选项。
这通过在 knl.conf 配置文件中指定 NumaCpuBind 参数以及 NUMA 模式和 CpuBind 选项的配对来实现。
一旦节点启动到新的 NUMA 模式,节点的 CpuBind 选项将自动修改。
例如,knl.conf 文件中的一行如下
(NumaCpuBind=a2a=core;snc2=thread
),
将在启动到 "a2a"(全到全)NUMA 模式时将节点的 CpuBind 字段设置为 "core",并在启动到 "snc2" NUMA 模式时设置为 "thread"。
在 NumaCpuBind 配置文件中未指定的任何 NUMA 模式将导致节点的 CpuBind 字段没有变化。
分区 CpuBind 配置
资源绑定信息的下一个可能来源是分区配置的 CpuBind 值。分区的 CpuBind 值在 slurm.conf 文件中配置。 可以使用 scontrol 命令查看或修改其值,类似于如何更改节点的 CpuBind 值:
scontrol update PartitionName=debug CpuBind=cores
TaskPluginParam 配置
资源绑定信息的最后一个可能来源是来自 slurm.conf 文件的 TaskPluginParam 配置参数。
最后修改于 2024 年 7 月 10 日