计算化学公社

 找回密码 Forget password
 注册 Register
Views: 2089|回复 Reply: 0
打印 Print 上一主题 Last thread 下一主题 Next thread

[Linux] slurm CPU管理

[复制链接 Copy URL]

15

帖子

0

威望

259

eV
积分
274

Level 3 能力者

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 shuiningzhu 于 2023-4-16 12:36 编辑

Slurm执行的CPU管理步骤
SLURM使用四个基本步骤来管理作业/步骤的CPU资源:
步骤1:选择节点。
步骤2:从所选节点分配CPU。
步骤3:将任务分配到所选节点。
步骤4:将任务可选地分发和绑定到节点内的CPU。

步骤1:选择节点。
Slurm选择要将CPU资源分配给作业或作业步骤的节点集。因此,节点选择受到控制CPU分配的许多配置和命令行选项的影响(下面的步骤2)。如果配置了SelectType=SELECT/LINEAR,则所选节点上的所有资源都将分配给作业/步骤。如果将SelectType配置为SELECT/CONS_RES或SELECT/CONS_TRES,则可以从所选节点中分配单个CPU、内核和线程作为消耗资源。消耗资源类型由SelectTypeParameters定义。

步骤1由slurmctld和选择插件执行。
  
slurm.conf  parameter
  
Possible  values
Description
<name of  the node>
  
Plus  additional parameters. See man page for details.
定义节点。这包括节点上主板、插槽、内核、线程和处理器(逻辑CPU)的数量和布局。
<name of  the partition>
  
Plus  additional parameters. See man page for details.
定义分区。分区定义的几个参数会影响节点的选择(例如,nodes, OverSubscribe, MaxNodes)
config_overrides
控制如何使用节点定义中的信息。
select/linear | select/cons_res |  select/cons_tres
控制CPU资源是以整个节点为单位分配给作业和作业步骤,还是作为可消耗资源(插槽、核心或线程)
CR_CPU | CR_CPU_Memory | CR_Core |  CR_Core_Memory | CR_Socket | CR_Socket_Memory
  
Plus  additional options. See man page for details.
定义可消耗的资源类型,并通过select插件控制CPU资源分配的其他方面。
srun/salloc/sbatch控制步骤1的命令行选项:
  
Command line option
  
