李旭晴
(長治學院 沁縣師范分院,山西 長治 046400)
隨著云計算技術的發(fā)展,傳統(tǒng)的信息產業(yè)變革使得云計算的規(guī)模越來越大,同時,云數(shù)據(jù)中心的規(guī)模迅速增加,每個云計算中心的能耗也在不斷增加,能耗變得越來越巨大[1-3]。云計算中的負載預測技術是降低云計算中心能耗的方法之一。當負載恒定時,如果可以準確地預測下一階段的負載情況,則可以適當?shù)胤峙滟Y源。同時,可以在滿足服務水平協(xié)議(SLA)時關閉某些計算機,以減少云中心能耗[4-5]。但是,與網(wǎng)格計算和高性能計算相比,云計算的任務多變。有學者比較了云計算和網(wǎng)格計算的負載曲線,發(fā)現(xiàn)云任務長度僅為網(wǎng)格任務長度的[1/20,1/2]。因此,云計算的負載曲線更加陡峭,增加了建模和預測云計算負載的難度[6]。
已有學者對云計算中心中的負載預測問題進行了大量研究[7]。預測方法主要分為三類,第一類為傳統(tǒng)統(tǒng)計,如自回歸算法、自回歸綜合移動平均算法(ARIMA)等;第二類為智能算法、神經網(wǎng)絡(NN)、SVM算法等;第三類是混合算法,例如,將Kalman濾波器與SVM結合的算法,以及將相空間重構與進化相結合的算法[8-10]。就單一預測算法而言,有許多相對成熟的預測算法。同時也可以使用貝葉斯模型對云計算中心的CPU和內存進行負載預測,但是這只能預測未來一段時間內的平均負荷,而不是實際負荷值。還有學者提出了一種使用資源重定向機制的新的容量分配算法,但是該模型針對的是特定的資源使用方案,并且不具有通用性[11]。近年來,已經研究使用了混合預測算法,如針對主機負載急劇變化和云中的大量噪聲,可以將相空間重構方法和分組數(shù)據(jù)處理方法結合在一起。所提出的方法可以減少累積誤差,但是當考慮SLA時,進化算法的效率較低。有學者提出了一種基于卡爾曼濾波器的支持向量機模型,用于在云中進行負載預測,但是權重系數(shù)的選擇只是從小到大的簡單增加,難以反映云中的負荷特性[12]。近年來,也出現(xiàn)了一些新的混合方法,如模糊理論和蝙蝠算法變換等已被用于負荷預測[13]。綜上所述,現(xiàn)有方法仍然存在以下缺點,單一預測算法在某些情況下可以預測云計算的負荷,但是其預測精度不高,也無法增加預測長度;混合預測算法在預測精度和長度上都有一定的提高,但是將其預測結果應用于資源分配還存在一定差距,另一方面,混合算法的操作相對較長;近年來,諸如WT等的新型混合算法顯示出了很好的預測效果,但主要用于風電功率預測,在云計算負荷預測領域的應用很少[14-15]。
將蝙蝠算法(BA)與支持向量機(SVM)相結合,提出了一種蝙蝠算法支持向量機(BASVM)模型。該模型結合了WT分析輸入信號的周期和頻率的優(yōu)勢以及SVM的非線性回歸分析特性,使輸入信號的回歸分析更加有效。然后提出了一種基于BASVM的云計算負荷預測算法。最后,使用Google數(shù)據(jù)集進行了實驗,證明了與SVM、自回歸綜合移動平均(ARIMA)和自適應神經模糊推理系統(tǒng)(ANFIS)算法相比,該算法的預測結果和準確性得到了顯著提高。
本文提出的BASVM模型由WT和SVM組成。該模型利用WT的時間序列分解特征,用蝙蝠算法函數(shù)代替SVM的核函數(shù),以提高負荷序列的回歸分析精度。同時,云平臺中的負載變化是非線性、不穩(wěn)定和隨機的。因此,根據(jù)云中的負載變化特征,使用BASVM預測負載更為有效。
在云計算環(huán)境中,可以收集的資源序列主要包括CPU利用率cpu,內存利用率radio mem,網(wǎng)絡負載利用率radio bw等。由于用戶在云中提交具有隨機性和多樣性的任務,因此服務器的加載時間序列始終具有非線性、不穩(wěn)定和隨機的特征。但是云中服務器的負載時間序列具有一定的規(guī)律性。因此,可以通過歷史負荷數(shù)據(jù)預測當前負荷。
定義1三維向量L=(cpu,men,bw)表示云計算中心的負載,包括CPU利用率,內存利用率和網(wǎng)絡帶寬利用率三種負載類型。
定義2設向量Ht=[Lt-D,Lt-D+1,…,Lt-1]T表示歷史加載序列,其中t表示當前時間,D表示嵌入維數(shù),并由數(shù)據(jù)樣本的自相關系數(shù)確定。
在本文提出的算法中,將歷史載荷序列用作輸入向量,并使用BASVM模型通過回歸方法進行分析。
通過對云計算平臺中負載的深入分析,可以知道負載時間序列具有非線性、不穩(wěn)定和隨機的特征。通用的研究方法很難描述和分析載荷時間序列。支持向量回歸的基本思想是設置一個核函數(shù),該函數(shù)可以將輸入數(shù)據(jù)映射到高維特征空間,在此基礎上,進行空間線性回歸分析。將非線性問題轉換為線性問題可以降低算法的復雜度。同時,SVM具有良好的泛化能力和出色的性能,在分析云計算負載序列方面具有獨特的優(yōu)勢。通過構造母蝙蝠算法函數(shù),WT可以保留原始序列的時間和頻率特性,同時將時間序列分解為一組基本序列。它能進行深入的挖掘,特別是時間序列中的變化,此外,對于多尺度的時間序列變化區(qū)域,支持向量回歸也能預測其發(fā)展趨勢。WT可以在時域和頻域中同時定位輸入信號,時變信號具有獨特的優(yōu)勢。因此,將WT與SVM結合可以充分發(fā)揮兩者的優(yōu)勢,并且可以更有效地對云負載的歷史序列進行回歸分析。
給定樣本集(x1,y1),…(xi,yi)…(xN,yN),其中xi∈x?Rn是樣本集的輸入,yi是分類的標記(yi={-1,1})。在此基礎上,引入函數(shù)ε(不敏感損失函數(shù)),轉化問題為極小值,約束條件如公式(1)所示:
s.t.yi-wΦ(xi)-b≤ε+ξi
(1)


