2.10. Gang 调度
Gang 调度可确保只有在所有所需资源都可用时,才会启动相关作业的组或上角。红帽构建的 Kueue 通过暂停作业来实现 gang 调度,直到 OpenShift Container Platform 集群可以保证容量一起启动和执行所有相关作业。这也被称为 all-or-nothing 调度。
如果您正在使用昂贵的、有限的资源,如 GPU,则 Gang 调度非常重要。Gang 调度可以防止作业声明但不使用 GPU,这可以提高 GPU 利用率并可以降低运行成本。Gang 调度还可帮助防止资源分段和死锁等问题。
2.10.1. 配置 gang 调度 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
作为集群管理员,您可以通过修改 Kue
自定义资源(CR)中的 gangScheduling
spec 来配置 gang 调度。
配置了 gang 调度的 Kueue
CR 示例
- 1
- 您可以将
策略值设置为
启用或禁用 gang 调度。可能的值有ByWorkload
,None
, 或空(""
)。ByWorkload
-
当策略
值设置为ByWorkload
时,每个作业都会被处理并被视为一个单元。如果作业没有在指定时间内就绪,则整个作业都会被驱除并在以后重试。 None
-
当策略值设置为
None
时,会禁用 gang 调度。 - 空(
""
) -
当策略
值为空或设置为""
时,红帽构建的 Kueue Operator 会决定 gang 调度的设置。目前,默认禁用 gang 调度。
- 2
如果策略
值设置为ByWorkload
,您必须配置作业准入设置。准入
spec 的可能值为Parallel
,Sequential
, 或空(""
)。parallel
-
当
准入
值设置为Parallel
时,任何作业中的 pod 可以随时接受。这可能导致死锁,作业处于集群容量争用的位置。发生死锁时,从另一个作业成功调度 pod 可能会阻止 pod 调度当前作业。 顺序
-
当
准入
值设置为Sequential
时,只接受当前处理作业中的 pod。在接受并准备好当前作业中的所有 pod 后,红帽构建会处理下一个作业。当集群有足够的容量用于多个作业时,顺序处理可能会减慢准入速度,但会增加作业的所有 pod 已被成功调度的可能性。 - 空(
""
) -
当
准入
值为空或设置为""
时,红帽构建的 Kueue Operator 会决定作业准入设置。目前,准入
值设置为Parallel
。