CPU利用率達到最高是每個IT管理人員畢生追求的目標。據(jù)悉,阿里數(shù)據(jù)中心日均CPU利用率達45%,這相較于其它數(shù)據(jù)中心來說已是十分高的了,究其原因,與阿里規(guī)模化混部技術(shù)有著密不可分的聯(lián)系。
阿里妹導(dǎo)讀:混部技術(shù)在業(yè)界還尚屬于較少研究的領(lǐng)域,該技術(shù)只有在資源及成本的體量達到一定規(guī)模時,才會顯現(xiàn)出其可觀的技術(shù)紅利。今天,阿里系統(tǒng)軟件部技術(shù)專家蔣玲從阿里巴巴混部探索簡介、混部方案及架構(gòu)以及混部核心技術(shù)等幾個方面帶大家全面了解混部技術(shù),希望對你有所啟發(fā)。
一.阿里巴巴混部探索簡介
混部技術(shù)的出發(fā)點,源自于對不斷增長的業(yè)務(wù)和日益攀升的資源成本如何平衡的思考,我們希望用最小的資源成本,支撐更大的業(yè)務(wù)需求。是否能夠復(fù)用已有的存量資源,來滿足新增的業(yè)務(wù),這就是混部技術(shù)發(fā)展的思想源頭。
1.1為什么做混部?
上圖是阿里巴巴從2009年開始做雙十一購物狂歡節(jié)以來的歷年交易額曲線,對業(yè)務(wù)同學(xué)而言,這張曲線增長圖比較漂亮,但是對于技術(shù)人員和運維人員而言,這張圖背后意味著重大的挑戰(zhàn)和資源壓力。
對于做電商平臺型業(yè)務(wù)的業(yè)界同行,大家應(yīng)該知道我們在做促銷活動時,技術(shù)壓力往往來自于開賣的第一秒,是一個脈沖式的洪峰流量。
阿里巴巴在線業(yè)務(wù)的雙十一零點峰值流量(通常用秒級交易創(chuàng)建量來描述)跟這張圖的曲線走勢基本吻合。從2012年往后的年份開始,0點峰值壓力基本是上一年的兩倍??梢钥吹皆诰€側(cè)業(yè)務(wù)發(fā)展如此快,主要跟我們促銷活動密不可分。
除了在線型業(yè)務(wù),阿里巴巴還擁有較大規(guī)模的離線計算型業(yè)務(wù)。隨著AI技術(shù)的興起,計算型業(yè)務(wù)也呈不斷上升趨勢。截止當前,我司大數(shù)據(jù)存儲量達到KPB級、日均任務(wù)量在百萬級。
業(yè)務(wù)不斷增長,在基礎(chǔ)設(shè)施層儲備了大量的資源以滿足在線型和離線業(yè)務(wù)的需求。由于在線型業(yè)務(wù)和離線型業(yè)務(wù)有很多不一致的資源使用特性,最初設(shè)計時由兩個獨立的數(shù)據(jù)中心來支撐,當前,兩個數(shù)據(jù)中心均已達到萬臺服務(wù)器以上的規(guī)模。
然而我們發(fā)現(xiàn),數(shù)據(jù)中心的資源體量雖然龐大,但有些資源的利用率卻并不樂觀,尤其是在線業(yè)務(wù)數(shù)據(jù)中心,日均資源利用率僅在10%左右。
基于以上背景,同時考慮到不同業(yè)務(wù)對資源使用和要求的差異性:一方面,不同業(yè)務(wù)具備不同時段峰值的特性(分時復(fù)用資源);另一方面,對資源被響應(yīng)的容忍度不一(資源按優(yōu)先級競爭和搶占),促使我們探索不同業(yè)務(wù)混合部署的技術(shù)方向。
1.2何為混部(Co-location)?
簡而言之,混部技術(shù)就是:將不同類型的業(yè)務(wù)進行混合部署,用一份資源同時提供兩份不同業(yè)務(wù)的資源當量的技術(shù)。
混部技術(shù)首先,是資源整合,把原本物理分離的業(yè)務(wù)部署于統(tǒng)一的物理資源上;
其次,進行資源共享,同一份資源,既支撐A業(yè)務(wù),又支撐B業(yè)務(wù),在A和B業(yè)務(wù)的視角,同時看到各一份的資源;
最后,是資源合理競爭,既然由原來的一份資源,一生為二,變成2份,必然存在資源的競爭,需要提供合理競爭的手段,使得不同資源需求的業(yè)務(wù)符合各自的服務(wù)要求。
混部最大的價值在于通過資源共享的方式充分復(fù)用資源,實現(xiàn)無中生有。而混部技術(shù)的核心目標在于出現(xiàn)資源競爭時,優(yōu)先保證高等級的業(yè)務(wù)。因此,我們希望通過調(diào)度管控和內(nèi)核隔離的手段進行資源充分共享和競爭隔離。
1.3在線離線混部
在線型業(yè)務(wù),在混部技術(shù)里主要描述的場景是交易型業(yè)務(wù)、支付型業(yè)務(wù)、瀏覽型請求。
在線型業(yè)務(wù)的特性是實時性,對實時性的要求非常高,以及不可降級。如果用戶在選購寶貝的過程中,出現(xiàn)長時間等待(比如秒級別),很有可能該用戶就會放棄購買;如果需要用戶重試,估計就很難留存該用戶了。
在線型業(yè)務(wù),尤其像我們做電商的,業(yè)務(wù)量趨勢非常明顯。伴隨用戶作息時間,白天高、晚上低,白天買買買。
電商型平臺另一個比較大的特性是,日常的流量相對于大促而言非常低,大促當天的秒級創(chuàng)建量可能是平常峰值量的十倍甚至百倍以上,它具有很強的時間場景性。
離線型業(yè)務(wù),比如:計算業(yè)務(wù)、算法運算、統(tǒng)計報告、數(shù)據(jù)處理等業(yè)務(wù),業(yè)務(wù)類型相比于在線而言,可以稱之為時延不敏感,用戶提交的作業(yè)和業(yè)務(wù),本身的處理時長就在秒級、分鐘級以上,甚至有小時級、天級,因此它們可以運行一段時間后才完成。同時它們可以接受重試,技術(shù)上我們應(yīng)該更關(guān)心的是誰幫它重試。用戶重試不可接受,但若有系統(tǒng)幫忙重試,用戶是無感的。
此外,離線業(yè)務(wù)的時間場景性沒有在線那么強,隨時都可以跑,甚至表現(xiàn)出反在線業(yè)務(wù)時間特性,其有一定概率的白天比較低,凌晨比較高。究其原因,也表現(xiàn)出和用戶行為有關(guān),例如:用戶在提交一份統(tǒng)計型,等待凌晨0點后開始運行,第二天早上上班前收取報告。
從不同業(yè)務(wù)的運行時特性分析,我們可以發(fā)現(xiàn),在線型業(yè)務(wù)和離線型業(yè)務(wù),具備業(yè)務(wù)壓力錯峰和資源錯峰的條件;
另一方面,在線業(yè)務(wù)明顯具備更高的優(yōu)先級和資源搶占能力,與此同時,離線業(yè)務(wù)表現(xiàn)出一定的資源不足時的容忍度。這些因素,成為在線、離線業(yè)務(wù)混部技術(shù)的可行性要素。
1.4阿里巴巴在做混部探索的歷程
在展開技術(shù)介紹前,簡述下阿里巴巴混部技術(shù)探索的歷程:
2014年提出混部技術(shù);
2015年做線下測試和原形模擬;
2016年大概上200臺機器到生產(chǎn)環(huán)境,公司內(nèi)用戶作為第一批吃螃蟹的人,運行了一年的時間;在內(nèi)部用戶適用,線上落地有效后,
2017年生產(chǎn)環(huán)境小規(guī)?;觳浚_到數(shù)千臺物理機級別,直接面向外部用戶,并且支撐了2017年的雙十一大促;
2018年,我們希望是規(guī)?;侀_的一年,我們希望混部能在規(guī)模化效應(yīng)下帶來客觀的技術(shù)紅利,打造萬臺體量的混部集群。
1.5阿里巴巴規(guī)模化混部成果
混部規(guī)模達數(shù)千臺,經(jīng)歷雙11交易核心場景驗證;在線集群上引入離線計算任務(wù)(在離線):日常CPU利用率從10%提升到40%;
離線集群上部署在線業(yè)務(wù)(離在線),支撐雙11大促數(shù)W筆/s交易創(chuàng)建能力;
混部環(huán)境下對在線業(yè)務(wù)服務(wù)干擾影響小于5%;
當前初做混部,存在兩種場景:由在線集群提供資源做混部,用在線的資源提供額外的離線計算力,供離線業(yè)務(wù)運行;由離線集群提供資源做混部,用離線的資源創(chuàng)造在線業(yè)務(wù)交易能力(主要應(yīng)對大促等在線流量洪峰)。
在我們內(nèi)部有個簡單的約定,在線和離線,誰提供機器,誰就排在前面,因此有在離線混部和離在線混部的叫法。
2017年雙11,我司官方發(fā)布的秒級創(chuàng)建量是37.5萬筆每秒,離在線混部集群做到萬筆每秒的交易體量,使用離線的資源支撐在線高峰,節(jié)約了一定量的大促資源開銷。
同時,在離線混部集群上線后,將在線原生集群的日均資源利用率從10%提升到了40%,給離線提供了額外的日常計算力。如下圖所示:
這是真實監(jiān)控系統(tǒng)的數(shù)據(jù)。(右圖)這個代表非混部場景,時間點大概是7點到11點左右,在線中心利用率是10%。(左圖)這個代表混部場景的數(shù)據(jù),平均在40%左右,抖動性比較大,因為離線業(yè)務(wù)本身具有比較大的波動性。
節(jié)約了這么多資源,業(yè)務(wù)(尤其在線業(yè)務(wù))的服務(wù)質(zhì)量是不是變得很差呢?
以下是負責(zé)交易處理的在線核心服務(wù)的RT曲線圖,其中綠色曲線代表混部集群中的RT表現(xiàn),黃色曲線為非混部集群的RT表現(xiàn),可以看出,兩條曲線基本重合,混部場景中的平均RT較普通集群差5%以內(nèi),符合服務(wù)質(zhì)量要求:
二.混部方案及架構(gòu)
由于混部技術(shù)跟公司的業(yè)務(wù)體系、運維體系存在一定的關(guān)聯(lián)性,因此文中可能會提及不同的技術(shù)背景,由于篇幅關(guān)系只做了簡單引述,可能未做詳細介紹。
下面將簡單介紹混部方案,包括:整體架構(gòu)、混部場景業(yè)務(wù)部署策略、混部集群資源管理及分配機制、混部場景下的業(yè)務(wù)運行策略等。
2.1混部整體架構(gòu)
混部技術(shù)抽象來說,分為三個層面:
第一,合并資源,整合資源池,既可以給A業(yè)務(wù)用,也可以給B業(yè)務(wù)用。
第二,我們要做到很好的資源調(diào)度與分配。在做混部技術(shù)之前,阿里巴巴集團已有多個資源調(diào)度平臺,其中在線側(cè)資源調(diào)度系統(tǒng)稱之為Sigma,離線側(cè)資源調(diào)度系統(tǒng)稱為Fuxi?;觳考夹g(shù)的挑戰(zhàn)在于做好資源不同業(yè)務(wù)資源分配,統(tǒng)一多個資源調(diào)度系統(tǒng),并進行決策仲裁。
第三,運行時做好資源競爭時的隔離與優(yōu)先搶占。
上圖的架構(gòu)表現(xiàn)為一定的層次性:
最底層,是基礎(chǔ)設(shè)施層,整個集團的數(shù)據(jù)中心是統(tǒng)一的,不管上層怎么用,機器、網(wǎng)絡(luò)、等等的硬件設(shè)施及配套都是同一套;往上一層,是資源層,我們要做混部,必須打通池子,把資源放在一起管控;
再往上一層,是調(diào)度層,分為服務(wù)端和客戶端。在線是Sigma,離線是Fuxi,我們把各業(yè)務(wù)自己的資源調(diào)度平臺稱為一層調(diào)度器。在混部架構(gòu)中,引入“0層”調(diào)度器,主要負責(zé)協(xié)調(diào)兩個一層調(diào)度器的資源管控和資源分配決策,它也有自己的Agent;
最上面一層,是面向業(yè)務(wù)的資源調(diào)度與管控層,有些經(jīng)一層調(diào)度器直接交付資源給業(yè)務(wù),有些還會涉及二層,例如:Hippo等。
而在混部架構(gòu)中還有一個特殊混部管控層,其主要負責(zé)混部模式下業(yè)務(wù)運行的機制的編排與執(zhí)行,以及對物理資源的配置管控、業(yè)務(wù)監(jiān)控和決策判斷。
以上是資源分配的體系架構(gòu),由此可以將機器和資源分配給不同的業(yè)務(wù),然而在分配完后,運行時的業(yè)優(yōu)先級和SLA如何保障?在線業(yè)務(wù)和離線業(yè)務(wù)同時跑在一個物理機上,如果業(yè)務(wù)間發(fā)生資源爭搶怎么辦?我們通過內(nèi)核隔離來做到運行時資源保障,我們開發(fā)了很多內(nèi)核特性,支持不同類型資源隔離、切換和降級。內(nèi)核相關(guān)機制將在第三章中介紹。
2.2混部場景在線業(yè)務(wù)部署策略
本小節(jié)將介紹如何將混部技術(shù)運用于在線業(yè)務(wù)場景,為電商平臺提供交易創(chuàng)建能力。
首先,混部技術(shù)由于其新穎性及包含較多的技術(shù)改造點,為了規(guī)避風(fēng)險,我們希望能夠在有限的、可控的范圍內(nèi)進行小規(guī)模試驗。因此我們基于我司電商(在線)單元化部署架構(gòu)進行了業(yè)務(wù)部署策略,將混部集群構(gòu)建出獨立的交易單元,一方面確?;觳考夹g(shù)在局部范圍內(nèi)收斂不影響全局,另一方面可以到單元的業(yè)務(wù)閉環(huán)和獨立的資源調(diào)配管控。
在電商在線型體系中,我們把買家購買行為相關(guān)的全鏈條服務(wù),閉環(huán)到一個服務(wù)集合中,將這個服務(wù)集合定義為交易單元。交易單元可以做到:買家交易行為相關(guān)的所有請求與指令,都在這個單元內(nèi)閉環(huán)完成,這就是異地多活-單元化部署架構(gòu)。
混部技術(shù)實施中的另外一項約束,來自于硬件資源限制。由于離線在線業(yè)務(wù)對硬件資源的訴求不一,而各自的存量資源都不一定適配另一方的業(yè)務(wù),在實施中我們遇到了存量資源的適配問題,最為強烈的體現(xiàn)在磁盤。
離線業(yè)務(wù)的原生資源中,有大批低成本的HDD盤資源,并且離線在運行中幾乎會將HDD盤用滿。這樣對在線業(yè)務(wù)來說基本就不可用了。
為了屏蔽磁盤IOPS性能問題,我們引入了計算存儲分離技術(shù)。計算存儲分離技術(shù)是我們集團內(nèi)在演進的另一項技術(shù),其提供中心式的計算與存儲服務(wù),計算節(jié)點通過網(wǎng)絡(luò)連接存儲中心,可以屏蔽計算節(jié)點對本地磁盤的依賴。
存儲集群可以提供不同的存儲能力。在線業(yè)務(wù)對存儲性能要求高,吞吐量卻不大,因此我們通過計算存儲分離技術(shù),獲得了有IOPS保障的遠程存儲服務(wù)。
2.3混部集群資源分配
說完整體架構(gòu),我們再從資源的角度來看看混部集群的資源分配,是如何做到無中生有的。
首先是單機角度的資源,主要是CPU、MEM、Disk、Net,下文將陳述如何實現(xiàn)額外資源的獲得。
先來看看CPU,純在線集群的日常資源利用差不多在10%左右,可以說在線業(yè)務(wù)無法在日常狀況下將CPU充分地利用起來,而當大促等促銷場景時,在線將會在瞬間達到一個CPU使用高峰。
離線任務(wù)則更像是吸水的海綿,其業(yè)務(wù)體量巨大,對于CPU計算能力,有多少就能用多少。有了以上業(yè)務(wù)對資源使用的背景,促成了混部技術(shù)中讓CPU一生為二。
CPU資源在內(nèi)核運行機制中,以時間片輪訓(xùn)分配給不同的進程,我們將1個CPU核,同時分配給在線業(yè)務(wù)和離線任務(wù),并確保在線有高的優(yōu)先級,當在線閑時,離線可以使用該CPU,而當在線需要使用時,將離線任務(wù)搶占并掛起。
上文有提到兩個資源調(diào)度器(在線調(diào)度器Sigma和離線調(diào)度器Fuxi),在線業(yè)務(wù)以Pouch容器做為資源單元,Pouch容器會綁定一定的CPU核,供某個在線業(yè)務(wù)使用。Sigma會認為整臺物理機都屬于在線。
同時,候離線Fuxi調(diào)度器認為這臺機器屬于離線,它會把整體機器的CPU資源作為可分配資源分配給離線任務(wù)。通過這種方式,就做到Double CPU資源的效果。
將同一份CPU分配給兩個業(yè)務(wù)運行,一定會存在競爭的風(fēng)險,這就依賴核心內(nèi)核技術(shù)來進行CPU隔離和調(diào)度,這些會在下文中提到。
CPU可以被多進程分享時間片,但MEM和Disk資源就比較棘手,其作為消耗型資源,分給一方使用,就不能被另外的進程使用了,否則就會被新進程給覆蓋。如何進行內(nèi)存層面的復(fù)用就成為另一個研究重點。
如圖(右上)所示,介紹了混部技術(shù)中內(nèi)存超賣使用的機制,圖上側(cè)的括弧表示在線內(nèi)存分配額(藍色)和離線內(nèi)存分配額(紅色),而圖下側(cè)的括弧表示在線內(nèi)存使用額(藍色)和離線內(nèi)存使用額(紅色)。
圖中可見,離線在使用內(nèi)存時,多用了分配給在線的內(nèi)存額度,通過這種機制,實現(xiàn)內(nèi)存超賣使用。
為何在線內(nèi)存允許被超賣使用,由于我們公司在線業(yè)務(wù)以Java語言為主,分配到容器的內(nèi)存一方面用于java堆內(nèi)存開銷,剩余的內(nèi)存作為cache使用。
這就造成在線容器內(nèi)存在一定量的空閑內(nèi)存,我們通過精細地內(nèi)存使用量監(jiān)聽,并結(jié)合一定的防護機制,把在線容器分配的空閑內(nèi)存分配給離線使用。但由于這部分內(nèi)存屬于在線,對離線而言無法強保障,因此離線會把相對低等級可降級的業(yè)務(wù)調(diào)度到這些資源上。
Disk方面,磁盤容量對于雙方業(yè)務(wù)還是比較充分的,故未做過多約束。而磁盤IO方面,做了一系列帶寬限速,以約束離線任務(wù)使用的最大IO小于一定數(shù)量,避免完全擠占在線及系統(tǒng)的IO。
另外,單機Net層面,由于當前容量較為富余,當前不是瓶頸點,不做過多介紹。
2.4大促資源退讓機制:站點快上快下
以上的單機層面的資源如何做到共享與競爭隔離,再讓我們一起看看從整個資源集群層面,如果通過整體的運維管控,實現(xiàn)資源的遷移和最大化利用?;觳考夹g(shù)中,我們追求資源利用的極致,讓不該用的業(yè)務(wù)場景不要浪費每一份資源。
于是我們提出了站點快上快下的概念,其面向在線業(yè)務(wù)而言,如前文所述,每個混部集群即為一個在線交易單元,其獨立支撐一小部分用戶的交易行為,因此我們也將其成為“站點”,我們把在線站點的整體容量做伸縮變換,就是快上快下的過程。如下圖所示:
在線型業(yè)務(wù)在日常運行和特殊促銷活動時的業(yè)務(wù)壓力表現(xiàn)出巨大的偏差,雙11期間有可能是日常流量的百倍以上,這個特性奠定了快上快下方案的可行性基礎(chǔ)。
如上圖所示,把兩個大的方塊圖,比作是在線站點整個容量,每一個小方塊代表某個在線服務(wù)的容器數(shù)量,每一行代表一個在線服務(wù)的容量儲備(容器總數(shù)),我們通過對整個站點的容量規(guī)劃,實現(xiàn)日常狀態(tài)和大促狀態(tài)的容量模型切換,從而使得精細化地使用資源。
我們電商業(yè)務(wù)通常以一個業(yè)務(wù)目標,比如秒級交易創(chuàng)建筆數(shù),作為站點容量評估的基準,通常而言,在日常態(tài),單個站點保留K筆/s的容量已經(jīng)足夠,而等到大促臨近,我們會將站點切換至大促態(tài),通常是W筆/s容量級別。
通過以上模式,從整個站點的維度,把不必要的在線容量進行整體縮容,以達到充分釋放資源,如此就可以讓離線業(yè)務(wù)拿到更多的物理資源,這就是快上快下機制。
站點快上過程(從低容量到高容量),執(zhí)行效率在一小時內(nèi)。站點快下過程(從高容量到低容量),執(zhí)行效率在半小時內(nèi)。
在日常狀態(tài)下,混部站點以最小容量模型支持日常在線流量,而當大型促銷或全鏈路壓測前夕,將把混部站點迅速拉起到比較高的容量狀態(tài),并持續(xù)運行幾個小時后,進行站點快下。
通過這個機制,我們確保絕大部分地時間,在線僅占用極少的資源,而90%以上的資源均被離線充分使用。下圖展示了快上快下各階段的資源分配細節(jié):
上圖資源分布的情況,左、中、右三個矩形框分別代表:日常態(tài)、壓測態(tài)、大促態(tài)混部集群的資源分配狀況。
其中,紅色代表離線,綠色代表在線。而每個矩形框中,又分為上、中、下三層,上層表示業(yè)務(wù)運行及量級;中層代表資源(宿主機)分布,其中藍色小方塊代表混部資源;下層代表集群層面資源的分配比例及運行模式。
在日常態(tài)(左矩形框),離線占用絕大部分資源,一部分通過分配獲得,小部分通過運行時爭搶獲得(在線不使用即會被離線使用)。
而等到壓測態(tài)(中)和大促態(tài)(右),離線會進行資源退讓,基本達到離線、在線各50%的分配比例,在線高壓力時,離線不進行超賣爭搶,而在準備期內(nèi)(大促態(tài)但非高壓力時間),離線仍然可以爭搶在線空閑資源。
在雙11大促當天,我們?yōu)榱烁_定地保障在線業(yè)務(wù)穩(wěn)定,離線會做一定程度的業(yè)務(wù)降級。
2.5日常資源退讓機制:分時復(fù)用
上文呈述的快上快下機制是在線站點容量在大促態(tài)和日常態(tài)的切換過程,除此之外,在線業(yè)務(wù)在白天和凌晨也表現(xiàn)出一種規(guī)律性極強地流量高峰和低谷現(xiàn)象,為了更進一步提升資源利用率,我們還提出了日常情況下的資源退讓機制:分時復(fù)用。
上圖是在線業(yè)務(wù)日常表現(xiàn)出的一天的流量周期曲線,凌晨會比較低,白天比較高,我們針對每一個在線服務(wù),做到以天為周期的容量精細化伸縮,以最小化在線業(yè)務(wù)的資源使用,從而出讓資源給離線使用。
三.混部核心技術(shù)
混部核心技術(shù)主要分為兩方面:一是內(nèi)核隔離技術(shù),二是資源調(diào)度技術(shù),由于涉及內(nèi)容均涉及專業(yè)領(lǐng)域,考慮到當前文章篇幅,下文僅羅列了一系列技術(shù)點,并不做細節(jié)展開。
3.1內(nèi)核隔離技術(shù)簡介
我們在內(nèi)核各資源類型層面均做了較強地隔離特性開發(fā),包括:CPU維度、IO維度、內(nèi)存維度、網(wǎng)絡(luò)維度。整體上基于CGroup進行在線、離線業(yè)務(wù)組別劃分,以區(qū)分兩類業(yè)務(wù)的內(nèi)核優(yōu)先級。
在CPU維度,我們實現(xiàn)了超線程對、調(diào)度器、三級緩存等的隔離特性。在內(nèi)存維度,實現(xiàn)了內(nèi)存帶寬隔離和OOM kill優(yōu)先級。磁盤維度實現(xiàn)了IO帶寬限速。網(wǎng)絡(luò)維度,單機層面流量控制,還做了網(wǎng)絡(luò)全鏈條層的分等級QoS保障。
混部內(nèi)核隔離技術(shù)的詳細介紹大家可以自行搜索獲取,下文僅展開有關(guān)內(nèi)存超賣機制的介紹。
Memory動態(tài)超賣機制:
如上圖中實線括弧所示,紅色、藍色分別代表離線、在線CGroup的內(nèi)存分配額,其和值代表整機可分配的內(nèi)存(已去除系統(tǒng)開銷內(nèi)存),其下還有一個紫色實線括弧,代表離線的超賣內(nèi)存配額,其大小值因運行時變化,是通過監(jiān)聽運行時發(fā)現(xiàn)在線未使用的空閑內(nèi)存大小來決定的。
如圖中上側(cè)虛線括弧,代表離線、在線實際使用內(nèi)存,其中,在線業(yè)務(wù)通常而言不會將內(nèi)存用滿,其剩余的內(nèi)存,離線作為其超賣配額進行使用。為了防止在線突發(fā)性內(nèi)存需求,在機制中預(yù)留了一定的內(nèi)存作為buffer。通過以上機制,實現(xiàn)了離線超賣使用內(nèi)存。
3.2資源調(diào)度技術(shù)
混部技術(shù)的第二大核心技術(shù)為資源調(diào)度技術(shù),混部場景中的資源調(diào)度,又可分為原生的一層資源調(diào)度(在線資源調(diào)度技術(shù)sigm和離線資源調(diào)度技術(shù)Fuxi)和混部0層調(diào)度。
★3.2.1在線資源調(diào)度:sigma
在線資源調(diào)度器主要基于應(yīng)用資源畫像,進行合理地資源調(diào)度與分配,包括一系列裝箱問題、親和/互斥規(guī)則、全局最優(yōu)解等,并從全局維度進行應(yīng)用容量自動伸縮、分時復(fù)用以及戰(zhàn)斗維度快上快下。
上圖是在線一級調(diào)度Sigma的架構(gòu)圖,其兼容Kubernetes API,基于阿里Pouch容器技術(shù)進行調(diào)度,并且進過多年阿里大規(guī)模流量及雙11大促驗證。
★3.2.2離線資源調(diào)度:Fuxi
離線集群調(diào)度器主要實現(xiàn)分等級任務(wù)調(diào)度、動態(tài)內(nèi)存超賣、無損/有損離線降級方案等。
這是離線資源調(diào)度Fuxi的運行機制圖,其基于Job進行調(diào)度,其面向海量數(shù)據(jù)處理和大規(guī)模計算類型的復(fù)雜應(yīng)用,提供了一個數(shù)據(jù)驅(qū)動的多級流水線并行計算框架。
其在表述能力上兼容MapReduce,Map-Reduce-Merge,Cascading,FlumeJava等多種編程模式,高可擴展性,支持十萬以上級的并行任務(wù)調(diào)度,并能根據(jù)數(shù)據(jù)分布優(yōu)化網(wǎng)絡(luò)開銷。
★3.2.3統(tǒng)一資源調(diào)度:0層
混部場景中,離線和在線業(yè)務(wù)通過各自的一層資源調(diào)度器進行資源調(diào)度和分配,但在一層調(diào)度器下面,還有一個統(tǒng)一資源調(diào)度層—0層,其職能為雙方資源的協(xié)調(diào)與仲裁,通過監(jiān)聽與決策,合理分配資源。以下為混部資源調(diào)度的整體架構(gòu)圖。
四.未來展望
混部技術(shù)的未來發(fā)展,將往三個方向演進,分別是:規(guī)模化、多元化和精細化方向。
規(guī)?;涸?018年,將會做到萬臺級別的混部,這將是一次量級的飛躍,我們希望把混部作為集團內(nèi)部資源交付的基礎(chǔ)能力,更大規(guī)模地節(jié)約資源成本。
多元化:未來希望能支持更多的業(yè)務(wù)類型、更多的硬件資源類型,以及更復(fù)雜的環(huán)境,甚至希望可以打通云上資源,阿里云和公司內(nèi)部資源混部互通。
精細化:未來希望能將業(yè)務(wù)的資源畫像刻畫得更加細致,調(diào)度層面時效更實時、調(diào)度精度更細致,內(nèi)核隔離更加精細,監(jiān)控及運維管控更加實時精準。
(原標題:數(shù)據(jù)中心日均CPU利用率45%?!阿里規(guī)?;觳考夹g(shù)揭秘)