(2)
因此,支持向量機的回歸決策函數(shù)如公式(3)所示。
(3)

蝙蝠算法基函數(shù)(WBF)是WT中的重要函數(shù),它由蝙蝠算法序列組成,并且可以按翻譯的規(guī)模和時標構成一堆函數(shù)。不同的WBF對輸入處理的重視程度不同,結果也不同,有時相差很大。
(4)
在公式(4)中,γ是高斯函數(shù)的參數(shù),k是控制WBF形狀的參數(shù)。通過引入變量k,蝙蝠算法核函數(shù)的形狀將不會固定為一種形狀。當k=0時,WBFψ(x)成為徑向基函數(shù)核函數(shù),當k=1.5時,WBFψ(x)在區(qū)間[-1,1]上近似于Mexhat核函數(shù)。令α∈R表示W(wǎng)T中的翻譯因子,就可以得到滿足公式(5)所示的核函數(shù)平移不變性的平移不變核函數(shù)。
(5)
參數(shù)k可以提高支持向量機的泛化能力,對具有不同特征的樣本點進行回歸分析可以獲得更好的結果。因為WT和SVM都具有關鍵的內核功能,所以通過將它們結合起來,回歸分析可以對輸入序列更有效。然后,通過將(5)代入(3),可得到SVM的決策函數(shù),如公式(6)所示:
(6)
在分析了云計算負載序列之后,提出了基于BASVM的云計算負載預測模型。輸入空間為Ht,當前云計算負載為Lt=(cupt,memt,bwt),這是通過對歷史負載序列Ht進行分析和計算得出的。公式(7)是云計算負載預測模型的決策函數(shù)。
(7)
式中,Ht,i表示Ht的jth元素,而Hi,j表示ith訓練樣本Hi的jth元素。該模型利用(2)獲得所需參數(shù),并使用公式(7)計算時間t處的云計算負載值。
蝙蝠算法支持向量機負荷預測(BASVMLF)算法的主要思想如下。首先,設置BASVM模型的參數(shù)組(k,γ,C,ε),確定BASVM模型。然后將訓練樣本用于訓練BASVM模型,并通過公式(2)和輸入訓練樣本獲得BASVM模型中的一些關鍵參數(shù)。最后,通過公式(7)獲得云計算負荷值。
考慮到云計算負載訓練樣本的序列長度為l,將其分割為間隔s,并且N=l/s代表樣本的總段數(shù)。令負載序列的每個段對應一個力矩,則力矩t對應于tth負載序列。通過對N個片段樣本進行自相關分析,可以在設置閾值rT之后獲得嵌入維D。
BASVMLF算法的步驟如下:
步驟1.設置參數(shù)組(k,γ,C,ε);
步驟2.處理云計算負載訓練數(shù)據(jù);
步驟3.使用訓練數(shù)據(jù)訓練BASVM模型;
步驟4.通過公式(7)計算力矩t;
步驟5.使用BASVM模型進行預測,并獲得預測誤差。
BASVMLF算法的偽代碼如圖1所示。

