优秀的调度策略
更新时间:
平台的任务调度策略能够确保所有任务都能在有限时间内被运行,并且优先紧急任务运行,从而提高了算法工程师的工作效率。
# 调度说明
下图为您介绍平台中的任务调度逻辑,您可参考下方说明理解。

- 配额验证
指用户提交的任务所需的资源是否超过个人配额或空间配额,验证规则您可参考 配额的验证规则。
- 验证通过,则任务被提交,进入配额等待队列。
- 验证不通过,则用户需重新修改任务的资源配置后再次提交。
- 配额队列
配额验证通过的任务会被提交,从而进入配额队列中等待配额。
- 每个空间中都会有一个配额队列,同一空间下的任务争抢配额。
- 队列的优先级主要由 DRF 算法决定,关于 DRF 算法您可参考 Dominant Resource Fairness: Fair Allocation of Multiple Resource Types (opens new window)。
- 长时间等待的任务优先级会上升。
- 用户可手动调整其排队队列顺序,或将任务设置为紧急。
- 资源队列
拥有配额的任务会进入资源队列等待资源:
- 资源队列全局唯一,所有任务再次由 DRF 算法决定全局优先级。
- 长时间等待的任务优先级会上升。
- 用户可手动调整其排队队列顺序,或将任务设置为紧急。
- 节点调度 根据任务申请的实例数、CPU、内存、GPU 选择合适的节点运行。
# 调度原则
# 公平性
空间中每个算法工程师提交的任务都能够被运行。
# 整体性
有限的时间内,空间中所有任务都能被运行。 比如,若存在大任务,则容易因为没有足够的配额和资源而一直处于排队中的状态,但平台的调度算法会视大任务的排队时长而逐渐提高其优先级,保证其在有限时间内能被运行。
# 资源隔离
资源隔离为用户提供了人工干预调度的能力,用户可通过为空间和节点设置资源组,使得某空间中的任务能够定点调度到同资源组的节点上。
举例如图
场景描述:为空间1、空间2、空间3 和 Node1、Node3 设置为资源组 A,其他空间和节点保持默认(即不设置资源组)。
调度结果:中控只会把 空间1、空间2、空间3 中的任务调度到 Node1 和 Node3,资源组保持默认的空间和节点将会认为是处于同一资源组(即默认资源组)。
