雲計算爲何需要預測?邁向多維智慧,智能畫像與預測算法剖析

古埃及人根據天狼偕日升和尼羅河氾濫週期的長期觀測,準確預測出洪水到來和退去的時間,並收穫大量肥沃土地來耕耘;托勒密根據喜帕恰斯留下的大量觀測數據建立模型,高精度預測了今後某個時候某個星球所在的位置;再從“朝霞不出門,晚霞行千里”的古諺語,到通過氣象衛星、雷達收集並進行氣象數據同化來精確預測天氣,我們發現“預測未來”不再僅僅打着“科幻、超能力”的標籤,更能通過獲取、分析數據,讓未來照進現實。

雲計算爲何需要預測?

預測源起於“動”,正因非靜態才無法確定未來某一時刻的狀態。而“動”的程度決定了預測的難度。

l 從雲上用戶需求側看:業務負載、業務規模、設置的告警閾值都在變動

l 從雲資源供給側看:用戶數、資源使用率、碎片率也在變動

如果能提前預測客戶需求,就能通過智能推薦、智能告警等來提升易用性,更能提前進行硬件規劃、資源騰挪,保障流量洪峯下的擴容訴求,助力實現“極優、極簡”的雲上體驗

圖1 “看得見的易用”與“看不見的智能”

預測的內核:雲上資源智能畫像

根據VM歷史資源利用率、VM請求時間間隔、Flavor生命週期等歷史數據,利用關聯分析模型深度學習算法,可用來描繪資源表面、內在以及未來。智能畫像的引入讓雲平臺資源管理更加精細化、智能化。

畫像關鍵技術剖析

關鍵技術一:時序預測

在雲服務中,像容量預測,主機熱點、動態告警等都涉及到時序預測,即如果知道一段歷史時間(T*時刻以前)的數據變化規律,如何去預測未來一段時間的變化趨勢呢?生活中如天氣的變化、人口增長、經濟增速、股票波動,甚至最近大家比較關注的新冠疫情的發展都屬於時序預測範疇。

圖 3 時序預測

雲上時序預測的輸入主要來源於主機或虛擬機的資源利用率,而云上業務的複雜多變,也提升了分析資源利用規律的複雜度。總體而言,有三方面的挑戰:

l 波形的複雜性:我們初步分析歷史trace的數據並形成圖像,可以看到有少部分是平穩的甚至是有近似週期性的,也有一部分呈現上升或下降的趨勢,但更多的是單個“山峯”或者偶爾突發的情況,甚至會有頻繁地上下震盪

l 業務的疊加性:以上波形表徵的多樣性,主要是由於雲平臺中單臺物理主機上可能運行着多個租戶的多個VM,同時單個VM也可能運行着多種應用;

l 不可以預見的人爲因素:比如因促銷而產生的批量訂單往往會導致某個資源池無法容納;超大規格VM的偶然創建也可能引發一些容量事件。

#經典算法#

如果從波形的特性來看,可以大致把時序預測歸爲週期性非週期性兩大類。對於週期性的預測問題,谷歌在文獻[1]中提到可以判別歷史曲線中是否有重複出現的相似性模式窗口,當然可以通過Pearson相關係數來計算任意兩個模式窗口的相似度。但由此引發一個問題:模式窗口(即週期長度)的大小又如何確定?我們首先想到的是快速傅里葉變換(FFT),即把原始數據的時域變化轉爲頻域的變化,然後模式窗口的大小等於採樣率與信號功率最大的頻率分量的頻率之商。

其實還有一個更加直觀的辦法,如圖4所示,大家可以想象一個連綿起伏的山峯,如果每個山頭是類似的,那麼任意相鄰兩個山頭最高點(峯值)之間的距離應該是近似相等的。基於這個語義,我們想到一個辦法:把時域數據轉爲功率譜,取出功率譜中前L個(比如100個)峯值,計算相鄰兩個峯值之間的距離,如果這個距離數據的變異係數(即標準差除以期望)足夠小(如小於0.1),那麼可以認爲這些峯值是等間距的,尤其可以判定其週期性及週期的長度。