圖1 BASVMLF算法的偽代碼
為了驗證BASVMLF算法的有效性和準確性,本文搜集了云計算中心的近一個月12000臺計算機使用情況信息,利用BASVMLF算法進行性能綜合,且與其他常用算法進行性能的比較。實驗數(shù)據(jù)包含67萬個作業(yè)和2500萬個任務,及其相關的任務計劃時間、資源的分配和相關的調配使用記錄。此外,這些數(shù)據(jù)還記錄了微秒級的配置、結束等的工作和任務及其他信息,例如CPU的需求和使用狀態(tài)、內存、帶寬等。
因此,圍繞該數(shù)據(jù)集進行了許多相關研究。云計算數(shù)據(jù)集包括作業(yè)事件、任務事件、約束和使用情況、機器事件等6個部分。在本實驗中,僅選擇了對CPU資源進行測試,但BASVMLF算法也可以對內存和其他資源進行預測。在實驗中,預測方法的前提是使用固定步長。
首先,對相關云計算序列進行自相關分析,分析的結果如圖2所示。

圖2 云計算負載的自相關分析
其次,在基于自相關分析結果的基礎上,可以得出該序列呈現(xiàn)較高的線性相關,設置閾值為rT=0.6,輸入向量的步長為35。在此設置的前提下,對數(shù)據(jù)進行歸一化的統(tǒng)一,同時將負載數(shù)據(jù)集作為輸入樣本,利用BASVM模型來預測負載。
通過以下步驟設置參數(shù)組(k,γ,C,ε)。首先,選擇k=0并修復γ和C以找到最佳ε;其次,修復C和ε以找到最佳γ;然后修復ε和γ以找到最佳C;最后,將γ,C和ε固定為窮舉搜索k。
在眾多負載預測算法中,選擇已有三種算法(ANFIS、ARIMA、BASVM)與本文提出的算法進行比較。選擇這三種算法是由于本文提出的算法是在SVM的基礎上進行改進的,而ANFIS和ARIMA分別代表智能算法和傳統(tǒng)統(tǒng)計方法,支持向量機的參數(shù)與本文提出的模型相同。對于ANFIS,迭代數(shù)設置為500,隸屬函數(shù)數(shù)為5。首先,通過減法聚類方法確定自適應模糊神經網(wǎng)絡的結構;其次,使用混合學習算法訓練前端和結論的參數(shù);最后,將載荷序列數(shù)據(jù)輸入到訓練后的自適應模糊神經網(wǎng)絡。對于ARIMA,從自相關分析中可以知道負載序列不穩(wěn)定,因此應對負載序列進行差分,并設置時間序列d=1的差分時間。根據(jù)圖2,可以得到帶有回歸項p=3和移動平均值q=2的ARIMA(3,1,2)模型。
預測算法的實驗結果如圖3所示。

圖3 (a)BASVM預測的加載順序

圖3 (b)支持向量機預測的加載順序

圖3 (c)ANFIS預測的加載順序

圖3 (d)ARIMA預測的加載順序
從圖3 a-d中,很難看出明顯的優(yōu)化。因此,選擇均方根誤差(RMSE)和均方根誤差(MAE)來評估四種預測算法。兩種評估指標的計算如式(8)所示。
(8)
根據(jù)評估指標,將四種預測算法的誤差與圖4和表1中的相應數(shù)據(jù)進行比較。

圖4 不同算法的評估值

表1 不同算法的評估值
從圖4和表1結果可知,BASVM的預測精度最優(yōu),提高了云計算預測算法的精度。
本文在深入研究云計算任務特征的基礎上,提出了一種基于BASVM的云計算負荷預測模型,該模型可以結合WT和SVM的優(yōu)勢,對輸入序列進行更有效的回歸分析。為了驗證本文提出的算法,選擇了云計算中心數(shù)據(jù)集,并分析了其CPU負載統(tǒng)計信息。通過使用本文提出的預測模型,可以預測負荷序列并將其與其他幾種常用的預測算法進行比較。實驗結果表明,所提出的BASVM云計算負荷預測模型在預測精度上優(yōu)于其他三種預測算法。