Skip to content

新增crun -s, --oversubscribe功能 #554

@haofangTu-bot

Description

@haofangTu-bot

1、功能描述
--oversubscribe 参数允许一个作业与其它正在运行的作业共享已经被分配的资源。

(1)超售的资源类型: 可以被超售的资源层级取决于Slurm的系统配置 (slurm.conf)。管理员可以定义超售发生在哪个层面:

  • 节点(Nodes):多个作业共享同一个节点,但各自使用不同的核心。
  • 插槽(Sockets):在同一个物理CPU插槽上运行来自不同作业的任务。
  • 核心(Cores):这是最常见的超售形式。两个或多个任务(来自不同作业)在同一个物理核心上通过时间片轮转的方式交替运行。这也被称为超线程(Hyper-Threading)的软件实现。
  • 超线程(Hyperthreads):如果硬件启用了超线程,一个物理核心会表现为两个逻辑处理器。超售可以发生在这两个逻辑处理器上。

(2) 作业能否成功超售,最终决定权在管理员的配置上,而不是用户的请求。分区的 OverSubscribe 选项会覆盖作业的请求:

  • OverSubscribe=NO 或 EXCLUSIVE:分区禁止超售。即使您提交时加了 --oversubscribe,该标志也会被忽略。
  • OverSubscribe=YES:允许作业请求超售。
  • OverSubscribe=FORCE:强制所有进入该分区的作业都进行超售,即使用户没有指定 --oversubscribe。
  • OverSubscribe=FORCE::强制每个计算资源(如核心)最多被 N 个作业共享。

2、注意事项

(1)管理员配置依然为王:srun 的超售能力受制于分区的 OverSubscribe 配置。如果分区不允许超售,那么在 srun 中使用 --oversubscribe 申请新作业时,该选项会被忽略。
(2)与 --exclusive 互斥:无论在哪种场景下,--oversubscribe 都与 --exclusive 标志互相排斥。不能既要求独占资源,又要求共享资源。
(3)作业步内的资源竞争:在 sbatch 脚本中使用 --oversubscribe 时要特别小心。如果过度超售(例如在4个核心上运行100个计算密集型任务),任务间的上下文切换开销可能会大到让程序几乎无法取得进展。

参考文档:https://slurm.schedmd.com/srun.html
调研文档:https://e26ruh1viz.feishu.cn/wiki/FzGJwsfAQiVaOAkdGGUcDO6EnMd

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions