王 元,王志明
(1.南京郵電大學 通信與信息工程學院,江蘇 南京 210003;2.南京工程學院 通信與信息工程學院,江蘇 南京 211167)
監控作為管理云計算平臺的重要舉措之一,使得管理員能夠獲取系統運行的信息,從而調整自己的行為,提供更高的服務質量[1-4]。開源云平臺OpenStack有多個物理節點,不同物理節點之間在傳輸數據時會消耗一定的帶寬。而監控作為一種管理手段,不應該消耗過多的帶寬資源。因此,在OpenStack云平臺中構建合理的監控系統,該系統具有一定的預測能力,也就是說能夠預測下一時刻的數據,這樣可以減少物理節點之間的數據傳輸[5]。然而,監控系統的預測能力,即預測準確性,是至關重要的,同樣也是一個難點。
在OpenStack云平臺提供的Ceilometer項目的基礎上[6-8],設計并實現了一個監控系統,該系統通過在不同時刻采用不同的預測算法,從而更加準確地預測下一時刻的資源狀態。
近年來,國內外有很多學者都在研究云平臺中的預測算法,通過預測算法對下一時刻的數據進行監測。文獻[9]提出一種使用馬爾可夫鏈模型(Markov chain model,MCM)來預測監測時間間隔(MTI)的監測機制,基于預測狀態和作業處理時間,調整監視時間間隔。文獻[10]提出一種基于時間序列的預測技術,自適應動態調整數據采集的時間間隔。從歷史數據中學習,找到規律、數據的特征,以一定的可信度預測未來事件。
線性回歸分析預測是一種通過分析自變量和因變量之間的關系,構建變量間的線性回歸方程,通過該方程根據自變量的變化來預測因變量值的預測算法[11-12]。
OpenStack云平臺中的內存利用率如表1所示。

表1 內存利用率
將表1中的前五個數據作為訓練數據,后五個作為預測數據。在使用線性回歸算法進行預測時,得到的直線方程為y=25.267 84。預測后五個數據,若誤差容忍度為1,命中率為20%。預測結果見表2。

表2 線性回歸算法預測
線性回歸算法預測的結果呈正相關關系,可以在一定程序上預測數據,但是無法保證其精度。由于其直線的特性,對于某些變動比較大的數據,不能進行準確預測。因此,線性回歸無法適應于要求比較嚴格的系統。
馬爾可夫預測法是一種預測事件發生概率的方法,不僅能列出事件發生的各種可能結果,還給出了每一種結果發生的概率,即事件在預測期內出現該種結果的可能性程度。在馬爾可夫鏈模型中,事件在任何時間發生的概率是先前時間段發生的事件的概率函數[13]。
使用離散時間馬爾可夫鏈算法[14]對表1中的數據進行建模預測,狀態劃分情況如表3所示(轉移矩陣的每個狀態所表示的區間寬度為1)。預測后五個數據,當ETD=1時,命中率為50%。另外,由于在29這個狀態上沒有訓練數據,根據算法設定預測值是它自己的狀態。(注:如果預測失敗,小括號里的表示調整后的狀態)

表3 DTMC算法狀態劃分以及預測
從表3可看出,DTMC預測算法的狀態劃分對預測的命中率起著決定性作用,五個測試數據相差都不大,如果狀態劃分的分割點是26.440 5,命中率則達到70%。由此可看出,僅僅是因為狀態劃分的問題而造成的命中率只有40%。一個好的劃分不但能提高DTMC算法預測的命中率,而且還能降低算法的開銷。然而在云計算環境中,數據是經常變化的,一個固定不變的劃分會大大降低云計算環境中資源監控數據的命中率。
上一節介紹了線性回歸算法和DTMC算法并指出了它們在預測云計算監控數據上的缺陷,本節提出基于回歸和DTMC的混合算法L-D,對云計算環境的監控數據進行預測。
在云平臺環境中,虛擬系統對平臺資源的消耗和時間有很大關系,符合“潮汐”規律[15]。在高峰時間段內,資源消耗呈無規律變化,因此監控系統收集到的數據也是不穩定的,此時可以分成不同的時間段應用不同的預測算法進行解決。在系統比較繁忙的時候,采用馬爾可夫鏈預測算法對數據進行預測,而在其他時間段則采用線性回歸算法進行預測。算法流程如下:
(1)判斷ti是否處于系統繁忙時期,如果是,則按照馬爾可夫鏈方法進行處理,構建轉移概率矩陣;如果不是,則按照線性回歸處理。
(2)建立直線方程y=mean。
(3)使用直線方程y,計算{ti}與y的偏離值序列{tic}。
(4)根據{tic}以及精度要求分配狀態,數據如表4所示。當精度要求為1,直線y=25.241 3,TH=10時,數據被劃分為(-5,-2),[-2,-1),[-1,0),[0,1),[1,2),[2,5)。其中,當偏離程度超過5時,則需要重新開始計算直線方程。表4中,前五個數據是有效的(與直線的偏離值在TH范圍內),后五個數據是無效的(因為只有一個數據值與直線的偏離值在TH范圍內)。

