关于美团:提升资源利用率与保障服务质量鱼与熊掌如何兼得

111次阅读

共计 11084 个字符,预计需要花费 28 分钟才能阅读完成。

美团 Hulk 调度零碎团队在集群服务质量与资源利用率经营的长期落地实际中,基于业务理论场景,自主设计研发了集群负载主动调控零碎(LAR)以及配套的经营体系,在晋升集群整体资源利用率的同时保障了业务服务质量。本文介绍了 LAR 的设计理念、根本框架以及外围设计,并联合在线和混部场景利用开展思考,并展现了局部落地成绩。心愿能为从事相干工作的同学带来一些启发或者帮忙。

随着云计算时代的到来,大规模资源经营面临着如何在保障服务质量的同时晋升资源利用率(降本增效)。但这两个指标的达成在以后的软硬件技术水平上,是互相矛盾的。本文介绍的 LAR(Load Auto-Regulator)零碎,即是摸索这两个矛盾方向间的平衡点,在保证质量的前提下,晋升资源的利用率。

LAR 通过资源分级池化,齐备的 QoS 保障机制,做到精细化的单机资源调度与隔离,在晋升整体资源利用率的同时,可能依据服务的优先级和特色保障服务的品质。LAR 的整体设计能够实用于多个场景,包含在线场景和混部场景。目前 LAR 曾经在美团在线场景中投入生产应用,并获得了较好的成果。

1 背景

1.1 云计算时代数据中心资源规模爆炸

云计算时代的到来,资源规模化经营成为必然的抉择,大规模数据中心成为当今企业级互联网利用和云计算零碎的要害撑持。为保障日益增长的互联网利用和云计算零碎的计算需要,数据中心须要一直扩容,规模和服务器总量出现快速增长趋势。据权威报告指出,2020 年寰球数据中心的服务器总量将达到 1800 万台,并且正以每年 100 万台的速度增长。然而,随同着数据中心的急速扩容,资源利用率却始终处于较低状态。统计数据表明,目前寰球数据中心资源利用率仅为 10%~20%,如此低的资源利用率意味着数据中心大量的资源节约,进而导致目前数据中心的老本效率极低。

1.2 资源利用率晋升影响微小

在国家策略层面,数据中心资源利用率低,造成大量的资源节约,包含物力资源和电能节约,这与可继续倒退的理念是抵触的。2021 年 7 月,工业和信息化部印发《新型数据中心倒退三年行动计划(2021-2023 年)》,提出用 3 年工夫,根本造成布局合理、技术先进、绿色低碳、算力规模与数字经济增长相适应的新型数据中心倒退格局。打算中重点提出建设绿色高效的数据中心指标,将资源利用率晋升作为外围指标。

在公司经营上,晋升资源利用率能够晋升经营效率升高经营老本。谷歌在 2019 年发表的论文“Borg-the Next Generation”披露其 2011 年数据中心外围集群(统计 1.2 万台服务器)的月均匀 CPU 利用率在 30% 左右,而到 2019 年,其数据中心外围集群(统计 9.6 万台服务器)的月均匀 CPU 利用率达到了 50% 左右,8 年工夫内晋升了约 20%,资源应用效力的大幅晋升,帮忙谷歌节省成本累计数十亿美元。国内各大云服务提供商和互联网公司,目前投入大量人力物力去做晋升数据中心资源利用率的工作,包含阿里巴巴、腾讯、百度、华为等公司均陆续提出了比较完善的资源利用率晋升计划,在外部落地实际并获得了肯定的问题。

晋升资源利用率,降本增效,能给数据中心节俭大量的老本。以数百万核 CPU 的规模的数据中心为例,整体资源利用率每晋升 1 个百分点,节省成本(包含洽购老本和经营老本,经营老本次要是机房租金、电费以及运维费用等)每年将达到数千万元。如果思考到集群经营人工成本等,随着资源规模继续扩充,这个收益将持续增长。

继续晋升机器的资源利用率,升高单核老本,晋升集群服务质量,是美团 Hulk 团队的外围指标之一 。针对用户对降本增效的需要,Hulk 调度团队在集群资源利用率晋升和服务质量保障方向率先做出相干摸索,提出了一系列的建设计划,并推动落地。本文重点介绍在 Hulk 整体资源利用率经营体系中的外围零碎集群负载主动平衡管理系统。

