优秀的调度策略

更新时间:

平台的任务调度策略能够确保所有任务都能在有限时间内被运行,并且优先紧急任务运行,从而提高了算法工程师的工作效率。

# 调度说明

下图为您介绍平台中的任务调度逻辑,您可参考下方说明理解。

  • 配额验证 指用户提交的任务所需的资源是否超过个人配额或空间配额,验证规则您可参考 配额的验证规则
    • 验证通过,则任务被提交,进入配额等待队列。
    • 验证不通过,则用户需重新修改任务的资源配置后再次提交。
  • 配额队列 配额验证通过的任务会被提交,从而进入配额队列中等待配额。
  • 资源队列 拥有配额的任务会进入资源队列等待资源:
    • 资源队列全局唯一,所有任务再次由 DRF 算法决定全局优先级。
    • 长时间等待的任务优先级会上升。
    • 用户可手动调整其排队队列顺序,或将任务设置为紧急。
  • 节点调度 根据任务申请的实例数、CPU、内存、GPU 选择合适的节点运行。

# 调度原则

# 公平性

空间中每个算法工程师提交的任务都能够被运行。

# 整体性

有限的时间内,空间中所有任务都能被运行。 比如,若存在大任务,则容易因为没有足够的配额和资源而一直处于排队中的状态,但平台的调度算法会视大任务的排队时长而逐渐提高其优先级,保证其在有限时间内能被运行。

# 资源隔离

资源隔离为用户提供了人工干预调度的能力,用户可通过为空间和节点设置资源组,使得某空间中的任务能够定点调度到同资源组的节点上。 举例如图 场景描述:为空间1、空间2、空间3 和 Node1、Node3 设置为资源组 A,其他空间和节点保持默认(即不设置资源组)。 调度结果:中控只会把 空间1、空间2、空间3 中的任务调度到 Node1 和 Node3,资源组保持默认的空间和节点将会认为是处于同一资源组(即默认资源组)。