[概述]
在數(shù)據(jù)中心,資源利用率指標,尤其是 CPU 利用率常用于量化集群的有效利用程度。在實際環(huán)境中,系統(tǒng)給負載分配的資源以及工作負載的調(diào)度決策都會影響利用率。
如果工作負載資源分配不準確,集群可能會因空閑而未充分利用。另一方面,如果調(diào)度決策不合理,即便是利用率有提升,負載間的資源沖突也會導(dǎo)致性能出現(xiàn)下降。
為了提高資源利用率,同時盡量減少由于干擾導(dǎo)致的性能下降,以保證 QoS,性能感知系統(tǒng) PAWS(Performance Aware System)應(yīng)運而生。
PAWS 的愿景是提供一套能夠基于負載特征歷史特征進行資源推薦,同時盡可能避免互相干擾的調(diào)度算法。
[特性介紹]
PAWS 主要解決資源精準推薦以及資源干擾的問題,因此其主要圍繞著這兩方面來構(gòu)建自己的能力。當(dāng)前 PAWS 主要主要以下兩個特性:
特性一、VPA 資源推薦
算法思想
VPA (Vertical Pod Autoscaler) 是一種自動伸縮技術(shù),通過對分配給微服務(wù)的物理資源(CPU、內(nèi)存等)進行調(diào)整,來滿足微服務(wù)不斷變化的需求。不同的服務(wù)有不同的資源需求,這取決于多個因素,例如一天中的時間、用戶需求等。為這些服務(wù)進行固定的資源分配可能會導(dǎo)致集群的資源利用率非常低。
PAWS 提出了一種將經(jīng)典的數(shù)值優(yōu)化解決方案與當(dāng)代的機器學(xué)習(xí)方法相結(jié)合的 VPA 推薦算法,通過對負載歷史特征的分析,為工作負載推薦適當(dāng)?shù)馁Y源,從而釋放多余申請的資源,從而提高集群利用率。
PAWS-VPA 的整體架構(gòu)如下:
其中 DRIFT Recommender 從 Prometheus 中獲取所需數(shù)據(jù),并通過 VPA 推薦算法,給出對應(yīng)的數(shù)據(jù)值。其整體算法包括了主動預(yù)測,負載感知以及預(yù)測反饋三部分:
[ ] 主動預(yù)測:預(yù)測負載資源,在變化之前給出建議;
[ ] 負載感知:基于歷史數(shù)據(jù)庫感知負載特征模式,并給出建議;
[ ] 反饋機制:通過運行時的反饋系統(tǒng),快速糾正不當(dāng)建議;
整個算法的整體思想為,以過去 N 個時間窗口的 CPU 利用率以及資源執(zhí)行情況為輸入,每隔一段時間*(k)*進行一次調(diào)用,對未來一個或者多個時刻之內(nèi),每個容器的 CPU 資源推薦最佳值。
在推薦時,會考慮過往的資源推薦情況,基于過往的 overestimation(過高估計)和 underestimation(過低估計)進行加權(quán),給出最優(yōu)建議。
在算法中,我們的目標函數(shù)(OBJ)是資源高估和低估事件的加權(quán)(w)平均值。在這里,
[ ] 高估(overestimation)是指 CPU 的建議高于實際 CPU 利用率,導(dǎo)致整體利用率偏低;
[ ] 低估(underestimation)指的是 CPU 建議低于 CPU 利用率導(dǎo)致 throttle 事件,會導(dǎo)致負載性能下降;
數(shù)學(xué)上,OBJ=w x UE+(1-w)x OE,其中 w 是分配給低估相對于高估的重要性或權(quán)重。
模塊組成
整個 PAWS-VPA 推薦算法共包含三個模塊:負載表征,數(shù)值優(yōu)化以及機器學(xué)習(xí)預(yù)測。
負載表征(Workload Characterization):分析過去的 CPU 利用率特征,以給出合理的 OBJ 權(quán)重 w
數(shù)值優(yōu)化(Numerical Optimization):使用經(jīng)典的數(shù)值優(yōu)化來計算過去 M 個時間段內(nèi)的最優(yōu)推薦。具體來說,我們最小化 OBJ 以獲得過去樣本的最優(yōu)目標推薦,并將這個最小化問題描述為混合整數(shù)線性規(guī)劃(Mixed Integer Linear Program,MILP).
機器學(xué)習(xí)預(yù)測(Machine Learning Forecast):在 MILP 計算出過去 M 個時間間隔的目標值后,本模塊將這 M 個最佳歷史推薦作為輸入,并根據(jù)機器學(xué)習(xí)算法中定義的預(yù)測水平 F 預(yù)測下一個(一個或多個)更新間隔的最佳未來推薦。
特性二、時序沖突檢測調(diào)度
算法思想
PAWS 開發(fā)了一套調(diào)度插件,通過利用負載歷史數(shù)據(jù)中提取的資源利用率并進行時序分析統(tǒng)計,并讓調(diào)度器基于該統(tǒng)計對負載進行錯峰填谷,避免資源沖突的同時實現(xiàn)更高的資源分配。其使用了中的機制,對于系統(tǒng)中標記的進行資源的采集。通過收集作業(yè)容器的歷史資源使用情況,分析時間序列周期(如每小時),輸出每個周期周期的預(yù)估資源利用率,從而避免作業(yè)資源沖突,最終實現(xiàn)錯峰補谷的調(diào)度,提升集群資源利用率。
算法流程
整個算法分為預(yù)測和調(diào)度兩個部分,其中預(yù)測主要基于每種負載的歷史數(shù)據(jù),統(tǒng)計其時序變化情況,以供調(diào)度器使用;調(diào)度則基于上述信息,結(jié)合新任務(wù)的特征情況,給出合理的調(diào)度決策。
預(yù)測流程:通過 Prometheus 等時序數(shù)據(jù)庫,讀取每個已知負載的資源利用率歷史數(shù)據(jù)點,分析出小時維度的變化情況,并保存為歷史數(shù)據(jù),以供調(diào)度器參考。
調(diào)度流程:對于新來的任務(wù),基于任務(wù)標簽來判斷具體策略。對于已知任務(wù),從調(diào)度器中選取歷史模板,與每個節(jié)點歷史數(shù)據(jù)進行疊加求和;對于未知任務(wù),則基于任務(wù)資源 request 與節(jié)點數(shù)據(jù)進行疊加求和。在 Scoring 階段,當(dāng)存在任務(wù)運行周期階段超過閾值的可能性,進行不同的打分并歸一。于此同時,系統(tǒng)對于未知任務(wù)會實時統(tǒng)計其資源利用率,確保后續(xù)該任何再次被拉起時可能進行更精確的打分。
[結(jié)果評估]
文中所述的 Performance Aware System 通過機器學(xué)習(xí)與數(shù)理分析手段,對負載資源的分配與調(diào)度進行優(yōu)化。我們在實驗室場景下模擬了包括 Redis,Nginx 和 Torchserve 等在內(nèi)的一些典型應(yīng)用,并通過搭建 10 臺服務(wù)器的小型集群進行驗證。通過測試發(fā)現(xiàn),集群整體利用率在部署前后出現(xiàn)明顯的提升。下圖為其中某一個節(jié)點的利用率變化情況,該節(jié)點的峰值利用率從 30%提升到了 40%以上。
我們同時對部署前后的業(yè)務(wù)性能變化進行了對比,發(fā)現(xiàn) P99 時延劣化在 10%以內(nèi),證明了算法在提升集群利用率的同時也能有效避免性能出現(xiàn)下降。
任務(wù)名稱 | 負載類型 | P99 時延(前) | P99 時延(后) | 性能劣化 |
---|---|---|---|---|
Ngix | CPU / Net 密集型 | 437.7 | 447.6 | 2% |
Redis | Memory 密集型 | 0.019 | 0.021 | 10% |
Torchserve | CPU 密集型 | 316.2 | 302.2 | 0% |
目前本特性代碼已在 openEuler Cloud Native SIG 進行開源,地址為:https://gitee.com/openeuler/paws
于此同時,本方案仍然存在一些不夠完美的地方,比如當(dāng)前本方案主重點瞄準 CPU 計算密集型場景,但是在實際場景中,內(nèi)存以及 IO 可能都成為影響業(yè)務(wù)的瓶頸點,同時資源競爭導(dǎo)致的性能下降也很難 100%從利用率的角度進行監(jiān)控。因此也希望對該技術(shù)方向有興趣的伙伴能加入該 SIG,對 PAWS 進行持續(xù)優(yōu)化。
審核編輯:黃飛
-
cpu
+關(guān)注
關(guān)注
68文章
10889瀏覽量
212382 -
算法
+關(guān)注
關(guān)注
23文章
4623瀏覽量
93104 -
數(shù)據(jù)中心
+關(guān)注
關(guān)注
16文章
4830瀏覽量
72247 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3839瀏覽量
64543 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8428瀏覽量
132834
原文標題:openEuler 資源利用率提升之道 07:PAWS 性能感知系統(tǒng)簡介
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論