2 什么是 LAR?

LAR 全称是集群负载主动平衡管理系统(LAR,Load Auto-Regulator),是美团 Hulk 团队基于 Kubernetes 研发的容器编排零碎。LAR 在 Kubernetes 之上,通过提供分级的 QoS 管理机制和负载管控能力,实现从时空维度对资源的准确调度调配治理。

2.1 指标与挑战

晋升资源利用率从大的层面讲,符合国家降本增效、节能减排的绿色低碳倒退策略;从小的层面讲,通过晋升资源利用率,能够为企业每年节俭数亿的老本,并且升高整体零碎复杂度及运维危险。

晋升资源利用率,竟有这么大的收益?可能超乎绝大多数人的意料。依照很多同学的了解,通过非常简单的操作即可达成这个指标——进步单机的服务部署密度。但如此简略的操作,为何寰球数据中心资源利用率仅为 10%~20% 呢?利用率如此之低,这里最为要害的因素有三个:

  • 部署到同一台物理机的服务在资源应用上存在互相烦扰。
  • 服务在流量上存在高下峰,反映在资源应用上也有高下峰。
  • 要害外围在线服务的服务质量降落无奈承受。

整体来说,从以后硬件架构和操作系统设计上看,尽管在资源分配上,实践上是过程作为独立的调配单位,资源互相隔离,但在理论应用上却是共享的,典型的包含 CPU、网卡、I/ O 总线、Cache 以及内核软件资源等。当然,软硬件如此设计自身就是为了晋升整体资源利用的效率,晋升整体工作的解决能力。而晋升资源利用率,从实质上讲,是晋升资源的复用共享,防止资源闲置节约。然而晋升资源共享复用程度,多少都会影响过程运行的效率,且随着复用程度越高,影响越大。

操作系统提供了一系列的资源隔离保障措施,用意升高服务在资源应用时彼此间的烦扰,肯定水平上在保障资源共享复用的同时晋升了资源隔离的能力,但因为底层硬件架构上的限度,这种晋升是无限的。而对于大多数业务的在线服务,服务质量的稳定,比方延时减少、TPS 降落等是难以承受的,特地是相似领取、订单类的外围服务。这是造成了以后数据中心整体资源利用率低的根本矛盾:一方面是在线业务对资源竞争导致的服务质量降落是难以容忍的,在线服务质量必须保障,另一方面以后大规模的数据中心在整体上资源利用率程度低,经营老本居高不下,亟需晋升资源利用率,而晋升资源利用率、升高经营老本会间接影响到在线业务服务质量。

一方面,“服务质量”关系着业务的服务体验,间接关系到营收,而另一方面,“晋升资源利用率”,又有着微小的老本空间能够升高,可能减少整体的收益。二者对于企业来说,就像“鱼与熊掌不可兼得”的矛盾。

以后业界,很多企业和钻研单位都在投入大量的资源来钻研如何解决这一矛盾,努力实现整体利益的最大化。

LAR(Load Auto-Regulator),聚焦于“资源利用率晋升”和“服务质量保障”这一矛盾的解决,整个零碎设计的基本出发点,即是在集群资源经营上要实现资源利用率和服务质量的双重保障,解决数据中心经营中的“鱼与熊掌不可兼得”难题和挑战。

2.2 零碎架构

晋升资源利用率的实质是晋升资源共享复用程度,而保障服务质量则须要通过资源隔离能力,保障服务的性能稳固。针对上述两个根本点,LAR 在 Kubernetes 上提出两个外围翻新点:

  • 资源池化分级

    • 通过将单机资源划分到不同的资源池,晋升资源在池内的共享复用程度。
    • 不同的资源池之间有不同的优先级,并提供不同的资源隔离程度(资源隔离程度越高,资源共享复用程度越低)。
    • 资源在不同优先级的资源池之间依据优先级和资源池的资源负载程度流动,优先保障高优资源池服务的资源应用,从而保障其服务质量。
  • 动静负载和动态资源映射

    • 资源的调配,实质上是负载空间的调配。假如单机整体 CPU 利用率小于 50% 的状况下,经营在其上的服务的服务质量不会有影响,那么这个机器的动态资源其实对应的就是节点 50% CPU 利用率的负载空间。换个角度看,就是无论如何调度分配资源,只有这个节点的负载不超过 50% 即可。
    • 业务动态的资源申请,依据服务的特色通过调度计算后,服务被放入对应的资源池,而资源池的资源配置则依据池内所有服务的理论负载进行资源配置,并能够实时地依据负载调整资源配置,实现动态资源分配和动静负载的映射治理。