圖4 週期性預測辦法

至於非週期性的預測,則有非常多的模型可以參考。如比較經典的ARIMA模型(圖5),其主要分爲AR(自迴歸)和MA(滑動平均)兩部分。首先把原始數據進行差分(即依次把後一時刻的值減去前一時刻的值得到新的序列,可以多次差分,但一般不超過三次),將不平穩的序列變平穩。當差分得到平穩序列以後即可進行模式識別:判別其符合AR、 MA或ARMA模型。AR模型(自迴歸)認爲需要預測的值是歷史數據的加權;而MA模型(滑動平均)認爲下一個值的波動性是歷史波動性的加權。綜合這兩方面可以得到下一個預測結果。

圖 5 ARIMA模型

此外還有馬爾科夫(Markov-Chain)模型(圖6),其核心思想是條件概率。比如到銀行很可能是辦理金融業務、最近體溫升高則有可能患上新冠肺炎等等。同樣的道理,我們可以把CPU的利用率劃分成若干個區間,通過對歷史數據的統計,比如當處於區間【30%,60%)(State 2)時,未來的利用率有60%的概率還會停留在本區間範圍,而分別有20%的概率會轉移到區間【0%,30%)(State 1)或區間【60%,100%)(State 3)。通過這樣的辦法,可以得到一個完整的馬爾科夫狀態轉移(MDP)圖,由此可以對未來的時刻的資源變化進行預測。

圖 6 馬爾科夫模型

#進階算法#

Facebook針對其社交平臺上用戶點擊和轉發事件數的預測提出了Prophet模型[2]。由於其社交平臺的數據具有明顯的週期性、趨勢、節假日以及存在個別的異常點(噪音),所以Prophet本質上是一個廣義疊加模型(GAM),即把前面提到的四方面分別建模再進行累加而成。AWS則提出了DeepAR模型[3],主要用於其店鋪銷售的預測,其基礎理論是LSTM[4],即長短期記憶神經網絡,通過一些門的設計來控制歷史長河中哪些信息應該遺忘、哪些應該保留下來。

#前沿算法#

谷歌在AGILE系統[5]裏提出了一種分解預測再組合的思路。打個比方,在一個房間中,如果一千個人同時在說話,那麼最終的音頻可能是一段看起來雜亂無章“噪音”,但是如果把每個人說的話分離開來,那麼每個人說話是清晰的也是可預測的。

基於這個思想,可以設計一個分解-組合的預測模型(圖7)。首先,對原始的資源曲線使用EMD(黃鄂院士所提出的經驗模態分解)技術分解成若干平穩子序列以及殘差項;然後對於每個平穩子序列使用傳統的時序預測算法進行預測;最後再把所有預測結果進行累加,從而得到最終的結果。

圖 7 分解-組合預測法

關鍵技術二:業務識別

雲平臺每時每刻承載着海量的業務,這些業務中有些是CPU密集型的,有些是內存密集型,也有些是網絡密集型等等。假設大家都“搶”CPU資源,且這些業務都放在同一臺主機上,那麼就會引發資源爭奪的“打架”行爲,造成業務之間的互相干擾;但如果把相同密集型的業務分開放,比如CPU密集型與網絡密集型混合放置,那麼也許可以“和平共處”[6]。由此,引出一個問題(圖8):在雲上如何從底層的資源監控數據能夠準確地識別上層業務類型,從而儘可能減少業務間的干擾性,保證租戶QoS?

圖 8 業務識別與QoS調度

首先,我們可以通過各維度資源的利用情況進行關聯性分析,使用Spearman係數計算任意兩個維度的關聯程度,形成一個“feature map”(圖9)。此外,我們還可以在原始的數據序列中使用多個不同大小的滑動時間窗口,在每個時間窗後中提取數據更細粒度的特徵,類似“卷積核”的辦法。綜合以上兩方面,可以對業務類別進行初步的畫像。