Possible values
Description
<sockets[:cores[:threads]]>
将节点选择限制为具有指定的插槽、核心和线程布局的节点。
<list>
将节点选择限制为具有指定属性的节点
N/A
Restricts node selection to contiguous nodes
<cores>
将节点选择限制为每个插槽至少具有指定核数的节点
<ncpus>
控制分配给每个任务的cpu数量
N/A
防止与其他作业共享已分配的节点。为作业步骤分配子cpu
<node file>
包含要为作业选择的特定节点列表的文件(仅限sallocbatch
compute_bound | memory_bound | [no]multithread
CPU资源分配的附加控制
<n>
控制每个节点分配的最小cpu数量
<minnodes[-maxnodes]>
控制分配给作业的最小/最大节点数
<number>
控制要为作业创建的任务数
<number>
控制每个已分配核心的最大任务数
<number>
控制每个已分配CPU的最大任务数
<number>
控制每个已分配节点的最大任务数
N/A
允许分配的cpu数量少于任务数量
<partition_names>
控制作业使用哪个分区
N/A
允许与其他作业共享分配的节点
<sockets>
将节点选择限制为至少具有指定数量的CPU的节点
<threads>
将节点选择限制为每个核心至少具有指定线程数的节点
<host1,host2,... or  filename>
要分配给作业的特定节点的列表
<host1,host2,... or  filename>
要排除在作业分配之外的特定节点的列表
N/A
绕过正常分配(特权选项仅提供给“SlurmUser”“root”用户)
步骤2:从选定的节点分配cpu
Slurm从步骤1中选择的节点集中为作业/步骤分配CPU资源。因此,与节点选择相关的配置和命令行选项会影响CPU分配。如果配置了SelectType=select/linear,则所选节点上的所有资源都将分配给作业/步骤。如果SelectType配置为select/ con_resselect/ con_tres,则可以从所选节点分配独立的套接字、内核和线程作为可消耗资源。可消耗资源类型由SelectTypeParameters定义。
当使用select/ con_resselect/ con_tresSelectType时,跨节点的默认分配方法是块分配(在使用另一个节点之前,分配一个节点中所有可用的cpu)。节点内的默认分配方法是循环分配(在节点内的套接字之间以循环方式分配可用cpu)。用户可以使用下面描述的适当命令行选项覆盖默认行为。分配方法的选择可能会影响将哪些特定cpu分配给作业/步骤。
步骤2slurmctldselect插件执行。
slurm.conf控制步骤2的选项:
  
slurm.conf  parameter
  
Possible  values
Description
<name of  the node>
  
Plus additional  parameters. See man page for details.
定义一个节点。这包括节点上的单板、插槽、核心、线程和处理器(逻辑cpu)的数量和布局。
<name of  the partition>
  
Plus additional  parameters. See man page for details.
定义分区。分区定义的几个参数会影响CPU资源对作业的分配(例如,Nodes,  OverSubscribe, MaxNodes)
config_overrides
控制如何使用节点定义中的信息。
select/linear | select/cons_res |  select/cons_tres
控制CPU资源是以整个节点为单位分配给作业和作业步骤,还是作为可消耗资源(套接字、核心或线程)
CR_CPU | CR_CPU_Memory | CR_Core |  CR_Core_Memory | CR_Socket | CR_Socket_Memory
  
Plus  additional options. See man page for details.
定义可消耗的资源类型,并通过select插件控制CPU资源分配的其他方面。
srun/salloc/sbatch控制步骤2的命令行选项:
  
Command line option
  
Possible values
Description
<sockets[:cores[:threads]]>
限制 节点选择到具有指定cpu、内核布局的节点 和线程。
<list>
限制 对具有指定属性的节点进行节点选择
N/A
限制 对连续节点的节点选择
<cores>
限制 节点选择到每个插槽至少具有指定内核数的节点
<ncpus>
控制 为每个任务分配的 CPU
block|cyclic
  
|arbitrary|plane=<options>[:block|cyclic]
第二个指定的分布(在 之后) 可用于覆盖节点内的默认分配方法
N/A
防止 与其他作业共享分配的节点
<node file>
文件 包含要为作业选择的特定节点的列表(仅限 Salloc Sbatch
compute_bound | memory_bound | [no]multithread
附加 控制 CPU 资源的分配
<n>
控制 每个节点分配的最小 CPU
<minnodes[-maxnodes]>
控制 分配给作业的最小/最大节点数
<number>
控制 要为作业创建的任务数
<number>
控制 每个分配的核心的最大任务数
<number>
控制 每个分配的套接字的最大任务数
<number>
控制 每个分配节点的最大任务数
N/A
允许 要分配的 CPU 数少于任务数
<partition_names>
控制 作业使用哪个分区
N/A
允许 与其他作业共享分配的节点
<sockets>
限制 节点选择至少具有指定插槽数的节点
<threads>
限制 节点选择到每个内核至少具有指定线程数的节点
<host1,host2,... or  filename>
列表 要分配给作业的特定节点数
<host1,host2,... or  filename>
列表 要从作业分配中排除的特定节点数
N/A
旁路 正常分配(用户可用的特权选项 仅限诽谤用户
步骤3:将任务分配到选定的节点
在步骤3中,Slurm将任务分配到步骤1中为作业/步骤选择的节点。每个任务仅分布到一个节点,但每个节点可以分布多个任务。除非task指定了cpu复用,否则分配到节点上的任务数量受节点上分配的cpu数量和每个任务的cpu数量的约束。如果配置了可消耗的资源,或者允许资源共享,那么来自多个作业/步骤的任务可以同时运行在同一个节点上。
步骤3slurmctld执行。
slurm.conf控制步骤3的选项:
  
slurm.conf  parameter
  
Possible  values
Description
<number>
控制作业步骤可以在单个节点上生成的最大任务数
srun/salloc/sbatch控制步骤3的命令行选项:
  
Command line option
  
Possible values
Description
block|cyclic
  
|arbitrary|plane=<options>[:block|cyclic]
第一个指定的分布(在 之前) 控制将任务分发到每个选定节点的顺序。请注意, 此选项不会影响分发到每个节点的任务数,而只影响 分配。
<number>
控制每个分配的核心的最大任务数
<number>
控制每个分配的套接字的最大任务数
<number>
控制每个分配节点的最大任务数
N/A
控制 哪个节点用于作业步骤
步骤4:可选的任务分配和绑定到节点内的cpu
在可选的步骤4中,Slurm将每个任务分配并绑定到在步骤3中分配任务的节点上分配的cpu的指定子集。分布在同一节点上的不同任务可以绑定到相同的cpu子集或不同的子集。这一步被称为任务关联或任务/CPU绑定。
步骤4slurmd和任务插件执行。
slurm.conf控制步骤3的选项:
  
slurm.conf  parameter
  
Possible  values
Description
task/none | task/affinity |  task/cgroup
控制是否启用此步骤以及要使用的任务插件
cgroup.conf选项控制步骤4(task/cgroup插件)
  
cgroup.conf  parameter
  
Possible  values
Description
yes|no
控制作业是否受限于其分配的 CPU
srun/salloc/sbatch控制步骤4的命令行选项:
  
Command line option
  
Possible values
Description
See man page
控制任务与 CPU 的绑定 (仅限运行)
<number>
控制每个分配的核心的最大任务数
block|cyclic
  
|arbitrary|plane=<options>[:block|cyclic]
第二个指定的分布(在之后)控制任务的顺序 分发到节点内分配的 CPU,以便将任务绑定到 CPU

CPU管理步骤附加说明
对于消耗性资源,了解cpu分配(步骤2)和任务关联/绑定(步骤4)之间的区别非常重要。cpu作为消耗性资源的独占(非共享)分配限制了可以同时使用节点的作业/步骤/任务的数量。但是它并没有限制节点上分配给该节点的每个任务可以使用的cpu集。除非使用某种形式的CPU/任务绑定(例如,任务或spank插件),否则分配到节点上的所有任务都可以使用该节点上的所有CPU,包括未分配给它们的作业/步骤的CPU。这可能会对性能产生意想不到的不利影响,因为它允许一个作业使用专门分配给另一个作业的cpu。因此,在配置可消耗资源的同时不配置任务关联可能是不可取的。注意,在配置select/linear(整个节点分配)时,任务关联也很有用,可以通过将每个任务限制在某个节点上的特定插槽或CPU资源的其他子集来提高性能。

评分 Rate

参与人数
Participants 5
eV +23 收起 理由
Reason
Weldingspock + 5 好物!
hit_liaols + 5 赞!
ggdh + 5 好东西
wangxc + 3 不明觉厉
ball2006 + 5 好物!

查看全部评分 View all ratings

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-24 02:12 , Processed in 0.171908 second(s), 22 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list