上述两个外围翻新点在帮忙晋升资源共享复用的同时,通过负载治理和操作系统提供的单机资源隔离能力,实现分级的服务质量保障的机制,具备很强的通用性,利用场景也比拟宽泛。

联合上述的外围翻新点,LAR 的整体设计指标包含:

  • 相较于 Kubernetes,提供分级可编辑更粗疏灵便的 QoS 服务质量保障机制,充沛保障外围服务的资源供应及服务质量。
  • 建设负载与资源之间的映射关系,解决 Kubernetes 基于 Request 的动态资源调度难以解决的节点负载问题,升高负载动静调度的整体复杂度。
  • 提供灵便且具备肯定通用性的单机资源调度能力,实现不同服务间资源的错峰复用。
  • 提供更强力的资源隔离能力,保障外围在线业务的服务质量前提下,晋升整体的资源利用率。

在 Hulk 整体资源利用率经营体系中,LAR 基于 Kubernetes 扩大,负责单个集群的资源管理和调度。相较于 Native 的 Kubernetes,LAR 提供分级可编辑更粗疏灵便的 QoS 服务质量保障机制,充沛保障不同服务的资源供应及服务质量。

而 LAR 依靠于底层的 MTOS 提供的资源隔离能力和调度资源 Buffer 池的物理机弹性伸缩能力,并依据集群经营数据中心和服务画像提供的集群及服务等特色,向上提供精细化的动静资源调整、负载治理以及 QoS 服务质量保障能力。对立调度零碎在 LAR 之上,依据 LAR 提供的动静资源及服务质量数据,实现不同利用场景下,包含在线服务和离线服务的跨集群对立调度。

LAR 处于整个资源利用率经营体系中外围要害地位,从性能上来看,整个产品分为五大次要功能模块:

  • 资源分级管理模块
  • 资源池配置管理模块
  • 服务质量保障模块
  • 资源隔离治理模块
  • 策略配置模块

上述五大功能模块由 LAR 零碎中 3 个外围组件来落地实现。LAR 是基于原生的 Kubernetes 进行研发扩大,如下图 3 的整体架构所示,LAR 在 Kubernetes 的根底性能上,扩大了 Scheduler 和 Kubelet 的性能,并新增 Recommender 和 QoSAdaptor 两个组件。对 Kubernetes 原生组件的扩大均采纳插件开发的模式,缩小对原生组件的入侵式批改,从而升高将来运维和降级的老本;对于新增组件,遵循云原生的开发模式,包含代码格调以及运行机制,和 Kubernetes 放弃对立。

QoSAdaptor

QoSAdaptor 次要负责服务质量保障,其外围性能是负责单机资源的分池分级管理,提供分级的单机 QoS 服务质量保障机制。QoSAdaptor 分为五个功能模块:

  • 指标采集模块:通过 Cadvisor、Node-Exporter 等工具采集节点与容器的指标,为资源池治理提供决策依据。
  • 资源池治理模块

    • 资源动静配置管理:依据数据指标对资源池实时进行负载计算,并基于负载策略及优先级动静调整资源在各级资源池的配置。
    • QoS 服务质量保障:实时监控负载指标,根据资源池的优先级管理策略,在资源竞争的状况下,通过资源抢占、服务降级及驱赶等多种手段分优先级保障服务质量。
  • 资源配置管理模块:基于各资源池的配置,通过 Cgroup 等零碎工具,对不同资源池的资源进行隔离与限度。
  • 资源上报模块:周期 Patch 节点的资源应用状况、资源池负载等信息。

QoSAdaptor 以 DaemonSet 的模式部署在 Kubelet 节点上,外围性能是实现资源池和容器的资源配置管理。如上图 4 所示,咱们通过自研的 CRI Plugin,以 Runtime Hook 的模式在容器生命周期治理中引入自定义的 QoS 保障机制。

因为 QoSAdaptor 的资源调整与 QoS 服务质量保障动作,均基于本地指标采集并进行实时的负载和策略计算,不依赖内部监控零碎,缩小了数据传输时延,在保障服务的稳定性同时确保能够秒级响应资源配置调整和服务质量保障动作,保障业务容器的稳定性。

