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