提升資源利用率與保障服務質量,魚與熊掌不可兼得?

陶然陶然發表於2022-08-12

  美團Hulk排程系統團隊在叢集服務質量與資源利用率運營的長期落地實踐中,基於業務實際場景,自主設計研發了叢集負載自動調控系統(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下降等是難以接受的,特別是類似支付、訂單類的核心服務。這是造成了當前資料中心整體資源利用率低的根本矛盾:一方面是線上業務對資源競爭導致的服務質量下降是難以容忍的,線上服務質量必須保障,另一方面當前大規模的資料中心在整體上資源利用率水平低,運營成本居高不下,亟需提升資源利用率,而提升資源利用率、降低運營成本會直接影響到線上業務服務質量。

  一方面,“服務質量”關係著業務的服務體驗,直接關係到營收,而另一方面,“提升資源利用率”,又有著巨大的成本空間可以降低,能夠增加整體的收益。二者對於企業來說,就像“魚與熊掌不可兼得”的矛盾。

圖片

  圖1 美團線上服務雙峰特徵

  當前業界,很多企業和研究單位都在投入大量的資源來研究如何解決這一矛盾,努力實現整體利益的最大化。

  LAR(Load Auto-Regulator),聚焦於“資源利用率提升”和“服務質量保障”這一矛盾的解決,整個系統設計的根本出發點,即是在叢集資源運營上要實現資源利用率和服務質量的雙重保障,解決資料中心運營中的“魚與熊掌不可兼得”難題和挑戰。

  2.2 系統架構

  提升資源利用率的本質是提升資源共享複用水平,而保障服務質量則需要透過資源隔離能力,保障服務的效能穩定。針對上述兩個根本點,LAR在Kubernetes上提出兩個核心創新點:

  資源池化分級

  透過將單機資源劃分到不同的資源池,提升資源在池內的共享複用水平。

  不同的資源池之間有不同的優先順序,並提供不同的資源隔離水平(資源隔離水平越高,資源共享複用水平越低)。

  資源在不同優先順序的資源池之間根據優先順序和資源池的資源負載水平流動,優先保障高優資源池服務的資源使用,從而保障其服務質量。

  動態負載和靜態資源對映

  資源的分配,本質上是負載空間的分配。假設單機整體CPU利用率小於50%的情況下,運營在其上的服務的服務質量不會有影響,那麼這個機器的靜態資源其實對應的就是節點50% CPU利用率的負載空間。換個角度看,就是無論如何排程分配資源,只要這個節點的負載不超過50%即可。

  業務靜態的資源申請,根據服務的特徵經過排程計算後,服務被放入對應的資源池,而資源池的資源配置則根據池內所有服務的實際負載進行資源配置,並可以實時地根據負載調整資源配置,實現靜態資源分配和動態負載的對映管理。

  上述兩個核心創新點在幫助提升資源共享複用的同時,透過負載管理和作業系統提供的單機資源隔離能力,實現分級的服務質量保障的機制,具有很強的通用性,應用場景也比較廣泛。結合上述的核心創新點,LAR的整體設計目標包括:

  相較於Kubernetes,提供分級可編輯更細緻靈活的QoS服務質量保障機制,充分保障核心服務的資源供給及服務質量。

  建立負載與資源之間的對映關係,解決Kubernetes基於Request的靜態資源排程難以解決的節點負載問題,降低負載動態排程的整體複雜度。

  提供靈活且具有一定通用性的單機資源排程能力,實現不同服務間資源的錯峰複用。

  提供更強力的資源隔離能力,保障核心線上業務的服務質量前提下,提升整體的資源利用率。

圖片

  圖2 Hulk資源利用率運營體系

  在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保持統一。

圖片圖3 LAR系統架構

  QoSAdaptor

  QoSAdaptor主要負責服務質量保障,其核心功能是負責單機資源的分池分級管理,提供分級的單機QoS服務質量保障機制。QoSAdaptor分為五個功能模組:

  指標採集模組:透過Cadvisor、Node-Exporter等工具採集節點與容器的指標,為資源池管理提供決策依據。

  資源池管理模組

  資源動態配置管理:根據資料指標對資源池實時進行負載計算,並基於負載策略及優先順序動態調整資源在各級資源池的配置。

  QoS服務質量保障:實時監控負載指標,依據資源池的優先順序管理策略,在資源競爭的情況下,透過資源搶佔、服務降級及驅逐等多種手段分優先順序保障服務質量。

  資源配置管理模組:基於各資源池的配置,透過Cgroup等系統工具,對不同資源池的資源進行隔離與限制。

  資源上報模組:週期Patch節點的資源使用情況、資源池負載等資訊。

圖片

  圖4 QoSAdaptor與KubeletQoSAdaptor

  以DaemonSet的形式部署在Kubelet節點上,核心功能是實現資源池和容器的資源配置管理。如上圖4所示,我們透過自研的CRI Plugin,以Runtime Hook的形式在容器生命週期管理中引入自定義的QoS保障機制。

  由於QoSAdaptor的資源調整與QoS服務質量保障動作,均基於本地指標採集並進行實時的負載和策略計算,不依賴外部監控系統,減少了資料傳輸時延,在保證服務的穩定性同時確保可以秒級響應資源配置調整和服務質量保障動作,保障業務容器的穩定性。

  Recommender

  Recommender主要負責LAR執行中策略及引數的配置更新,依託外部服務資料,週期性計算並更新LAR相關策略引數,提供統一的叢集策略配置入口。

圖片

  圖5 Recommender與其它服務元件呼叫關係

  Recommender以叢集為維度,每個叢集部署一套服務。如上圖5所示,Recommender透過叢集運營資料中心和服務畫像服務的離線資料,週期迭代計算LAR的策略引數。主要功能模組包括:

  資源預測:根據離線監控資料及服務畫像資料,對節點物理資源未來的使用情況進行提前預估,指導節點的不同資源池的資源配置,並可能觸發QoS服務質量保障動作以及叢集級別的資源調整,比如節點擴容及服務重排程等。

  策略計算:根據節點的各級資源池負載資料及叢集運營資料中心的叢集服務質量資料,週期性迭代更新各級資源池的負載控制及資源配置策略,保障服務質量的同時不斷提升資源利用效率。此外,策略計算會定期更新QoS服務質量保障機制中的相關策略,比如服務降級、驅逐等判斷條件。

  引數配置:提供統一的QoSAdaptor引數配置,實現配置變更分發的功能。

  Scheduler

  在LAR中,透過靜態資源和動態負載之間的對映,進而在排程層遮蔽了動態負載變化,在排程層面降低了根據負載進行動態排程的複雜度。

  Kubernetes預設根據業務申請的資源規格進行資源的排程分配,並以此設計排程計算框架和演算法。但由於業務申請的資源規格是個靜態值,且業務方對服務資源的使用通常傾向於放大評估,進而導致整體的資源申請和實際資源使用時存在較大的Gap。我們進一步考慮到資源的使用通常是動態的,也具有規律性的波峰波谷。這兩點因素導致在叢集的運營上,整體資源分配率接近滿分配的情況下,資源使用率平均水平其實很低。

  傳統的方案透過節點資源超售來解決資源申請和實際資源使用之間存在的Gap,並引入根據負載的動態排程策略。調整節點資源超售,雖然能在一定程度上緩解資源申請和使用的Gap問題,但由於Gap在不同的服務間並不相同,加上服務資源使用的波峰波谷分佈集中的情況(美團線上業務的典型特徵),此方法在整體上過於粗放,會導致節點間的負載分佈不均衡,部分節點負載很高,影響服務質量;另一部分節點負載極低,實際上形成資源浪費。而根據負載直接進行資源排程,由於負載是動態變化的,在排程演算法設計及計算框架實現上會非常複雜,且效果一般。

  在LAR中,我們透過引入資源配置因子(RCF,Resource Configuration Factor,資源池內的資源配比,動態控制池內容器的實際可用資源,數值區間為(0, 1]),根據負載調整實際的資源分配,從而將負載的變化對映為可排程剩餘資源的變化。如下圖6所示,資源負載即為實際的使用資源,是動態變化的,靜態資源是指資源總量和業務申請的資源規格,RCF由服務所在的節點的資源池決定,根據服務的歷史資源使用資料和服務畫像進行計算,並週期進行迭代更新。

圖片

  圖6 RCF實現節點負載和可排程資源轉換

  2.3 關鍵能力實現

  圍繞資源利用率提升和服務質量保障,LAR系統實現了以下關鍵技術:

  分級池化資源模型:實現資源分池動態管理以及資源池優先順序管理。

  資源動態檢視:實現負載和資源配置之間的動態對映,簡化負載管理,保證負載的均衡度,保障服務質量。

  QoS保障機制:根據負載管理的資源配置,在資源競爭的場景下,提供資源搶佔以及服務降級驅逐等功能,提供分級服務質量的保障能力。

  資源智慧運營:透過池間資源配置、池內負載配置、歷史負載預測等運營策略,自動化調控節點資源分配情況,從而達到提升資源利用率的目的。

  2.3.1 分級池化資源模型

  分級池化資源模型是LAR整個設計的核心,整個模型包括資源分池動態管理和資源池優先順序管理兩個核心設計。

  資源分池動態管理機制

  資源分池動態管理引入資源池的概念,透過將節點資源進行分池管理,實現資源池內部資源高度共享,在提高資源複用率的同時,透過池間資源隔離達到池間服務的干擾隔離。資源池內資源的配置依據服務的負載進行動態調整,並透過資源配置的調整,控制資源池內部的資源負載維繫在相對穩定的範圍內,從而保證服務質量。

  資源池優先順序管理機制

  在資源分池動態管理機制基礎上,LAR引入資源池優先順序管理機制,透過分級的服務質量保障機制,保障業務的服務質量。在資源池優先順序管理機制中,不同的資源池具有不同的優先順序,對應不同級別的服務質量保障級別。不同優先順序的資源池,在資源配置管理上有3點區別:

  資源配置管理策略不同:資源配置管理策略用於決策資源池的資源配置,並透過資源配置控制資源池的資源供給和負載水平。對於優先順序高的資源池,資源配置充裕,資源池內的負載維繫在安全穩定的水平,並透過資源池的資源隔離能力,實現對資源池內部服務資源使用的優先保障,從而保證更高的服務質量。

  資源隔離保障能力不同:高階別的資源池依託系統核心等提供的資源隔離能力,提供更高階別的資源池資源隔離級別,透過實現資源的獨佔或優先搶佔使用,達到高優資源池內部服務在系統程式級別資源排程時的優先保障。比如,對於高優資源池,可以進行獨立的CPU互斥繫結、I/O隔離等,保障其內部服務不受池外服務的影響。

  優先順序資源搶佔機制:資源池的資源配置可以動態調整,在高階別資源池配置資源不足,池內負載過高時,QoS服務質量保障機制會根據資源池優先順序,高優資源池可以搶佔低優資源池已配置的資源,透過犧牲低優資源池服務質量水平,優先保障高階別資源池的資源供給,保障高優服務的服務質量。

  在LAR的分級池化的資源模型中,節點空閒資源,放置到優先順序最低的資源池內,其它資源池的資源配置由服務的資源申請規格、資源池資源配置管理策略以及資源池資源負載決定。在資源池資源配置管理策略中,包含資源池目標負載和資源池RCF兩部分內容。資源池具體的配置資源由服務申請的資源和資源池實時負載決定。當實時負載升高時,LAR會調整對應資源池的RCF,增加資源池的資源配置,降低資源池負載;當資源池負載降低時,LAR會透過調整RCF降低資源池的資源配置,釋放冗餘資源。

圖片

  圖7 LAR單機資源分配及資源池資源調整

  上圖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 動態資源檢視(以三級池為例)

  如圖8所示,以3級資源池為例:

  當Pool1負載升高時,從等級更低的Pool2搶佔資源,優先保障自身的服務資源需求,Pool1負載降低時,將冗餘的資源釋放回Pool2。

  當Pool0負載升高時,優先從Pool2搶佔資源,當Pool2資源不足時,從Pool1搶佔資源,保證更高等級的服務資源需求,當Pool0負載降低時,冗餘的資源被釋放回Pool2,此時若Pool1存在負載壓力,則會重新從Pool2搶佔資源。

  下圖為資源池內負載與池內分配資源的變化情況,可以看到其變化趨勢與美團線上服務負載特性基本保持一致。

圖片

  圖9 節點池內負載與池內分配資源變化情況

  2.3.3 QoS服務質量保障機制

  提升資源利用率會導致資源競爭,LAR透過池間、池內兩層QoS服務質量保障機制,分級保證服務的隔離性和穩定性。

  池間多維度資源隔離

  LAR對資源池進行了多維度的資源隔離與限制。除了基礎資源(CPU、Memory),還對磁碟I/O、CPU排程、Memory Cache、記憶體頻寬、L3 Cache、OOM Score、網路頻寬等更細粒度的資源進行了隔離,進一步提升不同等級服務間的隔離性,保證服務不會受到其他資源池的影響。

圖片

  圖10 多維度資源隔離

  美團作業系統團隊針對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完成動態負載和靜態資源的轉換,在排程層遮蔽了動態負載變化,減少負載頻繁變化對排程準確性的影響。

圖片

  圖11 基於歷史負載的資源預測

   3 應用場景

  LAR的設計目標是在保障服務質量的同時提升整體資源的利用率,在資源分池分級的設計上,針對通用的線上服務進行服務分級,對接不同資源池,提供不同的服務質量保障,從而提升資源的利用率。而對於離線服務,本身相對於線上服務的服務質量要求低,故而LAR天然地適用於混部場景。

  3.1 線上場景

  對於線上服務,透過對服務進行分級,並透過服務畫像對服務進行細緻刻畫,將資源敏感型服務和關鍵核心服務部署到LAR優先順序最高的資源池中;而對於一般的線上服務,部署在次優先順序資源池。高優資源池提供更細粒度與嚴格的資源隔離手段(包括綁核、程式級優先排程、I/O隔離、網路隔離、Cache隔離等),以及在資源競爭時高優的資源供給保障,保證池內服務的質量穩定。

圖片

  圖12 LAR線上場景資源池

  如上圖12所示,一方面我們對高優資源池配置更強的資源隔離策略(比如CPU綁核、程式優先排程等),另一方面在池內資源配置上,高優資源池的資源配置更高。轉換成資源池的資源利用率,高優池資源利用率控制在一個安全較低的水位;而低優池,則相對在一個更高的水平。

  而由於高優池主要針對關鍵核心且對資源敏感的線上服務,其在整個線上服務中相對比例不超過20%。從而能整體提升整機的資源利用率水平。LAR線上服務場景中的應用,目前在Hulk的線上線下均已落地,如圖13所示線上LAR叢集(藍色曲線表示)的整體平均CPU利用率相對於Native的Kubernetes叢集(橙色和綠色曲線表示)平均高5到10個百分點,但整體平均服務質量(圖14)和Native的Kubernetes叢集反而更穩定。其中LAR叢集目前作為線上叢集使用,暫無離線服務接入。

圖片

  圖13 線上叢集資源利用率

圖片

  圖14 叢集服務質量

  3.2 混部場景

  混部主要就是透過將延時和穩定性容錯性更高的離線服務和線上服務混合部署,實現線上服務和離線服務在資源使用時空上的削峰填谷,如下圖15所示:

圖片

  圖15 混部場景資源複用

  從上述章節介紹的LAR資源模型可知,LAR資源模型的核心特徵包括:

  資源分池分級管理,池內資源共享,池間資源隔離。

  資源池資源配置由資源池優先順序和資源池內負載決定。

  QoS服務質量保障機制根據負載調整資源池的資源配置,優先保障高優資源池資源供給。

  有了上述能力的保障,LAR天然地適應於混部場景。在混部場景中,假設將資源池分為0、1、2三個級別,優先順序依次由高到低。0和1號池分別對應核心關鍵線上服務和一般的線上服務,而2號池對應離線服務使用的資源池。LAR的資源動態調整保障負載能力,會自動將0號池與1號池在業務低峰期(負載低)的閒置資源回收,提供給2號池的離線服務使用。並且QoS服務質量保障機制,可以確保在業務高峰來臨時,秒級搶佔2號池資源(對於記憶體等非複用型資源,透過驅逐方式強制回收),從而保障線上服務的資源使用。

  目前,LAR叢集已陸續接入離線服務進行混部的驗證。

   4 演進規劃

圖片

  圖16 LAR演進規劃LAR系統

  從2021年開始規劃並啟動建設,1.0版本我們完成了資源分級系統、負載驅動的動態資源檢視建設。2.0版本,我們主要完成了服務質量保障體系建設。目前,我們正在與美團內部多個業務方深度進行合作,探索服務分級接入及混部場景的應用。未來,LAR會繼續在自動化智慧化運營和混部場景應用進行探索迭代。

來自 “ 美團技術團隊 ”, 原文作者:啟超 汪喆 譚霖;原文連結:http://server.it168.com/a2022/0812/6757/000006757350.shtml,如有侵權,請聯絡管理員刪除。

相關文章