Recommender

Recommender 次要负责 LAR 运行中策略及参数的配置更新,依靠内部服务数据,周期性计算并更新 LAR 相干策略参数,提供对立的集群策略配置入口。

Recommender 以集群为维度,每个集群部署一套服务。如上图 5 所示,Recommender 通过集群经营数据中心和服务画像服务的离线数据,周期迭代计算 LAR 的策略参数。次要功能模块包含:

  • 资源预测 :依据离线监控数据及服务画像数据,对节点物理资源将来的应用状况进行提前预估,领导节点的不同资源池的资源配置,并可能触发 QoS 服务质量保障动作以及集群级别的资源调整,比方节点扩容及服务重调度等。
  • 策略计算 :依据节点的各级资源池负载数据及集群经营数据中心的集群服务质量数据,周期性迭代更新各级资源池的负载管制及资源配置策略,保障服务质量的同时一直晋升资源利用效率。此外,策略计算会定期更新 QoS 服务质量保障机制中的相干策略,比方服务降级、驱赶等判断条件。
  • 参数配置:提供对立的 QoSAdaptor 参数配置,实现配置变更散发的性能。

Scheduler

在 LAR 中,通过动态资源和动静负载之间的映射,进而在调度层屏蔽了动静负载变动,在调度层面升高了依据负载进行动静调度的复杂度。

Kubernetes 默认依据业务申请的资源规格进行资源的调度调配,并以此设计调度计算框架和算法。但因为业务申请的资源规格是个动态值,且业务方对服务资源的应用通常偏向于放大评估,进而导致整体的资源申请和理论资源应用时存在较大的 Gap。咱们进一步思考到资源的应用通常是动静的,也具备规律性的波峰波谷。这两点因素导致在集群的经营上,整体资源分配率靠近满调配的状况下,资源使用率平均水平其实很低。

传统的计划通过节点资源超售来解决资源申请和理论资源应用之间存在的 Gap,并引入依据负载的动静调度策略。调整节点资源超售,尽管能在肯定水平上缓解资源申请和应用的 Gap 问题,但因为 Gap 在不同的服务间并不相同,加上服务资源应用的波峰波谷散布集中的状况(美团在线业务的典型特色),此办法在整体上过于粗放,会导致节点间的负载散布不平衡,局部节点负载很高,影响服务质量;另一部分节点负载极低,实际上造成资源节约。而依据负载间接进行资源调度,因为负载是动态变化的,在调度算法设计及计算框架实现上会非常复杂,且成果个别。

在 LAR 中,咱们通过引入资源配置因子(RCF,Resource Configuration Factor,资源池内的资源配比,动态控制池内容器的理论可用资源,数值区间为 (0, 1]),依据负载调整理论的资源分配,从而将负载的变动映射为可调度残余资源的变动。如下图 6 所示,资源负载即为理论的应用资源,是动态变化的,动态资源是指资源总量和业务申请的资源规格,RCF 由服务所在的节点的资源池决定,依据服务的历史资源应用数据和服务画像进行计算,并周期进行迭代更新。

2.3 要害能力实现

围绕资源利用率晋升和服务质量保障,LAR 零碎实现了以下关键技术:

  • 分级池化资源模型 :实现资源分池动静治理以及资源池优先级治理。
  • 资源动静视图 :实现负载和资源配置之间的动静映射,简化负载治理,保障负载的平衡度,保障服务质量。
  • QoS 保障机制 :依据负载治理的资源配置,在资源竞争的场景下,提供资源抢占以及服务降级驱赶等性能,提供分级服务质量的保障能力。
  • 资源智能经营 :通过池间资源配置、池内负载配置、历史负载预测等经营策略,自动化调控节点资源分配状况,从而达到晋升资源利用率的目标。

2.3.1 分级池化资源模型

分级池化资源模型是 LAR 整个设计的外围,整个模型包含资源分池动静治理和资源池优先级治理两个外围设计。

资源分池动静管理机制

资源分池动静治理引入资源池的概念,通过将节点资源进行分池治理,实现资源池外部资源高度共享,在进步资源复用率的同时,通过池间资源隔离达到池间服务的烦扰隔离。资源池内资源的配置根据服务的负载进行动静调整,并通过资源配置的调整,管制资源池外部的资源负载维系在绝对稳固的范畴内,从而保障服务质量。

