任务调度系统-业务线资源隔离

本文分析了一个任务调度系统在业务线资源隔离方面的问题,指出在考虑任务执行耗时时,现有算法导致大任务占用过多计算资源。提出了从计算时间视角重新设计调度算法,通过权重比例分配计算时间,确保资源公平使用,同时讨论了机器视角的局限性和计算时间视角的优势及潜在问题。
摘要由CSDN通过智能技术生成

问题背景

最近注意到自己负责的一个任务调度集群碰到了计算资源业务线分配不均的问题(即业务线资源隔离没有做好):

  1. 在任务高峰期,调度系统会将计算资源偏向分配给(执行耗时比较长的)大任务,而(执行耗时比较短的)小任务却分到较少的计算资源。
  2. 当某一个业务线的任务都是大任务时,就会出现大部分计算资源都分配到该业务线,而其他业务线只分配到较少的计算资源。

阅读该系统调度相关代码稍加分析就明白了为什么会出现这种情况,在分析之前先讲一下这个任务调度系统工作机制:

  1. 该系统为master-slave模式,即有一个中心调度节点,多个工作节点。
  2. 工作节点会不停的尝试请求中心调度节点获取任务并执行,循环往复。
  3. 当工作节点请求调度节点获取任务时,调度节点会选择一条业务线,并将该业务线的任务返回给工作节点。

问题分析

现在问题就出现在调度节点选择业务线的算法上,目前的算法是:

  1. 各业务线提前配置好资源上下限,根据任务堆积情况进行自动扩缩,即每条业务线分配的资源是实时计算的。
  2. 选择业务线则是根据业务线实时配置的计算资源 / 所有业务线实时配置的资源之和 得到一个权重比例,然后根据该权重比例进行选择业务线。权重比例大(即该业务线配置的资源在所有业务线资源之和中所占比例大),被选中的概率就大。

这个算法粗略一看没什么问题,但是仔细分析一下这里忽略了一个关键因素:没有考虑任务执行耗时,默认任务执行耗时都一样。
这样会造成大任务占用了大部分的计算资源(即

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值