圖 9 資源利用相關性

關鍵技術三:算力匹配

我們在業務識別中發現一個現象:相當一部分用戶其實不清楚什麼樣的虛擬機類型/套餐(通常稱爲flavor)最適合其業務。因爲從監控數據可以看出,大部分用戶資源跑得很閒,即未能將資源充分利用起來;另外也有部分用戶一直處於滿負載狀態,如可能運行大數據作業或AI應用。那麼,如何給用戶推薦既滿足其業務訴求又使得性價比最高的最佳資源配置?如圖10所示,用戶通常只知道自己需要運行什麼樣的應用、有多大的數據量、需要什麼時間點完成以及有多少預算等等,雖然用戶傾向於更便宜的虛擬機類型,但通常不知道哪種類型性價比最高。

圖 10 算力匹配

一般的思路是把所有用戶與歷史所使用過的虛擬機類型(flavor)構成一個二維矩陣,如果一個用戶使用過某種虛擬機類型,那麼我們就可以根據租戶的資源使用情況對item進行綜合打分。當然,最終的矩陣是非常稀疏的,我們需要做的是通過SVD&PQ這類的算法進行矩陣分解並且預測那些用戶沒有使用過的虛擬機類型的分值,並根據這個分值大小進行推薦。

但是,如果僅根據最高預測分值進行推薦,可能會導致某些用戶增加的成本較高。如圖11所示,假設某個用戶原來使用1u1g的虛擬機規格,瞬間給其推薦4u8g的配置,從業務上也許已經緩和其高負載狀況,但是用戶需要多付的錢可能是其不能接受的。因此,需要綜合考量虛擬機價格和規格大小進行推薦距離度量,給出合理的推薦範圍。

圖 11 推薦距離度量

Case Study

容量畫像與最佳適應調度

一方面,如果能夠對資源池餘量進行精準畫像,即通過設計測算定理預測每種flavor未來還能放置多少;另一方面,可以統計每種flavor在過去請求trace中的分佈比例。結合這兩方面的信息,可以設計一種容量調度算法Besfit Capacity用於虛擬機在線調度,以讓任意兩種flavor的剩餘容量比儘可能接近於它們的歷史請求比。

這裏採用首次發放失敗時,算法接收的請求數量與最大理論上界的比值作爲評測指標,從下可以看到,相比傳統Cosfit算法及其改進算法,Besfit Capacity算法表現更優,甚至某些場景下比傳統Bestfit算法更好。

圖 12 容量調度對比實驗

利用率畫像與彈性調度

傳統虛擬機調度是基於分配率的,但實際上大部分虛擬機處於低利用率狀態,並且不均衡的利用率情況下,容易產生熱點主機(即主機資源利用率>60%)。這裏通過利用率預測的辦法,把基於利用率調度與基於分配率調度進行對比實驗,同時對相同一段時間的歷史請求序列進行回放。從表1可以看到,相比分配率調度,利用率畫像+動態Bestfit算法可以少用5臺主機,內存碎片率減少2.1%,同時熱點主機數從原來的6臺減少到0臺。

表1 - 利用率調度與分配率調度對比實驗

資源預測與容量規劃

前面介紹的分解-組合預測法EEMD與傳統Holt-Winters進行的實驗對比分析,使用兩個trace分別預測它們未來半小時、一小時以及一個半小時的資源用量,並且預測多次。從下圖可以看出,EEMD預測法擬合效果更好、性能更加穩定,尤其在較長時間的預測場景中,預測誤差可比Holt-Winters減少20%以上。我們使用這個方法進行容量規劃,預測準確度95%以上,上線後有效將容量引起的客戶事件數減少60%以上。

圖 13 EEMD與Holt-Winters對比實驗

 

瞭解更多請點擊以下鏈接:

華爲雲瑤光(Alkaid)智慧雲腦介紹、雲服務器8折、8888元券(含免費服務器)

阿里雲服務器2000元通用代金券,223元/3年(含免費服務器)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章