资源池优先级管理机制

在资源分池动静管理机制根底上,LAR 引入资源池优先级管理机制,通过分级的服务质量保障机制,保障业务的服务质量。在资源池优先级管理机制中,不同的资源池具备不同的优先级,对应不同级别的服务质量保障级别。不同优先级的资源池,在资源配置管理上有 3 点区别:

  • 资源配置管理策略不同 :资源配置管理策略用于决策资源池的资源配置,并通过资源配置管制资源池的资源供应和负载程度。对于优先级高的资源池,资源配置富余,资源池内的负载维系在平安稳固的程度,并通过资源池的资源隔离能力,实现对资源池外部服务资源应用的优先保障,从而保障更高的服务质量。
  • 资源隔离保障能力不同 :高级别的资源池依靠零碎内核等提供的资源隔离能力,提供更高级别的资源池资源隔离级别,通过实现资源的独占或优先抢占应用,达到高优资源池外部服务在零碎过程级别资源调度时的优先保障。比方,对于高优资源池,能够进行独立的 CPU 互斥绑定、I/ O 隔离等,保障其外部服务不受池外服务的影响。
  • 优先级资源抢占机制 :资源池的资源配置能够动静调整,在高级别资源池配置资源有余,池内负载过高时,QoS 服务质量保障机制会依据资源池优先级,高优资源池能够抢占低优资源池已配置的资源,通过就义低优资源池服务质量程度,优先保障高级别资源池的资源供应,保障高优服务的服务质量。

在 LAR 的分级池化的资源模型中,节点闲暇资源,搁置到优先级最低的资源池内,其它资源池的资源配置由服务的资源申请规格、资源池资源配置管理策略以及资源池资源负载决定。在资源池资源配置管理策略中,蕴含资源池指标负载和资源池 RCF 两局部内容。资源池具体的配置资源由服务申请的资源和资源池实时负载决定。当实时负载升高时,LAR 会调整对应资源池的 RCF,减少资源池的资源配置,升高资源池负载;当资源池负载升高时,LAR 会通过调整 RCF 升高资源池的资源配置,开释冗余资源。

上图 7 以 3 级资源池为例,节点资源被划分为 0、1、2 三类资源池,优先级顺次升高。初始整个机器无服务调度其上,资源全副集中在 Pool2。随着服务的调度,Pool1 先调度了服务 1,这时会根据上述的资源计算形式,LAR 将 Pool2 的对应的资源调整至 Poo1,Pool2 资源缩小。随着 Pool1 中服务增多,配置的资源随之增多,Pool2 相应资源缩小。优先级最高的 Pool0 调入服务后,同样的资源从 Pool2 调整至 Pool0;Pool2 调度入服务时,Pool2 资源不变。

3 个资源池配置不同的资源配置管理策略,0 号池优先级最高,池内指标 CPU 负载管制在 30%~50% 之间;1 号池优先级次之,池内指标 CPU 负载管制在 45%~60% 之间;2 号池优先级最低,池内指标 CPU 负载管制在 50%~80%。已调配的资源由资源池内服务共享,在池间互相隔离。在负载低时,不同资源池依据资源池管理策略,主动调整各资源池的资源配置,保障资源池内负载稳固;呈现资源缓和时,高优资源池能够从低优资源池抢占资源,优先保障高优服务的资源需要。

2.3.2 动静资源视图

LAR 通过引入动静资源视图,将动态资源与动静负载进行映射,并基于资源池的理论负载进行更准确的资源分配决策。

当在线资源池呈现负载稳定时,池内分配资源会随着负载进行变动,引起池间的资源流动。池间资源流动遵循以下规定:

  • 所有资源池的池内分配资源之和为节点可调配的资源总量。
  • 当池内负载升高,开释资源到最低等级的资源池,复用闲时资源。
  • 当池内负载升高,向等级低于本身的资源池,依据从低到高的程序进行资源申请,依据优先级满足服务资源需要。
  • 池内的资源最多不会超过用户申请的量。

