孟海寧,童新宇,石月開(kāi),朱磊,馮鍇,黑新宏
(1.西安理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,陜西 西安 710048;2.陜西省網(wǎng)絡(luò)計(jì)算與安全技術(shù)重點(diǎn)實(shí)驗(yàn)室,陜西 西安 710048)
軟件老化是影響軟件系統(tǒng)可靠性的潛在因素,當(dāng)長(zhǎng)期運(yùn)行的軟件系統(tǒng)存在軟件老化現(xiàn)象時(shí),系統(tǒng)將出現(xiàn)性能下降、異常和錯(cuò)誤增加,甚至死機(jī)[1]。軟件老化是由操作系統(tǒng)可分配資源匱乏、碎片化嚴(yán)重以及內(nèi)部錯(cuò)誤積累(如內(nèi)存泄漏和未釋放的文件資源)造成的,而這些錯(cuò)誤在軟件測(cè)試階段難以檢測(cè)和消除[2]。云計(jì)算系統(tǒng)的體系結(jié)構(gòu)復(fù)雜,系統(tǒng)內(nèi)計(jì)算資源的申請(qǐng)和釋放較為頻繁,且云系統(tǒng)長(zhǎng)期運(yùn)行為云用戶(hù)提供服務(wù),因此云系統(tǒng)更容易出現(xiàn)軟件老化現(xiàn)象,影響系統(tǒng)可用性和可靠性。
為了避免軟件老化,Huang 等[3]提出了軟件再生。它是一種主動(dòng)預(yù)防性的容錯(cuò)技術(shù),通過(guò)重置軟件系統(tǒng)內(nèi)部狀態(tài),防止系統(tǒng)未來(lái)發(fā)生重大故障。該過(guò)程通過(guò)有計(jì)劃地重啟系統(tǒng),清理系統(tǒng)運(yùn)行環(huán)境,使系統(tǒng)恢復(fù)到初始健康狀態(tài)。然而軟件再生操作將帶來(lái)額外的系統(tǒng)開(kāi)銷(xiāo),因此需要選擇最佳時(shí)機(jī)進(jìn)行軟件再生。
為了減少軟件再生給系統(tǒng)帶來(lái)的時(shí)間和資源消耗的成本,學(xué)者們對(duì)軟件老化趨勢(shì)進(jìn)行預(yù)測(cè),計(jì)算老化閾值,在系統(tǒng)重大故障發(fā)生之前對(duì)系統(tǒng)進(jìn)行軟件再生。其中,Okamura 等[4]構(gòu)造了基于馬爾可夫鏈的響應(yīng)時(shí)間序列,評(píng)估分布式服務(wù)器系統(tǒng)的軟件老化趨勢(shì)。Matos 等[5]針對(duì)Eucalyptus 云系統(tǒng)老化現(xiàn)象,提出了基于多閾值的時(shí)間序列預(yù)測(cè)方法,該方法求解得到最優(yōu)再生時(shí)機(jī),可減少系統(tǒng)停機(jī)時(shí)間并提高系統(tǒng)可靠性。Islam 等[6]針對(duì)亞馬遜EC2云系統(tǒng),采用神經(jīng)網(wǎng)絡(luò)和線(xiàn)性回歸的方法,預(yù)測(cè)系統(tǒng)資源使用情況,為資源配置策略提供參考依據(jù)。Langner 等[7]發(fā)現(xiàn)運(yùn)行于同一個(gè)基于內(nèi)核的虛擬機(jī)(KVM,kernel-based virtual machine)之上的3 個(gè)虛擬機(jī)(VM,virtula machine)的CPU 占用率逐步升高,物理內(nèi)存和交換區(qū)使用量逐漸消耗,繼而出現(xiàn)VM 上HTTP 請(qǐng)求響應(yīng)緩慢,最終導(dǎo)致整個(gè)系統(tǒng)老化。Kousiouris 等[8]采用人工神經(jīng)網(wǎng)絡(luò)的方法,預(yù)測(cè)云系統(tǒng)中VM 的性能。鄭鵬飛等[9]提出運(yùn)用多元時(shí)間序列模型分析軟件老化的方法。林已杰等[10]針對(duì)服務(wù)器軟件老化現(xiàn)象,提出了一種基于BP 神經(jīng)網(wǎng)絡(luò)和馬爾可夫模型結(jié)合的方法對(duì)服務(wù)器關(guān)鍵資源進(jìn)行預(yù)測(cè)。
綜上所述,大多數(shù)學(xué)者關(guān)注時(shí)間序列分析或智能算法來(lái)預(yù)測(cè)軟件老化趨勢(shì)。時(shí)間序列分析法采用自回歸移動(dòng)平均(ARMA,autoregressive moving average)、粒子濾波等模型進(jìn)行趨勢(shì)預(yù)測(cè)[11-13],模型簡(jiǎn)單,但所需數(shù)據(jù)量大且對(duì)于波動(dòng)較大的數(shù)據(jù)預(yù)測(cè)精度較低。智能算法包括神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等[14-15],該類(lèi)算法在預(yù)測(cè)時(shí)間序列數(shù)據(jù)時(shí),預(yù)測(cè)精度不高且收斂較慢。因此,僅采用單一模型進(jìn)行軟件老化預(yù)測(cè),很難獲得比較精確的預(yù)測(cè)結(jié)果。
本文探究基于OpenStack[16-17]的云服務(wù)器系統(tǒng)的軟件老化問(wèn)題,為實(shí)現(xiàn)軟件再生機(jī)制提供理論依據(jù)。本文將整合移動(dòng)平均自回歸(ARIMA,autoregressive integrated moving average)模型與循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN,recurrent neural network)模型結(jié)合,得到ARIMA-RNN 組合模型,對(duì)云服務(wù)器系統(tǒng)老化趨勢(shì)進(jìn)行預(yù)測(cè)。該方法克服了ARIMA 模型對(duì)波動(dòng)較大的數(shù)據(jù)預(yù)測(cè)精度較低的局限性,解決了RNN模型預(yù)測(cè)收斂速度慢的問(wèn)題,最終實(shí)現(xiàn)對(duì)云服務(wù)器系統(tǒng)的老化預(yù)測(cè)。此外,本文設(shè)計(jì)了負(fù)載實(shí)驗(yàn)方案,模擬云服務(wù)器系統(tǒng)實(shí)際工作狀況,選擇云服務(wù)器的性能服務(wù)參數(shù)響應(yīng)時(shí)間和系統(tǒng)參數(shù)CPU 使用率作為衡量系統(tǒng)老化的重要指標(biāo),驗(yàn)證軟件老化現(xiàn)象的存在,并預(yù)測(cè)系統(tǒng)老化趨勢(shì)。
基于ARIMA-RNN 組合模型的云服務(wù)器老化預(yù)測(cè)方法的工作流程包括4 個(gè)基本步驟:數(shù)據(jù)預(yù)處理、ARIMA 模型構(gòu)建及數(shù)據(jù)擬合、RNN 模型構(gòu)建,以及ARIMA-RNN 組合模型構(gòu)建及數(shù)據(jù)預(yù)測(cè)。
對(duì)云服務(wù)器進(jìn)行老化預(yù)測(cè)前,需對(duì)數(shù)據(jù)進(jìn)行歸一化預(yù)處理。這是因?yàn)樵品?wù)器系統(tǒng)性能參數(shù)的時(shí)間序列數(shù)據(jù)分布不均勻且數(shù)據(jù)變化幅度(標(biāo)準(zhǔn)差)較大,數(shù)據(jù)中含有奇異樣本數(shù)據(jù),預(yù)測(cè)時(shí)會(huì)減慢網(wǎng)絡(luò)的學(xué)習(xí)和收斂速度。因此本文采用歸一化處理方法,將云服務(wù)器原始數(shù)據(jù)映射到[?1,1],使預(yù)測(cè)模型收斂速度快,映射轉(zhuǎn)換過(guò)程如式(1)所示。
其中,xmax是數(shù)據(jù)的最大值,xmean是數(shù)據(jù)的平均值,X是原始時(shí)間序列數(shù)據(jù),X˙是預(yù)處理后的時(shí)間序列數(shù)據(jù)。
構(gòu)建ARIMA 模型時(shí),需確定ARIMA 模型中的參數(shù)p、d、q。首先,通過(guò)單位根檢驗(yàn)方法,對(duì)序列數(shù)據(jù)進(jìn)行平穩(wěn)性檢驗(yàn),若序列數(shù)據(jù)為非平穩(wěn)時(shí)間序列則需反復(fù)進(jìn)行差分處理,直到差分后的時(shí)間序列平穩(wěn)為止。然后,計(jì)算自相關(guān)和偏自相關(guān)函數(shù),確定自回歸項(xiàng)p和移動(dòng)平均項(xiàng)q的取值范圍。最后,采用赤池信息量準(zhǔn)則(AIC,Akaike information criterion)對(duì)p和q的取值進(jìn)行最佳估計(jì),計(jì)算對(duì)應(yīng)ARIMA 模型的AIC 值,從而得到最佳ARIMA 模型。其中AIC 值反映了數(shù)據(jù)的擬合效果,AIC 值越小,則數(shù)據(jù)擬合效果越好。采用ARIMA 模型的數(shù)據(jù)預(yù)測(cè)過(guò)程如圖1 所示。
圖1 ARIMA 模型預(yù)測(cè)流程
1) RNN 隱藏層數(shù)
首先,RNN 與前饋神經(jīng)網(wǎng)絡(luò)(FNN,feedforward neural network)結(jié)構(gòu)相似,具備與FNN 相似的數(shù)據(jù)擬合能力。其次,Hornik 等[18]已證明FNN 只需具備單個(gè)隱藏層和有限個(gè)神經(jīng)元,即能較高精度地?cái)M合任意復(fù)雜度的函數(shù)。因此本文將RNN 模型的隱藏層數(shù)設(shè)置為1。
2) RNN 輸入層節(jié)點(diǎn)數(shù)
RNN 模型利用歷史數(shù)據(jù)x(t?1),x(t?2),…,x(t?n)對(duì)x(t)進(jìn)行預(yù)測(cè)(其中x(t)為時(shí)刻t的數(shù)據(jù)值,n為歷史數(shù)據(jù)的個(gè)數(shù))。因此,RNN 模型中輸入層節(jié)點(diǎn)的數(shù)量由選取的歷史數(shù)據(jù)個(gè)數(shù)決定?;疑P(guān)聯(lián)分析法[19]是衡量序列數(shù)據(jù)相關(guān)程度的方法,灰色關(guān)聯(lián)系數(shù)越大,則序列數(shù)據(jù)的相關(guān)性越強(qiáng)。本文采用灰色關(guān)聯(lián)分析法,計(jì)算序列數(shù)據(jù)中每個(gè)數(shù)據(jù)與若干歷史數(shù)據(jù)的平均相關(guān)性,確定與x(t)相關(guān)性較強(qiáng)的歷史數(shù)據(jù)作為RNN 模型的輸入,從而確定RNN 網(wǎng)絡(luò)輸入層節(jié)點(diǎn)個(gè)數(shù),具體過(guò)程如算法1 所示。
算法1時(shí)間序列數(shù)據(jù)灰色關(guān)聯(lián)分析法
輸入經(jīng)預(yù)處理的時(shí)間序列數(shù)據(jù)
輸出時(shí)間序列數(shù)據(jù)中t時(shí)刻的值與歷史值的平均相關(guān)系數(shù)
3) RNN 隱藏層節(jié)點(diǎn)數(shù)
本文采用經(jīng)驗(yàn)法確定神經(jīng)網(wǎng)絡(luò)隱藏層節(jié)點(diǎn)數(shù),經(jīng)驗(yàn)法如式(2)所示。
其中,h為RNN 模型中隱藏層神經(jīng)元的個(gè)數(shù),m為輸入層神經(jīng)元的個(gè)數(shù),n為輸出層神經(jīng)元的個(gè)數(shù),α∈{0≤x≤10,x∈Z} 。
ARIMA-RNN 組合模型的拓?fù)浣Y(jié)構(gòu)如圖2 所示,預(yù)測(cè)過(guò)程如算法2 所示。ARIMA-RNN 組合模型的輸入數(shù)據(jù)由兩部分構(gòu)成:ARIMA 模型對(duì)x(t)的預(yù)測(cè)值和x(t)的歷史數(shù)據(jù)x(t?1),x(t?2),…,x(t?n)。RNN 模型訓(xùn)練過(guò)程中,誤差函數(shù)采用均方誤差(MSE,mean square error)函數(shù),如式(3)所示。
圖2 ARIMA-RNN 組合模型拓?fù)浣Y(jié)構(gòu)
其中,ytrue為實(shí)際輸出,ypredictive為期望輸出。
算法2ARIMA-RNN 組合模型預(yù)測(cè)算法
輸入預(yù)處理的時(shí)間序列數(shù)據(jù)與ARIMA 模型預(yù)測(cè)值
輸出預(yù)測(cè)結(jié)果
步驟1使用大小為m(m 步驟2將ARIMA 模型預(yù)測(cè)得到的數(shù)據(jù)通過(guò)式(1)映射到區(qū)間[?1,1]。 步驟3將步驟2 得到的序列數(shù)據(jù)截?cái)?,從第m個(gè)時(shí)刻開(kāi)始取值,即α={αm,αm+1,…,αN},使截?cái)嗪蟮腁RIMA 預(yù)測(cè)數(shù)據(jù)與步驟1 的標(biāo)簽數(shù)據(jù)y={y m,ym+1,…,yN}相對(duì)應(yīng)。 步驟4將步驟3 得到的數(shù)據(jù)加入步驟1 數(shù)據(jù)集的特征向量,得到Xt=[xt?1,xt?2,…,x t?m,αt],t=m,m+1,…,n,則ARIMA-RNN 模型的數(shù)據(jù)集為{Xt,yt|t=m,m+1,m+2,…,N}。 步驟5初始化RNN 各個(gè)權(quán)重矩陣和偏移向量的值。 步驟6計(jì)算數(shù)據(jù)集特征向量Xt在ARIMARNN 組合模型中的輸出值。 步驟7依據(jù)式(3),計(jì)算步驟6 中得到預(yù)測(cè)序列與期望序列之間的誤差,利用反向傳播算法調(diào)整各個(gè)權(quán)重矩陣和偏移向量的值,使誤差達(dá)到最小。 步驟8判斷訓(xùn)練次數(shù)是否達(dá)到最大值或誤差達(dá)到閾值,若是則保存調(diào)整好的權(quán)重矩陣和偏移向量,轉(zhuǎn)步驟6 并輸出預(yù)測(cè)結(jié)果;否則轉(zhuǎn)至步驟7。 基于ARIMA-RNN 組合模型的云服務(wù)器老化預(yù)測(cè)方法在預(yù)測(cè)時(shí)間序列數(shù)據(jù)時(shí),將ARIMA 模型的預(yù)測(cè)值和t?1,t?2,…,t?d時(shí)刻的歷史數(shù)據(jù)作為RNN 模型的輸入特征向量。首先通過(guò)ARIMA 模型對(duì)序列數(shù)據(jù)進(jìn)行預(yù)測(cè),ARIMA 模型預(yù)測(cè)方法的時(shí)間復(fù)雜度為O(n) ;然后將特征矩陣X(維度為[n,d])輸入RNN 模型,與RNN 的隱藏層權(quán)重矩陣(維度為[d,w1])相乘,則時(shí)間復(fù)雜度為O(ndw1);最后將相乘結(jié)果與輸出層權(quán)重矩陣(維度為[w1,1])相乘,則時(shí)間復(fù)雜度為O(nw1)。所以總的時(shí)間復(fù)雜度為 因此本文提出的ARIMA-RNN 組合模型的時(shí)間復(fù)雜度為O(n),即線(xiàn)性時(shí)間復(fù)雜度。 為探究基于OpenStack 云服務(wù)器的軟件老化現(xiàn)象,實(shí)驗(yàn)中設(shè)計(jì)負(fù)載發(fā)生方案模擬云服務(wù)器的實(shí)際負(fù)載,并收集云服務(wù)器的資源和性能數(shù)據(jù),作為研究軟件老化的實(shí)驗(yàn)數(shù)據(jù)。通過(guò)對(duì)云服務(wù)器的資源和性能數(shù)據(jù)進(jìn)行老化預(yù)測(cè),為軟件再生機(jī)制的部署提供理論依據(jù)。 本實(shí)驗(yàn)基于OpenStack 框架和QEMU/KVM 管理程序,實(shí)驗(yàn)系統(tǒng)由一臺(tái)云服務(wù)器、一臺(tái)MySQL數(shù)據(jù)庫(kù)服務(wù)器及一組模擬客戶(hù)端組成,如圖3 所示。云服務(wù)器配置環(huán)境為Intel(R)Core(TM)i5-4590 CPU 四核3.3GHz、8GB RAM,操作系統(tǒng)為18.04.1-Ubuntux86_64,云服務(wù)器虛擬機(jī)上運(yùn)行的操作系統(tǒng)為Redhat 7.3_64。云服務(wù)器端部署了一個(gè)基于Webbench 基準(zhǔn)測(cè)試的Web 網(wǎng)站系統(tǒng)。在客戶(hù)端編寫(xiě)負(fù)載腳本,依照Webbench 規(guī)范向云服務(wù)器發(fā)送網(wǎng)站商品查詢(xún)的請(qǐng)求,同時(shí)監(jiān)控并收集云服務(wù)器的性能參數(shù)和服務(wù)參數(shù)。實(shí)驗(yàn)以響應(yīng)時(shí)間作為老化特征參數(shù),實(shí)驗(yàn)樣本數(shù)據(jù)為2 230 個(gè),采樣時(shí)間間隔為3 s。 圖3 實(shí)驗(yàn)平臺(tái) 首先,檢驗(yàn)云服務(wù)器系統(tǒng)是否存在軟件老化。響應(yīng)時(shí)間的數(shù)據(jù)變化反映了云服務(wù)器系統(tǒng)運(yùn)行性能表現(xiàn)狀況,若響應(yīng)時(shí)間隨著系統(tǒng)運(yùn)行時(shí)間的增長(zhǎng)而增加,則可認(rèn)定系統(tǒng)處于老化狀態(tài)[20]。為了分析云服務(wù)器系統(tǒng)的老化狀態(tài),本文采用線(xiàn)性回歸方法擬合響應(yīng)時(shí)間數(shù)據(jù)的變化趨勢(shì),得到參數(shù)w=0.017,b=?0.71。原始序列數(shù)據(jù)和線(xiàn)性回歸趨勢(shì)如圖4 所示,可以看出,云服務(wù)器在工作負(fù)載整體恒定的情況下,隨著時(shí)間的推移,服務(wù)器的響應(yīng)時(shí)間逐步上升,驗(yàn)證了云服務(wù)器出現(xiàn)軟件老化現(xiàn)象。 圖4 云服務(wù)器響應(yīng)時(shí)間數(shù)據(jù)趨勢(shì) 其次,實(shí)驗(yàn)中應(yīng)用ARIMA-RNN 組合模型進(jìn)行預(yù)測(cè),將響應(yīng)時(shí)間數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集(其中訓(xùn)練集為前80%的數(shù)據(jù)集,測(cè)試集為后20%的數(shù)據(jù)集)。采用組合模型進(jìn)行二步老化預(yù)測(cè),第一步采用ARIMA 模型對(duì)響應(yīng)時(shí)間t時(shí)刻的數(shù)據(jù)值做出預(yù)測(cè),第二步將ARIMA 模型預(yù)測(cè)結(jié)果值和t時(shí)刻之前的響應(yīng)時(shí)間數(shù)據(jù)一并輸入到RNN 模型,得到響應(yīng)時(shí)間t時(shí)刻的最終預(yù)測(cè)值。 用ARIMA 模型對(duì)響應(yīng)時(shí)間預(yù)測(cè)時(shí),首先,采用單位根檢驗(yàn)方法,對(duì)響應(yīng)時(shí)間的序列數(shù)據(jù)進(jìn)行平穩(wěn)性檢驗(yàn),確定ARIMA 模型中參數(shù)d的值。經(jīng)過(guò)一次差分處理后,單位根檢驗(yàn)結(jié)果如表1 所示。表1中統(tǒng)計(jì)量值為?20.567 5,小于3 個(gè)置信度(1%,5%,10%)的臨界統(tǒng)計(jì)值,P=0,表示拒絕原假設(shè),因此ARIMA 模型差分系數(shù)d=1。 表1 單位根檢驗(yàn)結(jié)果 其次,通過(guò)偏自相關(guān)和自相關(guān)分析,確定自回歸項(xiàng)p和移動(dòng)平均項(xiàng)q的取值范圍。如圖5 所示,偏自相關(guān)分析顯示滯后階數(shù)為1~12 階時(shí),偏自相關(guān)系數(shù)超出了置信邊界,滯后階數(shù)大于12 階后偏自相關(guān)系數(shù)縮小至接近0。自相關(guān)分析顯示滯后階數(shù)大于5 階后,自相關(guān)系數(shù)處于置信區(qū)間。因此p的值可能為11 或12,q的值可能為5 或7。 圖5 偏自相關(guān)和自相關(guān)分析 最后,依據(jù)AIC 準(zhǔn)則對(duì)待選參數(shù)p和q進(jìn)行最佳估計(jì)。將響應(yīng)時(shí)間數(shù)據(jù)作為輸入,用p和q的可能值構(gòu)建ARIMA 模型,分別計(jì)算模型對(duì)應(yīng)的AIC值,如表2 所示。可以看出,ARIMA(12,1,7)的AIC值最小,因此,選擇ARIMA(12,1,7)模型對(duì)響應(yīng)時(shí)間進(jìn)行預(yù)測(cè),預(yù)測(cè)結(jié)果如圖6 所示。 表2 ARIMA 模型的AIC 值 此外,圖7 給出了響應(yīng)時(shí)間實(shí)際值的變化率,即響應(yīng)時(shí)間隨時(shí)間序列數(shù)據(jù)的斜率變化曲線(xiàn),其值越大表示響應(yīng)時(shí)間變化越明顯。時(shí)間序列數(shù)據(jù)為0~500 時(shí),響應(yīng)時(shí)間變化率較小,表明該段序列數(shù)據(jù)變化較為平緩;時(shí)間序列數(shù)據(jù)為1 000~1 500 時(shí),響應(yīng)時(shí)間變化率較大,表明該段序列數(shù)據(jù)變化劇烈。圖8 給出了ARIMA 模型對(duì)響應(yīng)時(shí)間進(jìn)行預(yù)測(cè)的絕對(duì)誤差??梢钥闯?,波動(dòng)平緩的數(shù)據(jù)(時(shí)間序列數(shù)據(jù)為0~500)預(yù)測(cè)絕對(duì)誤差較小,而波動(dòng)劇烈的數(shù)據(jù)(時(shí)間序列數(shù)據(jù)1 000~1 500)預(yù)測(cè)絕對(duì)誤差較大。因此,可以判斷對(duì)于波動(dòng)劇烈的時(shí)間序列數(shù)據(jù),用ARIMA 模型預(yù)測(cè)效果較差。 圖6 ARIMA 模型預(yù)測(cè)結(jié)果 圖7 響應(yīng)時(shí)間實(shí)際值的變化率 圖8 響應(yīng)時(shí)間預(yù)測(cè)絕對(duì)誤差 綜上,由于云服務(wù)器系統(tǒng)性能數(shù)據(jù)和資源數(shù)據(jù)具有突發(fā)性、變化劇烈以及周期性的特點(diǎn),對(duì)于變化劇烈的時(shí)間序列數(shù)據(jù),用ARIMA 模型預(yù)測(cè)效果較差。因此僅采用單一的ARIMA 模型對(duì)云服務(wù)器進(jìn)行老化預(yù)測(cè),效果并不理想。 構(gòu)建ARIMA-RNN 組合模型,需確定RNN 網(wǎng)絡(luò)結(jié)構(gòu)。首先,采用算法1 計(jì)算響應(yīng)時(shí)間序列數(shù)據(jù)的相關(guān)性,如圖9 所示,平均相關(guān)系數(shù)呈波動(dòng)下降的趨勢(shì),當(dāng)歷史數(shù)據(jù)個(gè)數(shù)為10 時(shí)數(shù)據(jù)的相關(guān)性最強(qiáng),因此ARIMA-RNN 組合模型的輸入層節(jié)點(diǎn)數(shù)為10。然后,根據(jù)式(2)得到隱藏層節(jié)點(diǎn)數(shù)的最佳取值區(qū)間,并經(jīng)過(guò)反復(fù)實(shí)驗(yàn)測(cè)試,得到隱藏層節(jié)點(diǎn)數(shù)最優(yōu)值為20。此外,本實(shí)驗(yàn)RNN 網(wǎng)絡(luò)中激活函數(shù)選取tanh 函數(shù),該函數(shù)值域?yàn)閇?1,1],對(duì)于特征相差大的數(shù)據(jù)處理效果較好。 圖9 響應(yīng)時(shí)間序列數(shù)據(jù)的相關(guān)性 然后,使用ARIMA-RNN 組合模型、ARIMA模型[21]以及RNN 模型[22]對(duì)響應(yīng)時(shí)間進(jìn)行預(yù)測(cè),預(yù)測(cè)結(jié)果如圖 10(a)所示。訓(xùn)練數(shù)據(jù)集區(qū)間為[0,1784],測(cè)試數(shù)據(jù)集區(qū)間為[1 785,2 230]。由于數(shù)據(jù)量大且數(shù)據(jù)變化較為劇烈,為了顯示清晰每隔50 個(gè)數(shù)據(jù)點(diǎn)輸出結(jié)果??梢钥闯?,ARIMARNN 組合模型擬合效果最好。3 種模型的預(yù)測(cè)結(jié)果誤差對(duì)比情況,如圖10(b)所示??梢?jiàn)ARIMA模型和RNN 模型各有優(yōu)勢(shì),在數(shù)據(jù)較平穩(wěn)的區(qū)間數(shù)據(jù),如0~500 區(qū)間數(shù)據(jù),ARIMA 模型的預(yù)測(cè)精度優(yōu)于RNN 模型預(yù)測(cè)精度;而在數(shù)據(jù)波動(dòng)較為劇烈的區(qū)間數(shù)據(jù),如1 500~2 000 區(qū)間數(shù)據(jù),RNN 模型預(yù)測(cè)精度優(yōu)于 ARIMA 模型。ARIMA-RNN 組合模型結(jié)合了這兩者的優(yōu)勢(shì),預(yù)測(cè)精度最高。 本文從預(yù)測(cè)精度、預(yù)測(cè)收斂速度及可擴(kuò)展性3 個(gè)方面,對(duì)本文所提預(yù)測(cè)方法進(jìn)行性能評(píng)價(jià)。首先,在評(píng)判算法預(yù)測(cè)精度方面,采用均方根誤差RMSE、平均絕對(duì)誤差MAE 及平均絕對(duì)百分比誤差MAPE作為評(píng)價(jià)指標(biāo),計(jì)算式如下所示。 其中,n為數(shù)據(jù)樣本的個(gè)數(shù),ypredictive為預(yù)測(cè)序列數(shù)據(jù),ytrue為實(shí)際序列數(shù)據(jù)。 圖10 響應(yīng)時(shí)間預(yù)測(cè)及誤差對(duì)比 使用ARIMA-RNN 組合模型、ARIMA 模型[21]和RNN 模型[22],對(duì)響應(yīng)時(shí)間數(shù)據(jù)進(jìn)行預(yù)測(cè)精度對(duì)比,如表3 所示。ARIMA-RNN 組合模型的RMSE、MAE 和MAPE 值均最小,其次是RNN模型,ARIMA 模型預(yù)測(cè)誤差最大。而ARIMA-RNN 組合模型相較ARIMA 模型和RNN模型,RMSE 分別降低了83.90%和76.61%,MAE分別降低了86.10%和74.24%,MAPE 分別降低了81.23%和71.47%??梢?jiàn),本文所提ARIMA-RNN組合模型,在預(yù)測(cè)云服務(wù)器性能數(shù)據(jù)時(shí)比ARIMA模型和RNN 模型的預(yù)測(cè)精度更高。原因是本文針對(duì)OpenStack 云服務(wù)器的系統(tǒng)性能參數(shù)在運(yùn)行時(shí)的數(shù)據(jù)變化特點(diǎn),設(shè)計(jì)ARIMA-RNN 組合模型進(jìn)行系統(tǒng)老化預(yù)測(cè),克服了ARIMA 模型對(duì)于波動(dòng)較大數(shù)據(jù)預(yù)測(cè)精度較低的局限性,因而提高了預(yù)測(cè)精度。 表3 各模型誤差對(duì)比 其次,在評(píng)價(jià)預(yù)測(cè)收斂速度方面,將本文所提的ARIMA-RNN組合模型與RNN模型進(jìn)行了對(duì)比,網(wǎng)絡(luò)訓(xùn)練過(guò)程的收斂趨勢(shì)如圖11 所示。本文基于ARIMA-RNN 組合模型的預(yù)測(cè)方法,在模型訓(xùn)練過(guò)程中,當(dāng)訓(xùn)練次數(shù)為10 時(shí),均方誤差MSE 值已小于0.0015,之后收斂趨于穩(wěn)定,相較RNN 模型預(yù)測(cè)方法,本文基于ARIMA-RNN 組合模型的預(yù)測(cè)方法收斂速度更快且誤差更小。原因是本文預(yù)測(cè)方法在RNN 網(wǎng)絡(luò)訓(xùn)練前,采用灰色關(guān)聯(lián)分析方法,將相關(guān)性分析后的時(shí)間序列數(shù)據(jù)作為模型輸入再進(jìn)行預(yù)測(cè),減少了相關(guān)性較差數(shù)據(jù)的輸入,從而提高了預(yù)測(cè)收斂速度。 圖11 模型訓(xùn)練收斂趨勢(shì)對(duì)比 最后,在評(píng)價(jià)預(yù)測(cè)方法的可擴(kuò)展性方面,使用ARIMA-RNN 組合模型、ARIMA 模型和RNN 模型,對(duì)云服務(wù)器的CPU 使用率時(shí)間序列進(jìn)行預(yù)測(cè)并對(duì)比,如圖 12 所示。從圖 12 可以看出,本文ARIMA-RNN 組合模型,較單一的ARIMA 模型和RNN 模型,具有更好的預(yù)測(cè)效果。 圖12 CPU 使用率預(yù)測(cè)及誤差對(duì)比 綜上,云服務(wù)器處于動(dòng)態(tài)變化的復(fù)雜環(huán)境中,系統(tǒng)性能參數(shù)的時(shí)間序列波動(dòng)變化,本文針對(duì)數(shù)據(jù)波動(dòng)平緩和劇烈2 種情況,結(jié)合ARIMA 模型和RNN 模型,預(yù)測(cè)云服務(wù)器系統(tǒng)的老化趨勢(shì),預(yù)測(cè)精度更高,同時(shí),采用灰色關(guān)聯(lián)度分析法,計(jì)算時(shí)間序列數(shù)據(jù)的相關(guān)性,預(yù)測(cè)收斂速度更快。 軟件老化問(wèn)題一直受到學(xué)術(shù)界和工業(yè)界的關(guān)注。軟件老化預(yù)測(cè)及分析可以保障云服務(wù)器系統(tǒng)可靠運(yùn)行,降低系統(tǒng)風(fēng)險(xiǎn)和損失。針對(duì)收集到的OpenStack云服務(wù)器性能數(shù)據(jù),本文提出一種基于ARIMARNN 組合模型的預(yù)測(cè)方法,對(duì)云服務(wù)器的性能資源進(jìn)行老化預(yù)測(cè),并驗(yàn)證了軟件老化現(xiàn)象的存在。實(shí)驗(yàn)結(jié)果表明,ARIMA-RNN 組合模型提高了預(yù)測(cè)精度和收斂速度,為云服務(wù)器再生部署提供了參考依據(jù)。 下一步將研究預(yù)測(cè)模型對(duì)于數(shù)據(jù)變化情況下的敏感性問(wèn)題,使數(shù)據(jù)出現(xiàn)急劇變化時(shí),仍能獲得較為精確的預(yù)測(cè)結(jié)果。2.5 時(shí)間復(fù)雜度分析
3 實(shí)驗(yàn)結(jié)果與分析
3.1 ARIMA 模型預(yù)測(cè)結(jié)果及分析
3.2 ARIMA-RNN 組合模型預(yù)測(cè)結(jié)果及分析
3.3 預(yù)測(cè)性能評(píng)價(jià)
4 結(jié)束語(yǔ)