Key Takeaways
-
USENIX ATC(USENIX Annual Technical Conference) 是計算機系統領域國際頂級學術會議之一(CCF-A),在國際上享有極高的學術聲譽,2024年錄用率僅為15.8%。來自華為雲中介軟體團隊、上海交通大學IPADS實驗室的論文《Harmonizing Efficiency and Practicability: Optimizing Resource Utilization in Serverless Computing with JIAGU》[1]成功入選ATC 2024。
-
如何提高資源利用率一直是 Serverless 領域乃至雲平臺面臨的最佳化難題之一,本文將介紹華為雲Serverless在高效、高密度排程最佳化方面的探索歷程,並揭秘30%+ 利用率提升背後的原理。
Serverless作為一種新的架構正規化,引領著雲廠商基礎設施的變革與雲服務的演進,憑藉著按量付費、自動彈性、免運維的特點吸引越來越多的企業與使用者關注。主流雲服務商不斷地推出 Serverless 相關的雲產品和新功能,其中華為雲對Serverless在高效、高密度排程最佳化方面深入探索後,推出函式即服務(Function-As-A-Service)產品-FunctionGraph,作為華為雲全域Serverless的核心產品,其覆蓋邊緣計算、車聯網、AI應用等場景,此次揭秘華為雲Serverless 30%+ 利用率提升的探索歷程。
1、Serverless平臺資源利用率的巨大挑戰
提高資源利用率一直是 Serverless 領域乃至雲平臺面臨的最佳化難題之一,華為雲對平臺執行的函式例項資料進行分析,發現不同的Serverless函式在CPU或記憶體利用率上有較大的提升空間。圖1是例項內資源浪費的示意圖。這表明,資源利用不足的問題主要由如下兩個因素造成。
-
規格過配:為了保證效能與可靠性,使用者通常會考慮最壞的情況,從而指定相對較大的函式規格。即使例項滿負載也無法充分利用分配的資源。這就造成了圖1中①部分的資源浪費。
-
空閒例項:在實際業務應用中,每個例項所服務的使用者負載往往會存在波動性。當例項負載較低時會空閒出部分資源,而這些資源無法被其他例項使用,這會產生圖1中②部分的資源浪費。
圖1 資源利用率提升空間(源於論文)
為了提高Serverless叢集利用率,現有方案主要針對以下兩個方向進行最佳化:
-
透過超分(overcommit)減少例項資源的過量分配[2],透過scheduler在節點上部署更多的函式例項,來減少①部分的浪費;
-
透過例項快速縮容(autoscaling)應對負載(RPS)的動態波動[3],儘量使每個例項的負載接近飽和負載,減少例項空閒造成的②部分的資源浪費。
然而,如何在現有排程系統中有效的使用這兩個措施存在巨大的挑戰:
-
超分很有可能導致效能下降從而違背QoS(Quality-of-Service),常見的作法是透過預測效能以避免違背QoS,這將在排程路徑上引入模型推理,而預測精度越高意味著計算複雜,從而排程開銷越大,簡單的計算卻難以有效保證QoS,存在預測精度與排程開銷之間的權衡;
-
當負載波動時,為了快速釋放空閒例項資源,需要更敏感的自動擴容能力來靈活地調整例項個數,也意味著要更多額外的冷啟動,那麼如何在資源利用率和冷啟動開銷之間進行權衡成了難題。
2、基於JIAGU的高效排程:華為雲對資源利用率的最佳化探索
2.1、系統架構
為了應對上述技術挑戰,我們可以考慮以下兩點:
-
預測與決策解耦。預測精度和排程成本之間的權衡來自於預測和決策的耦合,即往往在排程期間進行代價高昂的模型推斷。我們可以將預測和決策解耦。具體來說,排程器可以在新例項到來之前對資源環境進行建模,並基於假設進行提前預測。當一個新的例項到來,並且排程時的資源環境符合我們之前的假設時,可以直接根據準備好的決策來進行排程。這提供了一個無需推理的排程快速路徑。
-
資源釋放和例項淘汰解耦。資源利用率和冷啟動開銷之間的權衡來自於資源釋放和例項驅逐的耦合。相反,我們可以解耦資源釋放和例項驅逐。具體來說,即使一個例項沒有被驅逐,我們也可以調整路由,不向它傳送請求,將負載較低的例項中的請求路由到其他例項中,達到與實際驅逐類似的資源釋放效果。調整路由的開銷遠小於實際的冷啟動開銷。因此,透過這種方式,我們可以以更高的靈敏度釋放/回收資源以應對負載波動,同時避免過多的額外冷啟動開銷。
基於此,我們設計了一個高效、高密度的QoS感知排程系統JIAGU(甲骨),如圖2所示。首先,我們設計了一種預決策排程,可以在低排程延遲的情況下做出準確的預測。在建立例項時,會對其部署後的效能進行預測,在不違反QoS的前提下,儘量提高例項的部署密度,以充分利用資源。其次,採用了兩階段擴縮容設計,在負載波動情況下,以最小的開銷高效利用資源。
圖2 JIAGU 系統設計(來源於論文)
2.2、系統設計
QoS預測模型:QoS感知排程建立在能夠精確預測各函式在特定資源條件下的效能的基礎上。與現有工作以例項粒度做效能預測不同,JIAGU利用了同一函式多個例項之間的同構性,以函式為粒度做效能預測,並引入了併發度作為每個函式的新特徵。如圖3所示,這有效地降低了輸入維數,從而減少了訓練開銷,並可能緩解“維數詛咒”。其中QoS考慮了效能目標,主要以尾延遲為指標,但可以擴充套件到其他指標。
圖3 預測模型(來源於論文)
節點容量表:為將預測和決策解耦,對於每一個部署的函式,提前預測新例項的效能,基於QoS保證原則的計算它在該節點上的容量,最終計算出節點上每個函式的容量表。“容量”表示該函式能夠在當前環境下部署的不違背QoS的最大併發例項數。之後,當排程器做出排程決策時,它可以透過表查詢的方式,即檢查函式例項部署後併發度是否超過該函式的容量,來預測QoS違規,而無需進行模型推斷。這就是排程“Fast path”。此外,只有當傳入例項所屬的函式不在該節點的容量表中時,例如函式第一次部署到該節點上時,才需要對關鍵路徑進行預測,此為“Slow path”。而實際負載的結果顯示,超過80%的排程透過Fast path。
容量非同步更新:由於部署新函式可能會對節點上其他函式施加資源干擾,從而導致它們的QoS違反。因此,引入了非同步更新容量,當新函式被排程到節點時,它會觸發更新容量表,更新在排程關鍵路徑之外非同步完成。即保證了容量表始終最新,又避免了容量更新引入額外的排程開銷。
併發度感知排程:雲上最極端的呼叫模式之一是負載峰值,當負載快速上升,需要同時建立多個函式例項。若如圖4(a)所示的每個例項的建立都進行一次預測,將會帶來巨大的排程開銷。基於此,JIAGU 進一步採用併發感知排程,它在負載高峰時對同一個函式併發傳入的例項進行排程。容量的計算方式,不僅考慮到是否可以部署下一個例項,還考慮了可以部署多少個下一個例項,如圖4(b)所示,當同一函式的多個例項到達時,如果該函式在節點上的容量足以容納這些新的例項,則多個例項的排程和非同步更新可以被批處理,只需要進行一次。
圖4 併發度感知排程(來源於論文)
兩階段擴縮容:當前通用的例項驅逐策略是當負載下降時,針對空閒例項等待一段時間後直接進行驅逐,如圖5(a)所示,這種直接縮容的方式在負載波動的場景下往往會導致更頻繁的冷啟動。為了將資源釋放與例項淘汰解耦,考慮如圖5中(b)所示兩階段擴縮容:
-
一階段:當負載下降時,在驅逐例項之前,會先以更高的敏感性調整路由,將請求傳送到更少的例項,從而使部分例項處於空閒狀態;
-
二階段:當處於空閒狀態一段時間後,再進行例項資源的釋放。如果負載在空閒例項被釋放之前再次上升,則可以透過重路由以最小的開銷使例項重新工作。此外,為了應對某個節點的容量滿了,而其上的處於空閒狀態的情況,會提前將空閒例項遷移到其他節點上,以減少冷啟動的開銷。
圖5 兩階段縮容設計(來源於論文)
2.3、效果驗證
基於雲上的真實負載資料我們驗證分析了JIAGU的排程效能,如下圖6(a)部分結果所示,相比於當前先進的基於模型的排程器Gsight[4](發表於SC’21)相比,其排程成本降低了81.0%–93.7%,這是因為 JIAGU的基於節點容量的排程策略可以大幅減少模型推理的數量, 從而在多次冷啟動中避免了推理開銷。如圖6(b)(c)所示在不同執行時的場景下,JIAGU的冷啟動延遲相比Gsight分別降低了57.4%和20%。總的來說JIAGU在排程效能上普遍優於當前的基於模型的排程器。
圖6 排程效能驗證結果(來源於論文)
同時我們評估了JIAGU在資源利用率提升和QoS保障方面的效果,如圖7所示,與現有流行的排程器Kubernetes、Gsight[4]、Owl[5]相比,在維持相當的QoS保障性的基礎上,JIAGU實現了最高的資源利用率,例項密度比Kubernetes高54.8%,比Gsight高22.0%,比Owl高38.3%。可見當使用者負載下降時,JIAGU可以快速利用不飽和例項的資源。
圖7 資源利用率驗證結果(來源於論文)
3、總結與展望
本文介紹了華為雲對排程最佳化這一業界難題的探索之路,創新性提出了基於JIAGU的高效的資源最佳化排程系統,透過在現網的大規模驗證,我們發現JIAGU在不同資源密集型業務混部的場景,保證QoS不影響的前提下實現了資源利用率30%+的提升,歡迎大家來體驗。同時我們也在持續探索、最佳化排程能力,面向GPU等資源異構資源,結合函式畫像實現精準排程。
在其它關鍵技術上,華為雲FunctionGraph在過去一年陸續構建了多項能力,旨在最佳化平臺極致效能。
-
在冷啟動最佳化方面,探索了基於程序級快照的Java冷啟動加速方案,節省了框架與業務初始化時間(佔Java應用冷啟動時間的90%),透過函式映象預載入技術,大幅縮減了函式程式碼下載解壓時間,實現了冷啟動時延降低90%+。
-
在彈性效率方面,面向水平彈性決策與啟動時間長的問題,一方面透過流量預測進行例項預熱,另一方面構建了例項垂直彈效能力,實現毫秒級響應;
-
在函式間通訊效能方面,透過多語言Runtime加速、統一訊息結構免序列化、整合Kmesh加速節點內資料轉發等技術,實現亞毫秒級低時延函式互調,為微服務Serverless化保駕護航;
-
在邊緣計算方面,自研了基於WASM輕量級安全沙箱的排程底座,在高併發下實現小於3ms的冷啟動的極致彈效能力,且支援可程式設計CDN,雲邊一體。
FunctionGraph 作為華為元戎核心加持的下一代 Serverless 函式計算與編排服務,致力於持續為使用者提供方便、迅捷的 Serverless 服務體驗。您可以登入華為雲 FunctionGraph 控制檯來深入體驗,更多資訊請參閱 華為雲FunctionGraph 官方文件 [7] 。後續我們將分享更多圍繞通用全場景 Serverless 的前沿理論及其案例實踐,回饋社群。
作者:思遠
審稿:清源、舊浪
參考文獻
[1] Qingyuan Liu, Yanning Yang, Dong Du, Yubin Xia, Ping Zhang, Jia Feng, James Larus, Haibo Chen. Harmonizing Efficiency and Practicability: Optimizing Resource Utilization in Serverless Computing with Jiagu. USENIX Annual Technical Conference, Santa Clara, CA, USA, July 2024.
[2] Suyi Li, Wei Wang, Jun Yang, Guangzhen Chen, and Daohe Lu. Golgi:Performance-aware, resource-efficient function scheduling for serverless computing. In Proceedings of the 2023 ACM Symposium on Cloud Computing, SoCC ’23, page 32–47, New York, NY, USA, 2023.Association for Computing Machinery
[3] Haoran Qiu, Weichao Mao, Chen Wang, Hubertus Franke, Alaa Youssef, Zbigniew T. Kalbarczyk, Tamer Ba¸sar, and Ravishankar K. Iyer. AWARE: Automate workload autoscaling with reinforcement learning in production cloud systems. In 2023 USENIX Annual Technical Conference (USENIX ATC 23), pages 387–402, Boston, MA, July 2023. USENIX Association.
[4] Laiping Zhao, Yanan Yang, Yiming Li, Xian Zhou, and Keqiu Li. Understanding, predicting and scheduling Serverless workloads under partial interference. In Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, SC’21, New York, NY, USA, 2021. Association for Computing Machinery.
[5] Huangshi Tian, Suyi Li, Ao Wang, Wei Wang, Tianlong Wu, and Haoran Yang. Owl: Performance-aware scheduling for resource-efficient function-as-a-service cloud. In Proceedings of the 13th Symposium on Cloud Computing, SoCC ’22, pages 78–93, New York, NY, USA, 2022. Association for Computing Machinery
[6] https://www.infoq.cn/article/bdczHWk9LxuOC9GrVToL?utm_source=related_read&utm_medium=article
[7] https://support.huaweicloud.com/functiongraph/index.html
華為開發者空間,匯聚鴻蒙、昇騰、鯤鵬、GaussDB、尤拉等各項根技術的開發資源及工具,致力於為每位開發者提供一臺雲主機、一套開發工具及雲上儲存空間,讓開發者基於華為根生態創新。點選連結,免費領取您的專屬雲主機。
點選關注,第一時間瞭解華為雲新鮮技術~