如图 8 所示,以 3 级资源池为例:

  • 当 Pool1 负载升高时,从等级更低的 Pool2 抢占资源,优先保障本身的服务资源需要,Pool1 负载升高时,将冗余的资源开释回 Pool2。
  • 当 Pool0 负载升高时,优先从 Pool2 抢占资源,当 Pool2 资源有余时,从 Pool1 抢占资源,保障更高等级的服务资源需要,当 Pool0 负载升高时,冗余的资源被开释回 Pool2,此时若 Pool1 存在负载压力,则会从新从 Pool2 抢占资源。

下图为资源池内负载与池内分配资源的变动状况,能够看到其变化趋势与美团在线服务负载个性根本保持一致。

2.3.3 QoS 服务质量保障机制

晋升资源利用率会导致资源竞争,LAR 通过池间、池内两层 QoS 服务质量保障机制,分级保障服务的隔离性和稳定性。

池间多维度资源隔离

LAR 对资源池进行了多维度的资源隔离与限度。除了根底资源(CPU、Memory),还对磁盘 I /O、CPU 调度、Memory Cache、内存带宽、L3 Cache、OOM Score、网络带宽等更细粒度的资源进行了隔离,进一步晋升不同等级服务间的隔离性,保障服务不会受到其余资源池的影响。

美团操作系统团队针对 LAR 场景进行了隔离加强,对于 MTOS 相干个性的具体介绍,大家可继续关注美团技术团队公众号的相干内容。

池内多层级保障策略

当资源池内负载呈现不合乎预期的状况时(如容器负载异样),因为资源池内资源共享,整个资源池的服务都可能受到影响。LAR 基于资源池内不同的负载等级,制订了多级保障策略。

LAR 提供了资源开释、资源抢占、CPU 降级、Cache 开释、容器驱赶等负载解决策略。QoSAdaptor 周期性(秒级)地获取节点负载的数据,并计算资源池的负载等级。当负载达到肯定的资源等级时,执行对应的负载策略。通过 CPU 降级、驱赶等行为,依据优先级对局部容器进行资源降级,保障池内绝大多数容器的稳定性。

  • 容器驱赶 :Kubernetes 原生的驱赶策略基于整个节点的负载,LAR 中将策略放大到了资源池维度,当池内 Memory 应用靠近 Cgroup 限度,防止整个资源池呈现 OOM,影响所有容器的失常运行,会联合优先级筛选 Memory 应用较多的容器进行驱赶操作。
  • CPU 降级 :池内 CPU 负载超过肯定负载等级,防止高负载导致的容器间相互影响,LAR 会联合优先级筛选 CPU 应用较多的容器,对其 CPU 应用进行独自的限度。降级操作存在定时查看机制,当负载恢复正常,或有资源能够抢占的状况下,会将 CPU 限度进行复原。
  • 强制抢占 :从更低等级的资源池抢占资源,与一般资源抢占的区别为,即便资源曾经被其余池应用,强制抢占会优先满足高等级资源池的需要。

2.3.4 资源智能经营

LAR 基于资源池的历史负载与历史分配情况,对池内顶峰资源应用状况进行预测,为节点资源调整提供领导。

因为资源池负载变动比拟频繁,同时受到池内服务变更、资源总量、高下峰工夫区间等因素的影响,节点基于实时负载进行池内资源的变更较不稳固。Recommender 周期性地依据各节点资源池的历史负载与分配情况进行顶峰资源预测,并下发到节点,提供顶峰负载管制领导,晋升资源池资源保障的稳定性。同时通过 RCF 实现动静负载和动态资源的转换,在调度层屏蔽了动静负载变动,缩小负载频繁变动对调度准确性的影响。

3 利用场景

LAR 的设计指标是在保障服务质量的同时晋升整体资源的利用率,在资源分池分级的设计上,针对通用的在线服务进行服务分级,对接不同资源池,提供不同的服务质量保障,从而晋升资源的利用率。而对于离线服务,自身绝对于在线服务的服务质量要求低,故而 LAR 人造地实用于混部场景。

3.1 在线场景

对于在线服务,通过对服务进行分级,并通过服务画像对服务进行粗疏刻画,将资源敏感型服务和要害外围服务部署到 LAR 优先级最高的资源池中;而对于个别的在线服务,部署在次优先级资源池。高优资源池提供更细粒度与严格的资源隔离伎俩(包含绑核、过程级优先调度、I/ O 隔离、网络隔离、Cache 隔离等),以及在资源竞争时高优的资源供应保障,保障池内服务的品质稳固。

