Volcano:在離線作業混部管理平台,實現智慧資源管理和作業調度

摘要:本文結合華為CCE團隊在混合部署方面的研究和實戰,介紹了混合部署的背景、概念、混部技術的設計方案和實際落地情況,以及對未來的計劃和展望。

現代互聯網數據中心的規模隨著應用服務需求的快速增長而不斷擴大,但伺服器資源利用率卻一直很低,導致企業基礎設施成本不斷上漲。隨著雲原生技術的發展,混合部署成為了降低成本的一大手段。本文結合華為CCE團隊在混合部署方面的研究和實戰,介紹了混合部署的背景、概念、混部技術的設計方案和實際落地情況,以及對未來的計劃和展望。

雲原生與資源利用率現狀

雲原生概念在2013年由Matt Stine提出並沿用至今,經過不斷的總結完善,已經涵蓋了DevOps、持續交付、微服務、容器化等主題,成為一套完整的技術方法體系。通過構建易觀測、低耦合、容錯性高的系統來達成提高效率、加速創新、降低成本的目標。

隨著雲原生基礎技術日漸成熟,在提升效率和加速創新的目標上已經取得了顯著的成效。得益於效率提升的優勢,如今千行百業都在擁抱雲原生,Gartner報告指出,到2022年將有75%的全球化企業在生產中使用雲原生的容器化應用。同時伴隨著開源項目的不斷更新和逐步成熟,其加速創新的優點也促使各企業在AI、大數據、邊緣、高性能計算等新興業務場景不斷採用雲原生技術來構建創新解決方案。然而在降低成本的目標上,當前仍面臨著基礎設施成本高昂和資源利用率低下的問題。全球雲基礎設施服務支出保持千億美元的年增長,總體規模已經突破萬億美元大關,中國僅IDC業務在2019年就突破了千億大關,並保持30%的年增長率。根據Dell’Oro市場研究公司於2021年7月發布的預測,未來五年伺服器支出將以11%的年複合增長率增長,到2025年將佔數據中心資本支出的近一半。《中國「新基建」發展研究報告》稱,到2025年,數據中心將佔全球能耗的最大份額,高達33%。另一方面,全球伺服器平均利用率不到20%,中國大多數數據中心的PUE普遍大於2.2。由此可見,雲基礎設施在降低成本上還有很大的提升空間。

圖 1 中國數據中心市場規模

2021年7月工業和資訊化部印發的《新型數據中心發展三年行動計劃(2021-2023年)》(簡稱「計劃」)提出,到2021年底,全國數據中心平均利用率力爭提升到55%以上,總算力超過120 EFLOPS,新建大型及以上數據中心PUE降低到1.35以下。到2023年底,平均利用率力爭提升到60%以上,總算力超過200 EFLOPS,新建大型及以上數據中心PUE降低到1.3以下。

為了幫助達成「計劃」的目標,這裡簡要分析資源利用率低下的原因,並基於HCE(Huawei Cloud EulerOS)制定一套行之有效的解決方案。

在離線混合部署的提出

造成伺服器資源利用率低的主要原因可以歸為兩大類:

1、不同類型業務分開部署在不同的資源池

為了避免業務之間的競爭影響到服務品質,不同類型的業務通常分開部署在不同的資源池。但業務的運行往往存在高峰期和低谷期,例如網購、社交一類的業務在白天的使用量明顯高於夜間,但版本構建、測試類的業務則主要集中在晚上運行。分開部署導致伺服器普遍存在空閑周期,很多業務空閑期遠長於高峰期,導致總體資源利用率很低。

2、服務預留資源與實際使用資源之間存在較大冗餘

企業通常採用過量供應資源的方式來保障服務品質,導致預留的資源量與實際的使用量之間存在較大的差距,下圖為推特數據中心管理系統30天內的CPU和memory資源預留和實際使用情況,CPU實際使用值在20%上下,但預留值卻接近80%,超出了實際使用值的三倍,記憶體預留則超出了實際使用值的1.5倍。

圖 2 推特數據中心資源利用率

