设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 云计算 > 正文

云原生混部最后一道防线 细节水位线设计

发布时间:2022-06-17 14:45 所属栏目:124 来源:互联网
导读:Pod 的运行时的三个生命周期阶段,在经过配额检查和调度后,终于,不同 Qos 等级的 Pod 运行在同一个节点上了,这个时候,高优和中优的 Pod 使用的是节点上的容器分配总量,而低优 Pod,则是基于高中优实际的资源用量,然后被调度器调度到节点上面去运行。从
  Pod 的运行时的三个生命周期阶段,在经过配额检查和调度后,终于,不同 Qos 等级的 Pod 运行在同一个节点上了,这个时候,高优和中优的 Pod 使用的是节点上的容器分配总量,而低优 Pod,则是基于高中优实际的资源用量,然后被调度器调度到节点上面去运行。从下图可以看到,当一个节点上还有较多的空余资源时,完全可以提供给低优资源使用,而当高/中优 Pod 实际资源用量高过一定的值之后,资源竞争非常激烈时,节点上再跑低优 Pod 只会导致高/中优 Pod 的服务质量受损,所以这个时候,我们将不再允许低优 Pod 在这个节点上运行。为了标识或者说判断节点资源的竞争激烈程度,那么非常顺理成章的一个设计就是,看这个节点上的资源使用率是否过高。如果超过一定使用率,那么我们就需要对低优 Pod 做相应的操作。这个判断的临界阈值,就是单机的水位线。
  
  对于一个资源趋向于饱和的节点来说,我们对于低优 Pod 可以有各种操作的手段,如果仅仅是简单的杀掉低优 Pod 的话,整个混部系统也可以工作,这个动作我们称为“驱逐”。但如果在一定时间后,机器上的资源竞争又降低的话,那么低优 Pod 被杀死并在别的机器上重新启动,这里会大大延长低优 Pod 的单个任务的执行时间,所以在设计单机水位线时,需要尽可能的让低优 Pod 也要在可以允许的时间范围内能够“降级”运行。所以,我们有对低优 Pod 的第 2 种操作,就是降低对它的 CPU 供给量,这个操作我们称为“压制”。同时,如果一个节点上的资源趋于饱和,另外还比较顺理成章的系统行为就是不让新的低优 Pod 被调度进来。
 
  于是我们对于节点上低优 Pod 的行为就有 3 种:压制、驱逐和禁止调度,由此就有三条水位线,同时,对于 CPU 这类的可压缩资源和内存这类不可压缩资源,行为还有区别。
  
  在 t1 时间,总资源利用率达到压制水位线的时候,对低优先级的任务进行压制,保证整体资源利用率在压制水位线之下,此时低优任务不会再被调度进来
  在 t3 时间,总资源利用率开始进一步上升,达到驱逐水位线时,会对低优任务进行删除和驱逐的处理,保证高/中优的资源使用
  一个容易考虑到的设计是,驱逐低优任务前去设定一个延迟时间,这样可以让低优 Pod 有更多的机会等到系统有足够的资源,继续运行,然而这个设计,会造成几个问题:
 
  内存的驱逐必须是实时的,因为节点上内存不足,会导致高/中优任务内存不足而 OOM
  这个延迟时间并不好配置,配的短了没有效果,配了长了反而会引起低优 Pod 长期“饥饿”而造成低优 Pod 运行时间更长
  如果在一个节点上,有多个低优 Pod 都在运行,是否要驱逐所有的低优 Pod?是否可能尽量的少驱逐 Pod?
  因此,我们发明了基于满足度的低优 Pod 的 CPU 资源驱逐方式,定义了以下几个概念:
 
  窗口期:获取 CPU 利用率的时间窗口(例如 5 分钟),在窗口时间的平均 CPU 利用率超过驱逐水位线,则开始驱逐,可以避免抖动
  低优 Pod 资源满足率:= 低优 Pod 实际资源使用量/低优 Pod Request 资源量
  低优 Pod 满足率下限:一个百分比值,低于这个值的认为低优 Pod 的资源供给不足
  这样,低优 Pod 的驱逐条件就变为了:
 
  窗口期内:平均低优 Pod 资源满足率 < 低优 Pod 满足率下限
  窗口期内:低优 Pod 平均 CPU 利用率接近 100%(如 90% 或者 80%)
  当前时间:平均低优 Pod 资源满足率 < 低优 Pod 满足率下限
  最近时间:BE CPU  利用率接近100%(如 90% 或者 80%)
  而驱逐低优 Pod 的排序为:
 
  优先驱逐调度优先级 Priority 低的 Pod(是的,即使是低优 Pod,我们还是可以按照数值来细分不同的调度优先级)
  如果 2 个 Pod 调度优先级一致,则计算驱逐哪一个 Pod 带来的资源释放更多,优先驱逐能释放更多资源的
  内存的驱逐方式和 CPU 基本类似,但没有满足率,到了驱逐水位线按照优先级和内存大小来进行驱逐。
 
  进入了 2022 年,混部在阿里内部已经成为了一个非常成熟的技术,为阿里每年节省数十亿的成本,是阿里数据中心的基本能力。而阿里云也把这些成熟的技术经过两年的时间,沉淀成为混部产品,开始服务于各行各业。云原生混部相关能力已经申请了多项独立的知识产权。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读