王 元,王志明
(1.南京郵電大學 通信與信息工程學院,江蘇 南京 210003;2.南京工程學院 通信與信息工程學院,江蘇 南京 211167)
監(jiān)控作為管理云計算平臺的重要舉措之一,使得管理員能夠獲取系統(tǒng)運行的信息,從而調整自己的行為,提供更高的服務質量[1-4]。開源云平臺OpenStack有多個物理節(jié)點,不同物理節(jié)點之間在傳輸數(shù)據時會消耗一定的帶寬。而監(jiān)控作為一種管理手段,不應該消耗過多的帶寬資源。因此,在OpenStack云平臺中構建合理的監(jiān)控系統(tǒng),該系統(tǒng)具有一定的預測能力,也就是說能夠預測下一時刻的數(shù)據,這樣可以減少物理節(jié)點之間的數(shù)據傳輸[5]。然而,監(jiān)控系統(tǒng)的預測能力,即預測準確性,是至關重要的,同樣也是一個難點。
在OpenStack云平臺提供的Ceilometer項目的基礎上[6-8],設計并實現(xiàn)了一個監(jiān)控系統(tǒng),該系統(tǒng)通過在不同時刻采用不同的預測算法,從而更加準確地預測下一時刻的資源狀態(tài)。
近年來,國內外有很多學者都在研究云平臺中的預測算法,通過預測算法對下一時刻的數(shù)據進行監(jiān)測。文獻[9]提出一種使用馬爾可夫鏈模型(Markov chain model,MCM)來預測監(jiān)測時間間隔(MTI)的監(jiān)測機制,基于預測狀態(tài)和作業(yè)處理時間,調整監(jiān)視時間間隔。文獻[10]提出一種基于時間序列的預測技術,自適應動態(tài)調整數(shù)據采集的時間間隔。從歷史數(shù)據中學習,找到規(guī)律、數(shù)據的特征,以一定的可信度預測未來事件。
線性回歸分析預測是一種通過分析自變量和因變量之間的關系,構建變量間的線性回歸方程,通過該方程根據自變量的變化來預測因變量值的預測算法[11-12]。
OpenStack云平臺中的內存利用率如表1所示。
表1 內存利用率
將表1中的前五個數(shù)據作為訓練數(shù)據,后五個作為預測數(shù)據。在使用線性回歸算法進行預測時,得到的直線方程為y=25.267 84。預測后五個數(shù)據,若誤差容忍度為1,命中率為20%。預測結果見表2。
表2 線性回歸算法預測
線性回歸算法預測的結果呈正相關關系,可以在一定程序上預測數(shù)據,但是無法保證其精度。由于其直線的特性,對于某些變動比較大的數(shù)據,不能進行準確預測。因此,線性回歸無法適應于要求比較嚴格的系統(tǒng)。
馬爾可夫預測法是一種預測事件發(fā)生概率的方法,不僅能列出事件發(fā)生的各種可能結果,還給出了每一種結果發(fā)生的概率,即事件在預測期內出現(xiàn)該種結果的可能性程度。在馬爾可夫鏈模型中,事件在任何時間發(fā)生的概率是先前時間段發(fā)生的事件的概率函數(shù)[13]。
使用離散時間馬爾可夫鏈算法[14]對表1中的數(shù)據進行建模預測,狀態(tài)劃分情況如表3所示(轉移矩陣的每個狀態(tài)所表示的區(qū)間寬度為1)。預測后五個數(shù)據,當ETD=1時,命中率為50%。另外,由于在29這個狀態(tài)上沒有訓練數(shù)據,根據算法設定預測值是它自己的狀態(tài)。(注:如果預測失敗,小括號里的表示調整后的狀態(tài))
表3 DTMC算法狀態(tài)劃分以及預測
從表3可看出,DTMC預測算法的狀態(tài)劃分對預測的命中率起著決定性作用,五個測試數(shù)據相差都不大,如果狀態(tài)劃分的分割點是26.440 5,命中率則達到70%。由此可看出,僅僅是因為狀態(tài)劃分的問題而造成的命中率只有40%。一個好的劃分不但能提高DTMC算法預測的命中率,而且還能降低算法的開銷。然而在云計算環(huán)境中,數(shù)據是經常變化的,一個固定不變的劃分會大大降低云計算環(huán)境中資源監(jiān)控數(shù)據的命中率。
上一節(jié)介紹了線性回歸算法和DTMC算法并指出了它們在預測云計算監(jiān)控數(shù)據上的缺陷,本節(jié)提出基于回歸和DTMC的混合算法L-D,對云計算環(huán)境的監(jiān)控數(shù)據進行預測。
在云平臺環(huán)境中,虛擬系統(tǒng)對平臺資源的消耗和時間有很大關系,符合“潮汐”規(guī)律[15]。在高峰時間段內,資源消耗呈無規(guī)律變化,因此監(jiān)控系統(tǒng)收集到的數(shù)據也是不穩(wěn)定的,此時可以分成不同的時間段應用不同的預測算法進行解決。在系統(tǒng)比較繁忙的時候,采用馬爾可夫鏈預測算法對數(shù)據進行預測,而在其他時間段則采用線性回歸算法進行預測。算法流程如下:
(1)判斷ti是否處于系統(tǒng)繁忙時期,如果是,則按照馬爾可夫鏈方法進行處理,構建轉移概率矩陣;如果不是,則按照線性回歸處理。
(2)建立直線方程y=mean。
(3)使用直線方程y,計算{ti}與y的偏離值序列{tic}。
(4)根據{tic}以及精度要求分配狀態(tài),數(shù)據如表4所示。當精度要求為1,直線y=25.241 3,TH=10時,數(shù)據被劃分為(-5,-2),[-2,-1),[-1,0),[0,1),[1,2),[2,5)。其中,當偏離程度超過5時,則需要重新開始計算直線方程。表4中,前五個數(shù)據是有效的(與直線的偏離值在TH范圍內),后五個數(shù)據是無效的(因為只有一個數(shù)據值與直線的偏離值在TH范圍內)。
表4 內存利用率及狀態(tài)劃分
(5)計算狀態(tài)轉移矩陣P,矩陣中第i行第j列的元素表示在訓練數(shù)據中從狀態(tài)i經一步轉移到狀態(tài)j的總次數(shù),依據表4得出矩陣P:
(6)預測,根據系統(tǒng)當前時間決定使用哪個預測模型。如果是忙碌時間,則使用矩陣R進行預測;否則,選取合適的直線方程以及矩陣R2進行預測。當從狀態(tài)i轉移出去時,在第i行中選擇最有可能的下一個狀態(tài)(第i行中值最大的那一列)作為預測狀態(tài)。如i=3時,最有可能的下一個狀態(tài)是3,即留在原地。
(7)計算預測值,在選擇好狀態(tài)后,選擇該狀態(tài)所表示的區(qū)間的中點作為預測偏離值v(此處v=0.5)。
(8)計算最終預測值,根據使用的預測模型計算預測值,如果使用矩陣R進行預測,最終的預測值則是該狀態(tài)所表示的值區(qū)間的中位數(shù);否則最終的預測值是該狀態(tài)所表示的值區(qū)間的中位數(shù)加上直線y的值。最終預測值為y+v(28.769 34),y是直線方程(y=25.241 3)。
當使用L-D算法對表1的數(shù)據進行建模預測時,得出直線方程y=28.269 34。然后根據計算得到的訓練數(shù)據與直線的偏離值劃分狀態(tài),構建馬爾可夫轉移概率矩陣(TH=10時,數(shù)據被劃分為(-10,-1),[-1,0),[0,1),[1,10),狀態(tài)用0,1,2,3分別表示)。如表5所示,當ETD=1時,命中率為80%。(注:如果預測失敗,小括號里表示調整后的狀態(tài))
表5 L-D算法狀態(tài)劃分以及預測
L-D算法的馬爾可夫矩陣的狀態(tài)空間雖然是固定的,但是通過相同的狀態(tài)來預測不同時刻的數(shù)據值不一定是相同的,它隨著直線的變化而變動。表5中馬爾可夫矩陣的狀態(tài)2表示的預測值是28.769 34,在未來某時刻,該狀態(tài)表示的預測值可能是58.634 2,它是根據直線方程變化的,而不是固定不變的。相比DTMC算法,L-D算法這種特性,在平臺突發(fā)性事件發(fā)生時(如虛擬機新建),無需擔心新的數(shù)據范圍未得到訓練而需要重新訓練模型,只需要調整直線方程即可,提高了預測的命中率。
文中部署了OpenStack云平臺,根據用戶設置的閾值,分別采用線性回歸預測算法、馬爾可夫鏈算法和混合算法對系統(tǒng)中的數(shù)據進行預測。如果實際的數(shù)據在設定好的閾值內,表明預測算法準確性高,因此可以丟棄該數(shù)據,避免數(shù)據傳輸。如果在閾值之外,則節(jié)點需要將數(shù)據傳輸?shù)狡渌?jié)點上,從而進行數(shù)據更新。
實驗使用內存和磁盤利用率來評估預測算法的性能。數(shù)據一致性測試結果如表6所示。
表6 數(shù)據的一致性測試
由表6可知,在三種算法中,混合算法比另外兩種預測算法能夠更加精確地預測下一時刻的數(shù)據,避免了不必要的網絡傳輸,降低了網絡資源的消耗。
分析和研究了云計算中的監(jiān)控系統(tǒng),提出在不同時間段采用不同的預測算法模型,即在高峰時采用馬爾可夫鏈算法,其他時間段采用線性回歸算法對系統(tǒng)進行監(jiān)控預測。實驗結果表明,該算法的預測命中率更高,更能降低網絡傳輸開銷。