表4 內存利用率及狀態劃分
(5)計算狀態轉移矩陣P,矩陣中第i行第j列的元素表示在訓練數據中從狀態i經一步轉移到狀態j的總次數,依據表4得出矩陣P:

(6)預測,根據系統當前時間決定使用哪個預測模型。如果是忙碌時間,則使用矩陣R進行預測;否則,選取合適的直線方程以及矩陣R2進行預測。當從狀態i轉移出去時,在第i行中選擇最有可能的下一個狀態(第i行中值最大的那一列)作為預測狀態。如i=3時,最有可能的下一個狀態是3,即留在原地。
(7)計算預測值,在選擇好狀態后,選擇該狀態所表示的區間的中點作為預測偏離值v(此處v=0.5)。
(8)計算最終預測值,根據使用的預測模型計算預測值,如果使用矩陣R進行預測,最終的預測值則是該狀態所表示的值區間的中位數;否則最終的預測值是該狀態所表示的值區間的中位數加上直線y的值。最終預測值為y+v(28.769 34),y是直線方程(y=25.241 3)。
當使用L-D算法對表1的數據進行建模預測時,得出直線方程y=28.269 34。然后根據計算得到的訓練數據與直線的偏離值劃分狀態,構建馬爾可夫轉移概率矩陣(TH=10時,數據被劃分為(-10,-1),[-1,0),[0,1),[1,10),狀態用0,1,2,3分別表示)。如表5所示,當ETD=1時,命中率為80%。(注:如果預測失敗,小括號里表示調整后的狀態)

表5 L-D算法狀態劃分以及預測
L-D算法的馬爾可夫矩陣的狀態空間雖然是固定的,但是通過相同的狀態來預測不同時刻的數據值不一定是相同的,它隨著直線的變化而變動。表5中馬爾可夫矩陣的狀態2表示的預測值是28.769 34,在未來某時刻,該狀態表示的預測值可能是58.634 2,它是根據直線方程變化的,而不是固定不變的。相比DTMC算法,L-D算法這種特性,在平臺突發性事件發生時(如虛擬機新建),無需擔心新的數據范圍未得到訓練而需要重新訓練模型,只需要調整直線方程即可,提高了預測的命中率。
文中部署了OpenStack云平臺,根據用戶設置的閾值,分別采用線性回歸預測算法、馬爾可夫鏈算法和混合算法對系統中的數據進行預測。如果實際的數據在設定好的閾值內,表明預測算法準確性高,因此可以丟棄該數據,避免數據傳輸。如果在閾值之外,則節點需要將數據傳輸到其他節點上,從而進行數據更新。
實驗使用內存和磁盤利用率來評估預測算法的性能。數據一致性測試結果如表6所示。

表6 數據的一致性測試
由表6可知,在三種算法中,混合算法比另外兩種預測算法能夠更加精確地預測下一時刻的數據,避免了不必要的網絡傳輸,降低了網絡資源的消耗。
分析和研究了云計算中的監控系統,提出在不同時間段采用不同的預測算法模型,即在高峰時采用馬爾可夫鏈算法,其他時間段采用線性回歸算法對系統進行監控預測。實驗結果表明,該算法的預測命中率更高,更能降低網絡傳輸開銷。