如上图 12 所示,一方面咱们对高优资源池配置更强的资源隔离策略(比方 CPU 绑核、过程优先调度等),另一方面在池内资源配置上,高优资源池的资源配置更高。转换成资源池的资源利用率,高优池资源利用率管制在一个平安较低的水位;而低优池,则绝对在一个更高的程度。而因为高优池次要针对要害外围且对资源敏感的在线服务,其在整个在线服务中绝对比例不超过 20%。从而能整体晋升整机的资源利用率程度。

LAR 在线服务场景中的利用,目前在 Hulk 的线上线下均已落地,如图 13 所示线上 LAR 集群(蓝色曲线示意)的整体均匀 CPU 利用率绝对于 Native 的 Kubernetes 集群(橙色和绿色曲线示意)均匀高 5 到 10 个百分点,但整体均匀服务质量(图 14)和 Native 的 Kubernetes 集群反而更稳固。其中 LAR 集群目前作为在线集群应用,暂无离线服务接入。

3.2 混部场景

混部次要就是通过将延时和稳定性容错性更高的离线服务和在线服务混合部署,实现在线服务和离线服务在资源应用时空上的削峰填谷,如下图 15 所示:

从上述章节介绍的 LAR 资源模型可知,LAR 资源模型的外围特色包含:

  • 资源分池分级管理,池内资源共享,池间资源隔离。
  • 资源池资源配置由资源池优先级和资源池内负载决定。
  • QoS 服务质量保障机制依据负载调整资源池的资源配置,优先保障高优资源池资源供应。

有了上述能力的保障,LAR 人造地适应于混部场景。在混部场景中,假如将资源池分为 0、1、2 三个级别,优先级顺次由高到低。0 和 1 号池别离对应外围要害在线服务和个别的在线服务,而 2 号池对应离线服务应用的资源池。LAR 的资源动静调整保障负载能力,会主动将 0 号池与 1 号池在业务低峰期(负载低)的闲置资源回收,提供给 2 号池的离线服务应用。并且 QoS 服务质量保障机制,能够确保在业务顶峰来长期,秒级抢占 2 号池资源(对于内存等非复用型资源,通过驱赶形式强制回收),从而保障在线服务的资源应用。

目前,LAR 集群已陆续接入离线服务进行混部的验证。

4 演进布局

LAR 零碎从 2021 年开始布局并启动建设,1.0 版本咱们实现了资源分级零碎、负载驱动的动静资源视图建设。2.0 版本,咱们次要实现了服务质量保障体系建设。目前,咱们正在与美团外部多个业务方深度进行单干,摸索服务分级接入及混部场景的利用。将来,LAR 会持续在自动化智能化经营和混部场景利用进行摸索迭代。

5 作者简介

启超、汪喆、谭霖等,均来自美团根底技术部 / 根底软件核心 Hulk 调度零碎。

6 招聘信息

根底技术部 - 根底软件核心 - 调度零碎组,次要负责撑持业务在容器调度的需要,保障集群稳定性,晋升资源使用率,提供基于 Kubernetes 的云原生编排引擎,提供 ETCD 服务,撑持 PaaS 服务云原生落地,服务于公司云化战略目标等。

目前,团队诚招高级工程师、技术专家,团队技术气氛浓重,工作内容具备较高的技术挑战,诚邀对集群调度技术感兴趣自驱力强的搭档退出,共建公司级的业界当先大规模简单场景的调度零碎,在效率、性能和老本优化上独特摸索后退。欢送有趣味的同学投送简历至 edp.itu.zhaopin@meituan.com(邮件主题请注明:Hulk 调度零碎)

浏览美团技术团队更多技术文章合集

前端 | 算法 | 后端 | 数据 | 平安 | 运维 | iOS | Android | 测试

| 在公众号菜单栏对话框回复【2021 年货】、【2020 年货】、【2019 年货】、【2018 年货】、【2017 年货】等关键词,可查看美团技术团队历年技术文章合集。

| 本文系美团技术团队出品,著作权归属美团。欢送出于分享和交换等非商业目标转载或应用本文内容,敬请注明“内容转载自美团技术团队”。本文未经许可,不得进行商业性转载或者应用。任何商用行为,请发送邮件至 tech@meituan.com 申请受权。

正文完
 0