尚聰聰,郝 佳,張彬彬,岳 昆
(云南大學 信息學院,昆明 650500)
基礎設施即服務(Infrastructure as a Service,IaaS)是云計算[1]的一種資源使用模式,云計算通過虛擬化技術向用戶提供計算、存儲等資源,用戶按需租用這些資源并支付費用.目前大部分云服務提供商,例如阿里云[注]Alibaba Cloud. https://www.aliyun.com/,2018/06/05.、亞馬遜云[注]Amazon EC2. http://aws.amazon.com/ec2/,2018/06/05.等,都是以虛擬機的形式,向用戶提供可選的若干種CPU、內存以及網絡帶寬等資源配置套件[2].這種業(yè)務模式,并未真正實現(xiàn)資源的按需分配,難以適應動態(tài)變化的資源需求,導致資源利用率低下.為了提高資源利用率以及實現(xiàn)按應用需求分配虛擬機所需資源,首先需要準確預測特定虛擬機特征配置下的性能[3].
然而,準確預測虛擬機特定特征配置下的性能,存在以下困難.一方面,虛擬機的性能與特征之間存在復雜的非線性依賴關系[4,5],虛擬機的各個特征之間相互作用共同決定了虛擬機性能.另一方面,由于虛擬機上所運行的負載具有復雜性、動態(tài)性以及不確定性,這也增加了虛擬機性能預測的難度.其中,應用負載的復雜性,是指多個虛擬機上的應用負載所需資源不同,可能會導致物理主機的資源使用超過所能承受的峰值;應用負載的動態(tài)性,是指不同負載的運行情況會隨著時間變化而改變,可能會產生多個應用之間的通信,影響虛擬機性能;應用負載的不確定性,是指應用負載在不同時刻所需的資源大小不確定,可能會導致固定資源特征分配下虛擬機的性能產生波動.
學界已開展了很多虛擬機性能預測的研究,一些研究通過建立虛擬機特征和性能之間的線性模型,來實現(xiàn)虛擬機性能預測.文獻[6]提出基于硬件計數器的虛擬機性能估算方法;文獻[7]提出基于指數平滑模型的虛擬機預測算法.然而,雖然線性模型使用簡單,但它難以有效擬合特征和性能之間的非線性依賴關系,從而導致模型的預測結果不夠理想.
另一些工作通過建立虛擬機特征與性能之間的非線性關系模型來實現(xiàn)性能預測.其中,文獻[8]提出基于奇異值近似分解的虛擬機性能預測方法,分析虛擬機性能的變化趨勢,但難以將結果進行直觀展示;文獻[9]基于馬爾科夫方法來預測虛擬機特定狀態(tài)下的性能,但對時間序列太過依賴;文獻[10]提出基于遺傳優(yōu)化的人工神經網絡方法來預測不同配置組合情況下虛擬機性能,并從中找出具有最小資源開銷的特征配置組合;文獻[11]提出基于人工神經網絡的迭代模型來預測給定特征配置下的虛擬機性能,雖然可以對虛擬機特征和性能之間存在的非線性關系建模,但耗費大量計算資源、且容易出現(xiàn)過擬合.綜上所述,上述方法和模型中,虛擬機特征和性能之間的不確定性依賴關系仍然難以有效表達,且當虛擬機性能產生波動時,這些模型則無法準確預測這種性能波動情況.
文獻[12]提出基于貝葉斯網(Bayesian networks,BN)來對虛擬機特征和性能之間存在的不確定性依賴關系建模的方法,用以虛擬機性能評估.貝葉斯網模型用條件概率表達各個信息要素之間的相關關系,能在有限、不完整、不確定的信息條件下進行學習和推理.BN是一個有向無環(huán)圖(Directed Acyclic Graphic,DAG),圖中的節(jié)點表示隨機變量,節(jié)點間的邊表示變量之間的依賴關系.每個節(jié)點都有一張條件概率表(Conditional Probability Table,CPT),用來刻畫這種依賴的程度.BN能夠有效地表達虛擬機各個特征以及特征與性能之間存在的非線性依賴關系,以及這種依賴關系的強弱,基于BN可進行概率推理計算[13].
然而,對于一般的BN模型來說,模型的構建依賴于數據的訓練結果,當虛擬機特征取值的組合未出現(xiàn)在訓練數據集中時,BN便無法預測這些特征所對應的性能.此外,當影響虛擬機性能的特征節(jié)點數量較多時,會導致性能節(jié)點的CPT組合情況復雜,增加參數計算以及性能預測的復雜性.
因此,本文采用一種帶分類參數的BN模型(Class parameter augmented BN,CBN).該模型首先對虛擬機進行分類,然后基于分類結果與對應的虛擬機性能值,構造CBN模型以實現(xiàn)對任意特征配置下的虛擬機性能預測.經過對常見的分類模型比較,基于集成學習的隨機森林(Random Forest,RF)模型與其他分類算法相比,能夠處理高維度的復雜特征數據,預測速度快且準確率高,還能夠平衡不均衡數據的預測誤差,具有分類結果穩(wěn)定且不易過擬合等優(yōu)點[14].因此,本文采用隨機森林作為CBN模型的分類器.
綜上,本文的主要工作包括:
1)基于虛擬機特征數據訓練隨機森林模型作分類器.
2)基于虛擬機的分類和性能數據,訓練CBN模型,用于表達虛擬機特征和性能之間的依賴關系.
3)基于CBN的概率推理預測任意虛擬機特征配置下的虛擬機性能和性能波動情況.
本文第2節(jié)給出CBN模型的構造方法,第3節(jié)給出基于CBN預測虛擬機性能的方法,第4節(jié)給出實驗結果,第5節(jié)總結全文內容并展望將來的工作.
影響虛擬機性能的特征包括硬件特征、軟件特征以及運行時環(huán)境特征[9].這些特征的不同組合值,構成不同配置的虛擬機.當某個應用在特定的虛擬機配置上運行時,應用的運行時間可以反映當前虛擬機的性能.為了能夠方便地獲取虛擬機特征-性能數據,我們把應用在特定特征配置虛擬機上的運行時間作為當前虛擬機的性能值.
假設共有m種可調整的虛擬機特征,其中包括虛擬CPU的個數、內存大小、同時運行的虛擬機個數等,分別表示為V1,V2…,Vm.假設每一個特征都有i種取值情況,如特征Vm的取值為vm1,vm2,…,vmi,則m個特征可構成im種不同虛擬機特征配置.本文通過RF分類算法,將im種虛擬機分為r個類別.在CBN模型中,m個虛擬機經過分類后構成一個分類節(jié)點Z,Z有r種可能取值,表示為z1,z2,…,zr.下面給出CBN的定義.
定義1.CBN為一個有向無環(huán)圖,表示為GCBN=(U,E,θ),其中:
·U為GCBN中的節(jié)點集合,包括虛擬機分類節(jié)點Z和虛擬機性能節(jié)點T,即U=Z∪T.
·E表示U中各個節(jié)點之間邊的集合.用e(Ui,Uj)來表示一條由節(jié)點Ui指向節(jié)點Uj的有向邊,則e(Ui,Uj)∈E,i≠j.在CBN模型中,只包含一條由分類節(jié)點Z指向性能節(jié)點T的邊.
·θ表示GCBN中各個節(jié)點的參數集合,由各個節(jié)點的條件概率表構成,度量了虛擬機性能節(jié)點T對虛擬機分類節(jié)點Z的依賴程度的大小.
在CBN中,無父親的節(jié)點Z的參數為邊緣概率分布值P(Z),節(jié)點Z的子節(jié)點T的參數值為條件概率分布值P(T|Z).P(Z)和P(T|Z)構成了CBN的參數θ.
CBN的構建包括結構構建和參數計算,結構構建部分包括RF分類器的訓練,以及根據分類結果的結構學習;參數計算部分包括對虛擬機分類節(jié)點Z和特征節(jié)點T的后驗概率計算.
隨機森林回歸算法以CART決策樹[14]為基礎,利用Bootstrap重采樣方法,從含有L個樣本的訓練數據集D中,有放回地抽取s個樣本組成新的樣本集合S,該樣本集合稱為Bootstrap樣本.分別對每個Bootstrap樣本構建一棵CART決策樹,最終根據所有決策樹分類結果進行投票,將投票結果作為隨機森林的最終分類結果[15].
構建決策樹時,我們選用基尼系數(GINI)作為當前虛擬機特征分裂的依據.選擇具有最小Gain_GINI值的虛擬機特征Vm及其相應的特征值vmi,作為當前CART分類樹的最優(yōu)分裂節(jié)點及其相應的分裂特征值.Gain_GINI的值越小,則證明被分裂后的樣本“純凈度”越高,則選擇該特征值作為分裂依據的效果越好.對于含有s個虛擬機特征-性能樣本的集合S來說,它的GINI系數計算方式如式(1)所示.
(1)
在(1)中,pk表示虛擬機分類為第k類的概率,即Z為zk(k∈{1,2,…,r})的概率值.
對于含有s個樣本的集合S來說,根據虛擬機特征Vm的第i個屬性值,即vmi,將S劃分為S1和S2兩部分后,Gain_GINI的的計算方式如(2)所示.
(2)
其中,n1和n2分別為S1和S2中樣本的個數,GINI(S1)和GINI(S2)的計算方式類似于公式(1).對于特征Vm來說,通過公式(2)分別計算當選擇vm1,vm2,…,vmi作為分裂特征值時,對應的Gain_GINI值的大小,并選擇使得Gain_GINI最小的特征值,作為虛擬機特征Vm的最優(yōu)分裂值.即,
(3)
對于樣本集S來說,計算所有特征Vm的最優(yōu)二分方案,選擇其中的最小值,作為樣本集合S的最優(yōu)二分方案,即,
(4)
上述方案中,虛擬機特征Vm和它的特征值vmi,即為樣本S的最優(yōu)分裂特征及其最優(yōu)分裂特征值.
通過上述方法,可構造一棵CART決策樹.當給定一組虛擬機特征配置時,可用該樹預測出當前特征配置的所屬類別.當隨機森林中一共包含t棵CART分類樹時,它們的分類結果的投票結果即為虛擬機的分類.
綜上,虛擬機分類的隨機森林模型構建步驟如下:
1)從訓練數據集D中,采用Bootstrap方法抽取s個數據樣本作為第i棵樹的訓練集Dsi(0
2)如果queue非空,則取出一個節(jié)點node.基于node中的虛擬機特征-性能數據樣本Dnode和m個虛擬機特征節(jié)點,依次計算特征節(jié)點Vj(1≤j≤m)的每一個特征值vjk(1≤k≤r)所對應的Gain_GINI值大小,并找出最小的Gain_GINI值min和對應的特征節(jié)點Vj和特征值vjk.如果min大于閾值q,則根據分裂特征Vj和特征值vjk將當前節(jié)點分裂出兩個孩子節(jié)點,并將兩個孩子節(jié)點加入隊列queue,否則不做操作.重復執(zhí)行上述過程,直到queue為空,完成當前決策樹的構造.
3)重復步驟1)和2),直至建立t棵CART分類樹,最終構成虛擬機分類的隨機森林模型RF.
算法1具體描述了上述思想.
算法1.基于隨機森林的虛擬機分類
輸入:D:虛擬機特征-性能數據集;
L:虛擬機特征-性能數據集中的數據條數
t:隨機森林中決策樹的數量
m:虛擬機特征的個數
r:虛擬機特征的取值個數
q:GINI系數最小的閾值
Gm[m]:用于存儲虛擬機特征的最小Gain_GINI值
Vm[m]:用于存儲最小Gain_GINI值對應的特征值
Gr[r]:用于存儲同一個虛擬機特征按不同取值分裂的Gain_GINI值
Vr[r]:用于存儲虛擬機一個特征所有取值
輸出:RF:基于隨機森林的虛擬機分類模型
步驟:
1.fori←1 totdo
2.Dsi←Bootstrap(S,D)//為第i棵樹選擇樣本Dsi
3.root←makeNode(Dsi)//集合Dsi作為根節(jié)點
4.queue←root//將root加入隊列
5.whilequeue!=Φdo
6.node←pop(queue)//隊列取出一個節(jié)點
7.Dnode←OutData(node)//獲取當前node的數據
8.forj←1 tomdo
9.r←CountNum(Dnode,j)//當前特征取值個數
10. fork←1 tordo
11.Gr[k]←Calculate(Gain_GINI(Dnode,j,k))
//計算虛擬機特征Vj的取值為vjk時的Gain_GINI值的大小存儲到數組Gr[r]中
12.Vr[k]←findValue(Dnode,j,k)//第k個特征值
13.k←k+1
14.endfor
15.Gm[j]←findNum(MIN(Gr[r]))
//找到Gr[r]數組中最小的Gain_GINI值
16.Vm[j]←relevantValue(Gm[j],Gr[r],Vr[k])
//找到最小Gain_GINI值對應的特征取值
17.j←j+1
18.endfor
19.min←findNum(MIN(Gm[m]))//最小Gain_GINI值
20.ifmin>q
21.Vj←relevantFeature(min,Gm[m])
//找到最小Gain_GINI值對應的特征
22.vjk←relevantValue(min,Gm[m],Vm[j])
//找到min對應的虛擬機特征的取值
23.lchild,rchild←makeNode(split(node,Vj,vjk))
//根據分裂特征和分裂值,將節(jié)點node分成左右節(jié)點
24.queue←lchild,rchild//將節(jié)點存儲到隊列中
25.endif
26.endwhile
27.RF←root//將root加入隨機森林中
28.endfor
29.returnRF
基于算法1可實現(xiàn)對多個虛擬機進行分類.當給出一組未知虛擬機特征時,分別由隨機森林中的t棵樹分類,分類結果按少數服從多數進行投票,投票結果即表示該組特征的分類結果.算法1運行時,假設每一棵決策樹需要計算m個特征的Gain_GINI值系數,則基于含有N個樣本的訓練數據集D,來構建含有t棵決策樹的隨機森林時,該算法的時間復雜度為O(t(mt*logN)).
例1.
使用表1中的數據,根據算法1構建CART決策樹.首先計算每個屬性的每個取值的Gain_GINI值.根據公式(2)可以算出:
CPUnum取1為分裂值時,Gain_GINI值=
2/4(1-(1^2+0^2+0^2))+2/4(1-((1/2)^2+(1/2)^2))=1/4
CPUnum取2為分裂值時,Gain_GINI值=1/4
MemorySize取1024為分裂值時,Gain_GINI值=1/2
MemorySize取512為分裂值時,Gain_GINI值=1/2
CPUFreq取3.3為分裂值時,Gain_GINI值=1/4
CPUFreq取3.6為分裂值時,Gain_GINI值=1/4
表1 虛擬機特征與分類實例
Table 1 Example for classification of virtual machines
CPUnum(個)MemorySize(MB)CPUFreq(GHz)Z15123.3z1210243.6z325123.6z2110243.3z1
根據算法1,我們選取Gain_GINI值最小的屬性和取值作為最優(yōu)分裂特征和分裂值.本例我們選擇CPUnum是否取1作為分裂特征和分裂值,將數據分為實例分為兩部分.第一部分包含z1與z4,第二部分包含z2與z3.對于第一部分,類別標簽只有z1,所以無需再分.對于第二部分重復上述步驟,得到MemorySize是否取1024為最優(yōu)分裂特征和分裂值.由此構建出如圖1所示的決策樹.
圖1 CART決策樹實例Fig.1 An example of CART decision tree
根據先驗知識,可確定虛擬機特征將對虛擬機性能產生不確定性影響,且它們之間存在相互依賴關系.所以CBN的結構中只存在一條由Z指向T的有向邊,即e(Z,T).基于算法1可將所有的虛擬機分為r個類別,即Z?{z1,z2,…,zr},而性能節(jié)點有j種取值,即T1,T2…Tj.例1是一個CBN的特征選擇以及結構構造示例.
待分類的虛擬機特征為虛擬CPU個數(CPUnum)、內存大小(MemorySize)、同時運行的虛擬機個數(coVMS)和物理主機的CPU主頻(CPUFreq),取值情況如表2所示.運行算法1后,這些不同的特征配置被分為4個類別,即z1,z2,z3,z4,它們所對應的性能值分別為T1,T2,T3,T4.表1展示了具體取值情況.
基于這4個特征的分類結果Z和所對應的性能值T,可以構造CBN的結構.
例2.
對于CBN的參數計算來說,我們運用最大似然估計(Maximum Likelihood Estimation,MLE)來計算CBN中各個節(jié)點的參數,即節(jié)點的CPT.計算公式如(5)所示.
(5)
其中,θijk表示當節(jié)點Ui取值為k,且Ui的父節(jié)點取值為j時節(jié)點Ui的參數.Num((Ui=k),Pa(Ui=j))表示當節(jié)點Ui取值為k,且Ui的父節(jié)點取值為j時,虛擬機特征-性能數據集D中的數據條數.而Num(Pa(Ui=j))表示Ui的父節(jié)點取值為j時的數據條數.在CBN中,所有節(jié)點的CPT,構成了CBN的參數值θ.
表2 虛擬機特征、分類與性能實例
Table 2 Example for features and the classification of virtual machines
CPUnum(個)MemorySize(MB)coVMS(個)CPUFreq(GHz)ZT151213.3z1T12102423.6z2T23150033.6z3T34204813.3z4T4
基于CBN結構及參數值,可以預測任意虛擬機特征配置下的的性能.當某一組虛擬機特征配置為{v11,v21,…,vm1}時,經過RF算法分類后,該虛擬機被分為類別zi.基于CBN可得到zi所對應的虛擬機性能值分別為T1,T2,…,Ti的條件概率.具有最大條件概率值的性能即為CBN預測的虛擬機性能值.
例如,CBN的結構構建和參數計算情況如圖2所示.圖中節(jié)點Z為虛擬機分類節(jié)點,所有的虛擬機特征配置被分為3個類別,即z1,z2和z3,經過計算后,這三個類別的取值概率分別為0.1,0.4和0.5.而虛擬機的性能節(jié)點T的取值共有3種,通過MLE可計算相應類別下的條件概率值.圖1中節(jié)點T的CPT展示的是當虛擬機類別為z1時,性能分別為T1,T2和T3的條件概率值.
圖2 CBN示例Fig.2 Example for CBN model
當Z的取值為zi時,性能節(jié)點T的取值為Ti的條件概率計算公式如(6)所示.
(6)
使用RF算法對虛擬機的某一組特征進行分類后,結果記為zi,然后用CBN分別預測當前配置性能為T1,T2,…,Ti的概率.預測過程即是計算P(T=T1|Z=zi)),P(T=T2|Z=zi)),…,P(T=Ti|Z=zi))的過程.最終,我們選擇具有最大后驗概率的性能值,作為當前配置下虛擬機性能的預測值.
算法2描述了具體的性能預測過程.
算法2.基于CBN的虛擬機性能預測
輸入:v11,v21….vm1:待預測虛擬機的虛擬機配置
j:性能值個數
Tj[j]:存儲虛擬機所有的性能值
Pj[j]:用于存儲每個性能值的條件概率
輸出:X:CBN預測的最大概率值
Ti:基于CBN所預測的性能值
步驟:
1.zi←RF(v11,v21….vm1)
//RF根據m個特征取值得到分類結果
2.fork←1 tojdo
3.Pj[k]←Calculate(P(T=Tk|Z=zi))
//分類結果為zi時,性能為Tk的條件概率
4.endfor
5.X←findMax(Pj[j])//找到性能預測最大概率
6.Ti←findPerformance(X,Pj[j],Tj[j])
//根據X找到對應的性能值,作為性能預測值
7.returnXandTi
基于算法2,當虛擬機分類為zi時,分別計算它所對應的j個性能值的條件概率,則算法2的時間復雜度為O(j).
例3.
假定某臺虛擬機配置為CPUnum為2個,MemorySize為1024MB,CPUFreq為3.3GHz.根據例1的出的CART決策樹可以得到類別為z3.再根據相應的CPT表,查詢z3的性能值,就可以得到該虛擬機的性能預測值.
實驗環(huán)境如下:Intel(R)Core(TM)i5-6200U處理器;2.40GHz的CPU主頻,8GB內存,Windows10 64位操作系統(tǒng),Python 3.5.2:Anaconda 4.2.0(64-bit)為開發(fā)平臺.
為了測試本文提出的CBN模型在預測虛擬機性能時的有效性和準確性,我們使用阿里云公布的批處理任務運行數據集BatchInstance做測試[注]Alibaba ClusterData, https://github.com/alibaba/clusterdata, 2018/08/27..該數據集包含了部署在阿里云中的某個實際運行的集群(共包含13000臺物理主機)上的虛擬機,在12個小時內運行批處理任務的信息統(tǒng)計情況.這個數據集共有34762條數據,其中包含了任務開始與結束的時間戳、任務ID、CPU利用率、內存利用率等特征,以及所對應的任務運行時間.
為了驗證CBN預測的準確性,選擇任務ID、最多CPU利用個數、平均CPU 利用個數、最大內存利用情況以及平均內存利用情況,作為虛擬機待分類特征,分別表示為job_id,real_cpu_max,real_cpu_avg,real_mem_max,real_mem_avg.同時,用虛擬機上任務的響應時間response_time作為待預測的虛擬機性能.我們將所有虛擬機性能數據分為20個類別,分別表示為C1,C2,…,C20.采用十折交叉驗證的思想,將數據均分為10份,輪流將其中9份作為訓練數據集來建立CBN模型,一份作為測試數據集,進行模型構建和驗證.每次驗證都能得到對應的虛擬機性能預測準確率.我們把實驗分為以下兩類,首先按照特征取值對虛擬機分類,采用隨機森林的分類結果與決策樹的分類結果做對比,驗證隨機森林模型對虛擬機分類的準確性.其次,將CBN對虛擬機性能的預測結果和線性模型的結果做對比,說明CBN對于虛擬機性能預測的準確性.
為了驗證隨機森林算法對虛擬機分類的準確性,首先根據BatchInstance數據集中的response_time的大小,人為地將不同虛擬機特征配置分為20個類別.基于十折交叉驗證的思想[16],將數據均分為10份,輪流將其中9份作為訓練數據,1份作為測試數據,基于這10組數據分別運行隨機森林算法和決策樹分類算法,并統(tǒng)計兩個算法分類的準確率.圖3是兩個算法分類的準確性對比情況,橫坐標表示實驗結果,縱坐標表示準確率.
圖3 隨機森林和決策樹的平均分類準確率Fig.3 Classification accuracy rate of random forest and decision tree
從圖3中,可以看出,隨機森林算法在進行虛擬機分類時,準確率平均可以達到80.87%,而決策樹的分類準確率平均只有25.05%.由此可以說明我們提出的基于隨機森林的虛擬機分類算法具有較高的準確率.另外,十組數據中,隨機森林算法分類準確率最大值與最小值之差為1.1%,而決策樹算法為1.9%.由此可以說明隨機森林算法對數據的適應性更高.
為了驗證隨著數據量的增長,兩個模型的分類準確率是否有所變化,我們做如下測試:將數據集以5000為一個增長單位,依次驗證數據量為5000、10000、15000、20000、25000、30000條時,隨機森林和決策樹對虛擬機分類的準確性.結果如圖4所示.
圖4 分類模型準確率與數據量變化關系對比Fig.4 Relationships between classification model and amount of data
從圖4中可以得出,對虛擬機分類時,隨機森林算法和決策樹算法分類的準確率均隨著數據量的增長而增長.隨著數據量從5000增長到30000,隨機森林算法的分類準確率提高了10.8%,而決策樹算法的分類準確率提高了6.4%.
為了驗證CBN模型預測虛擬機性能的準確性,我們用CBN的預測結果和線性模型的預測結果對比說明.圖5為基于十折交叉驗證,用CBN和線性模型來預測虛擬機性能的準確率.從圖5可以得出,線性模型在預測虛擬機性能時,平均準確率只能達到22.7%.而CBN模型在預測虛擬機性能時,平均準確率達到76.36%.
圖5 CBN模型和線性模型預測結果準確率Fig.5 Prediction accuracy rate of CBN and linear model
同樣地,將數據量分別設置為5000、10000、15000、20000、25000、30000條時,對比CBN和線性模型的虛擬機性能預測準確性.結果如圖6所示.
圖6 性能預測準確率與數據量變化對比Fig.6 Relationship between accuracy of CBN and amount of data
圖6中可以看出,CBN模型對于虛擬機性能的預測準確率遠高于線性模型,且準確率隨著數據量的增長而增長.當數據量從5000增加到30000時,CBN模型的預測準確率提高了12%.而線性模型的預測準確性卻沒有太大改變,最高的預測準確率只達到了24%.
圖7 CBN預測概率分布與實際概率分布Fig.7 CBN predictions and experimental data distribution
由于CBN可以預測出虛擬機性能的波動情況,我們隨機選擇四組數據,用CBN推理出各個可能取得性能值的概率分布情況,并用推理結果和實際數據的分布情況作對比,驗證CBN預測的虛擬機性能概率分布是否和實際情況相符合.具體情況如圖7所示,圖中性能值為虛擬機上應用的運行時間.
從圖7中可以看出,CBN預測虛擬機性能的結果,與實際數據的分布情況相符合.
為了驗證CBN預測的虛擬機性能分布情況是否與實際的數據分布情況相符,分別計算以上四組數據中,最大概率估計值相對于從實際數據中統(tǒng)計得到的概率值的誤差和相對誤差.
誤差的計算方式為error=PC-PS,而相對誤差的計算方式為relativeerror=|PC-PS|/PS,PC表示由CBN模型所預測得到的性能概率值,PS表示從實際數據統(tǒng)計出來的性能概率值.計算結果如表3所示,為了區(qū)分4組數據,使用1,2,3,4為4組數據編號.
表3 CBN預測結果的誤差與相對誤差
Table 3 Error and relative error of CBN predictions
數據集responsetime/sPCPSerrorrelativeerror1400.610.60.011.67%2400.70.660.069.01%3200.790.750.045.33%4500.770.750.022.66%
從表3中可以看出CBN對于虛擬機性能分布概率的預測誤差中,相對誤差最低的只有1.67%,而最大的誤差達到9.01%.通過計算,可以得出CBN預測的平均誤差為:0.0325,而相對誤差的平均值為:4.67%.
通過以上實驗,驗證了我們所提出方法在虛擬機分類,以及虛擬機性能預測時的有效性和準確性.
本文針對虛擬機特征與性能之間存在不確定性依賴關系,導致虛擬機性能難以被準確預測的問題,提出了一種基于帶分類參數的BN模型,來實現(xiàn)虛擬機性能預測.該模型克服了傳統(tǒng)BN對于訓練集中未出現(xiàn)過的數據,無法進行預測的局限性,以及當虛擬機特征節(jié)點過多時,性能預測的復雜度增加、準確率下降的情況.實驗結果表明本文提出的方法預測虛擬機性能的高效性和準確性.
然而,本文提出的隨機森林模型是將虛擬機作為一個整體進行分類,針對虛擬機不同類型的特征差異性所導致的分類誤差尚未充分考慮.因此,在后續(xù)方案中,我們考慮將多個虛擬機的分類細化,以實現(xiàn)更加準確地預測虛擬機的性能.