基於以上原因,如果能夠將業務的波谷時段利用起來,就能減少波谷時間,從時間維度提升效能;同理,將資源預留冗餘縮小,就能從空間維度提升效能。因此將不同優先順序、不同波動周期的業務進行混合部署,為兩個維度提升利用率提供了可能性,即利用低優先順序任務佔用空閑資源,同時高優先順序任務能及時搶佔到資源,從而保證關鍵業務的服務品質。在離線業務在特徵上很好的滿足了上述條件,本文提到的混合部署特指在離線混合部署。

在線業務通常是處理用戶請求的服務,包含交易、購物、搜索、網頁瀏覽等對於實時響應要求高、延時敏感的業務。離線業務通常是計算密集型的批處理任務,包含大數據分析、機器學習訓練、演算法運算、統計報告等優先順序較低、相應要求不高的業務。在離線任務的主要特徵如下表所示:

表 1 在離線業務特徵

從表1可以看出,在離線業務在很多特徵上具有互補性,將二者進行混合部署也已經成為數據中心提升整體資源利用率的主流方法。

方案設計

方案介紹

在離線業務混合部署對容器管理平台提出了更高的要求,這些要求包括:

  1. 調度器需要同時支援在線任務和離線任務的調度,離線任務對調度器提出了更高的性能要求、更多的調度特性需求,比如大數據或AI任務需要支援gang-scheduling、binpack等。
  2. 工作節點支援同時運行在線和離線容器,在離線業務統一管理。
  3. 超賣特性支援,根據節點實時和預測的空閑資源進行調度,提升資源利用率的同時減少在離線運行干擾以達到單次調度最優。
  4. 多維度資源隔離與搶佔,確保離線任務充分利用空閑資源的前提下,支援在線任務對資源百毫秒級搶佔。
  5. 節點可觀測性增強,對在離線任務資源布局動態優化,識別在線業務是否受到干擾,對干擾進行定位和控制。
  6. 集群可觀測性增強,對集群任務布局動態優化,減少集群資源使用不均衡問題。

基於Volcano混合部署解決方案如下圖所示:

圖 3 基於Volcano混合部署架構

Volcano混部調度能力

目前Kubernetes的默認調度器是以Pod為單位進行調度的,不區分Pod中運行的業務類型。因此無法滿足混部場景對資源分配的特殊要求。針對上述問題,Volcano實現了基於應用模型感知的智慧調度演算法,根據用戶提交的作業類型,針對其應用模型對資源的訴求和整體應用負載的情況,優化調度方式,通過資源搶佔,分時復用等機制減少集群資源的空閑比例。

Volcano應用模型感知分為兩種:

1.作業類型感知:能夠識別在線作業和離線作業。

2.Pod類型感知:能夠識別作業中不同類型的Pod,例如Tensorflow作業中的PS和Worker,Spark作業中的Driver和Executor等。

針對作業類型感知,Volcano通過作業混合部署+資源超賣的方式,實現集群資源利用率的提升,示意如下:

圖 4 混合調度超賣示意圖

資源超賣是指將集群資源申請量與使用量的差值進行再次分配,進而提升集群的資源使用率,參考如下方式進行:

圖 5 資源超賣示意圖

其中request-used為資源超賣部分,Volcano調度器會將這部分資源再次分配。由於超賣資源的穩定性不能保證,因此只能用於運行SLA較低的離線作業。

用戶提交多種類型作業時,Volcano進行統一調度,優先保證在線作業運行(如圖4所示)。當在線作業壓力較低時,意味著節點上物理資源的使用率較低,此時Volcano會進行資源超賣,將離線作業調度到相應的節點上運行。當在線作業壓力變大時,Volcano會驅逐掉當前節點上的離線作業,保證在線作業能夠正常運行。

針對Pod類型感知,Volcano根據應用模型對資源的訴求和整體應用模型本身運行的要求,進行優化調度。以Tensorflow作業為例,一個Tensorflow作業中包含若干PS Pod和若干Worker Pod,當PS Pod和Worker Pod能夠均勻分配時,TF作業的運行效果更優。例如,對於一個包含2個PS Pod和4個Worker Pod的TF作業,默認調度器和Volcano對比如下:

圖 6 作業類型感知調度

可以看出,在資源充足的情況下,默認調度器會出現PS Pod和Worker Pod分別被調度到不同節點的情況,Volcano能夠保證將1個PS Pod和2個Worker Pod調度到一台節點上,從而提升作業整體運行效率。

目前K8S提供的默認調度器,僅根據節點資源請求數量調度Pod。該方式並未考慮到節點實際資源使用情況,可能會出現各個節點資源申請率相同,而實際負載差別較大的情況。對於高負載的節點,可能會導致應用響應速度變慢,無法滿足SLA。對於低負載的節點,則存在資源浪費的情況。

針對該問題,Volcano提出了基於節點物理資源使用率的預測及調度功能,提供以下三方面的能力:

1.預測調度:接入集群監控系統,根據節點及Pod歷史資源使用率,預測未來節點及Pod資源使用率的變化趨勢,根據預測結果進行合理調度。

2.負載均衡調度:根據集群各節點當前負載情況,結合未來使用趨勢的預測,將pod調度到使用率較低的節點,進而提升整個集群資源使用的均衡性。

3.資源搶佔調度:節點資源不足時,調度器實時驅逐部分離線作業,保證在線作業的資源使用。

節點管理

混合部署的節點管理主要包括兩個部分,一是資源配置管理,二是干擾控制管理。資源配置組件主要負責在pod創建時配置相關的優先順序用於資源隔離。干擾控制組件主要負責在容器運行時動態檢測異常並進行相關處理。

圖 7 cgroup控制層級

雖然kubernetes支援多種QoS類型的Pod,如Guaranteed、Burstable和BestEffort,但是這些類型並不能和在離線任務直接對應。HCE通過新增cgroup介面來控制pod的優先順序,如cpu cgroup下的cpu.qos_level用於控制當前Pod對CPU資源搶佔的優先順序。當前通過kubelet執行相關配置操作,保證Pod各資源配置的一致性。

資源超賣及在離線作業混部必然會導致不同作業之間的相互干擾,因此除了通過cgroup進行資源隔離之外,kubelet同時會實時採集節點上物理資源使用率,根據不同的情況驅逐離線作業,提前釋放相應資源,防止對在線作業的SLA產生影響。

節點資源隔離

資源隔離技術涉及的資源包括CPU、記憶體、網路和IO等等,針對每一種資源,需要結合已有隔離技術來應對混合部署場景下的新需求。在離線混合部署對資源的需求可歸納為兩點:對於資源分配情況優先供應給在線任務,對於資源回收情況優先從離線任務回收資源。

對於CPU資源,目前內核已經提供豐富的隔離和頻寬控制技術,例如調度類、調度策略、進程優先順序、cpu.shares等,但這些技術並非為混合部署設計,使用上存在如下一些問題。

  • 調度類:不同的調度類優先順序不同,並且支援快速搶佔,這一特點和混合部署的需求吻合。但由於系統進程運行在CFS類上,離線任務就只能用優先順序更低的IDLE調度類,而IDLE調度類不能用於普通進程調度,因此不能通過設置不同調度類來支援CPU搶佔。
  • 調度策略:CFS支援多種調度策略,不同策略優先順序也不同,這也是混合部署所需要特性。由於通用進程運行在SCHED_NORMAL策略,因此離線任務可以選擇優先順序更低的SCHED_BATCH或SCHED_IDLE策略。使用調度策略的關鍵問題是沒有提供cgroup控制介面,用戶無法通過cgroup配置Pod的調度策略。
  • 權重(優先順序&cpu.share):進程優先順序和cpu.shares通過虛擬時間片來控制CPU權重,只能保障總體運行時間比例,本質上屬於公平調度的範疇,不能保障在線進程實時搶佔離線進程。

HCE目前的做法是在SCHED_IDLE上進行修改以滿足離線進程調度:

  1. 新增cgroup介面cpu.qos_level來控制Pod中所有進程的優先順序。
  2. 引入throttle機制對離線任務進行進一步壓制,使得在線任務能夠獨佔CPU。
  3. 增加kill boost機制避免當在線業務100%佔用CPU時,殺死離線任務無法釋放資源的問題。
  4. 對在線任務進行高負載檢測,超時後對內核態離線任務放行,防止離線進程在內核態發生優先順序反轉導致系統假死。

在記憶體資源方面,HCE通過如下能力支援記憶體分級保障:

  1. 新增cgroup介面memory.qos_level來控制Pod優先順序。
  2. 分級回收:通過記憶體回收水位分級和OOM回收分級來保障在線任務記憶體需求。
  3. kill快速回收:該技術可以使得分配記憶體觸發大量離線任務OOM的情況下仍能具有較高的記憶體分配性能。
  4. 頁快取限制:避免因page cache使用過多導致記憶體不足從而影響業務功能。

網路資源原生可以使用TC HTB規則控制優先順序,但該方法配置繁瑣,規則數量增加時會導致性能損耗變大,對於在線小報文離線大報文情況,在線任務性能會受到干擾。

HCE對此提出以下網路隔離優化機制:

  1. 基於eBPF和EDT技術實現動態限速分配策略,根據業務優先順序自動調整頻寬,實現per-cgroup級別的頻寬隔離。
  2. 網路頻寬優先順序搶佔機制,當在線業務佔用頻寬比較低時,空閑頻寬能夠分配給離線業務使用;而當在線業務需要更多頻寬時,能夠迅速(<100ms)將頻寬從離線業務上搶佔回來。
  3. 對離線業務提供最低頻寬保障,避免飢餓導致的業務中斷。

落地效果

CPU隔離效果

這裡使用CloudSuite驗證CPU隔離效果,使用web-serving模擬在線業務,in-memory-analytics模擬離線業務。使用三種部署方式進行驗證:只運行在線、在離線混合部署、在離線混合部署(開啟QoS隔離特性)。測試數據如下所示,利用CPU搶佔能力可以讓在線任務達到接近獨立部署的性能。

圖 8 混合部署響應時間

網路隔離效果

網路通過netperf進行測試,分別在不同優先順序Pod執行發包測試,在離線發包時序如下圖所示,時間軸單位為s,在第5秒驗證離線對在線的性能影響,在第15秒驗證在線任務對網路的搶佔能力。

圖 9 網路發包時序

取樣數據如下圖所示,啟動離線任務對在線任務網路性能影響較小,在線任務可以在100ms時間內完成網路性能從0到最大的搶佔。

圖 10 網路搶佔性能

計劃與展望

雖然混合部署解決方案是提升資源利用率的重要技術手段,但該方案目前沒有形成業界統一標準,存在重複設計,通用性不強等問題。後續計劃向kubernetes和linux內核提交貢獻來推進生態標準化。

未來,混合部署的含義也將隨著技術的發展而逐漸豐富,例如多種類型任務的混合部署,異構資源的混合部署等等。因此需要在兩級優先順序設計的基礎上,探索多級優先順序場景和擴展方案,以支援更豐富任務類型。異構和跨代硬體資源的混合部署對傳統基於資源部署的方式提出了新的需求,讓業務的部署不再需要感知底層硬體資源才能提供更智慧的調度、更精準的資源匹配。

此外,仍有部分資源沒有分級搶佔能力,例如L1/L2快取、快取頻寬等,因此混合部署的性能干擾不可避免。為了讓混合部署後仍能提供優質的服務品質,不僅要從晶片微架構到上層調度層進行全面設計,還需要一種預測、回饋和校正機制。

參考資料

  1. 雲原生2.0白皮書
  2. 數據中心產業發展指數2021年
  3. 新型數據中心發展三年行動計劃(2021-2023年)
  4. 中國數據中心行業研究報告2020年
  5. 王康瑾,賈統,李影.在離線混部作業調度與資源管理技術研究綜述.軟體學報,2020,31(10):3100-3119
  6. Interference-Aware Scheduling for Inference Serving

 

點擊關注,第一時間了解華為雲新鮮技術~