許曄炫,潘景山,王繼彬
(1.山東建筑大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院;2.國(guó)家超級(jí)計(jì)算機(jī)濟(jì)南中心,山東濟(jì)南 250101)
云計(jì)算可以按需提供可擴(kuò)展和可靠的計(jì)算服務(wù),如基礎(chǔ)設(shè)施、平臺(tái)和軟件服務(wù),改變了信息和通信技術(shù)行業(yè),成為一種新興的計(jì)算范式[1]。云計(jì)算主要是一種結(jié)合虛擬化、服務(wù)管理自動(dòng)化和標(biāo)準(zhǔn)化的技術(shù),它可以提供靈活的計(jì)算能力和高性能的數(shù)據(jù)分析方法[2-3]。企業(yè)可以在云平臺(tái)上運(yùn)行多種服務(wù),無需構(gòu)建數(shù)據(jù)中心。云計(jì)算的廣泛應(yīng)用構(gòu)建了大量的數(shù)據(jù)中心,這些數(shù)據(jù)中心消耗了大量的電能,產(chǎn)生了大量的熱量。云計(jì)算數(shù)據(jù)中心的機(jī)架式服務(wù)器每臺(tái)消耗可高達(dá)1 000W,最高溫度可達(dá)100℃[4]。服務(wù)器溫度升高不僅導(dǎo)致冷卻成本增加,還會(huì)產(chǎn)生嚴(yán)重影響系統(tǒng)可靠性的熱點(diǎn)。在使用云服務(wù)的過程中,由于每臺(tái)服務(wù)器中的任務(wù)不同,耗能不同,會(huì)出現(xiàn)某一臺(tái)服務(wù)器處于高能耗狀態(tài),使得服務(wù)器溫度上升,從而形成熱點(diǎn)。熱點(diǎn)的出現(xiàn)會(huì)增加服務(wù)器故障率,損害服務(wù)器使用壽命。研究表明[5],當(dāng)服務(wù)器溫度高于21℃時(shí),服務(wù)器溫度每增加10℃,故障率翻倍。因此,避免服務(wù)器出現(xiàn)熱點(diǎn)現(xiàn)象具有重要研究意義。
目前,國(guó)內(nèi)外對(duì)如何避免服務(wù)器熱點(diǎn)現(xiàn)象的研究較少。預(yù)測(cè)服務(wù)器能耗能夠幫助服務(wù)器提前感知下一時(shí)刻的狀態(tài),從而作出相應(yīng)調(diào)整,避免出現(xiàn)熱點(diǎn)現(xiàn)象。隨機(jī)森林由于其運(yùn)算速度快、預(yù)測(cè)精準(zhǔn)度高且應(yīng)用范圍廣等優(yōu)點(diǎn),已廣泛應(yīng)用于各種算法和計(jì)算機(jī)等交叉學(xué)科。鑒于此,本文使用隨機(jī)森林預(yù)測(cè)服務(wù)器未來能耗。OpenStack作為開源云平臺(tái)的行業(yè)標(biāo)準(zhǔn)[6],能夠提供可靠的云部署方案,目前國(guó)內(nèi)外許多云計(jì)算企業(yè)都以O(shè)penStack 作為云計(jì)算架構(gòu)的基石。因此,本文使用OpenStack 作為云計(jì)算管理平臺(tái),管理云計(jì)算各種物理資源。
本文工作主要如下:①基于OpenStack 調(diào)度策略,通過使用隨機(jī)森林獲取預(yù)測(cè)服務(wù)器能耗參數(shù),為虛擬機(jī)創(chuàng)建、遷移提供數(shù)據(jù)支撐,進(jìn)而降低能耗,避免服務(wù)器出現(xiàn)熱點(diǎn)現(xiàn)象;②針對(duì)預(yù)測(cè)不可避免地出現(xiàn)誤差問題,本文設(shè)計(jì)了一種預(yù)測(cè)容錯(cuò)機(jī)制,避免由于預(yù)測(cè)誤差過大而出現(xiàn)虛擬機(jī)不遷移/不必要遷移問題;③通過在服務(wù)器上進(jìn)行負(fù)載實(shí)驗(yàn),確定最優(yōu)連續(xù)預(yù)測(cè)次數(shù)。同時(shí),將能耗結(jié)果進(jìn)行比較,實(shí)驗(yàn)結(jié)果表明,ECPRF 算法能將能耗控制在閾值以下,避免服務(wù)器熱點(diǎn)現(xiàn)象出現(xiàn)。
在預(yù)測(cè)方面,楊鵬史等[7]結(jié)合公交車實(shí)測(cè)GPS 數(shù)據(jù),利用線性回歸預(yù)測(cè)了公交的平均運(yùn)行速度和運(yùn)行模式分布,更適合面向大型公交車系統(tǒng)進(jìn)行實(shí)時(shí)動(dòng)態(tài)的排放能耗預(yù)測(cè)。郭樹昌等[8]使用全球預(yù)報(bào)系統(tǒng)分析場(chǎng)數(shù)據(jù),利用嶺回歸處理共線性數(shù)據(jù),得到閃電潛勢(shì)預(yù)報(bào)模型,預(yù)報(bào)命中率達(dá)0.75。顧艷文等[9]使用Lasso 回歸方法對(duì)變量進(jìn)行篩選,建立SVR 模型預(yù)測(cè)消費(fèi)者信心指數(shù),預(yù)測(cè)效果較好。
隨機(jī)森林使用Bagging 的方法是將多個(gè)決策樹組合在一起,以投票機(jī)制進(jìn)行分類的有監(jiān)督學(xué)習(xí)算法,它具有計(jì)算速度快、泛化能力強(qiáng)、分類性能好的優(yōu)點(diǎn)[10]。
隨機(jī)森林在預(yù)測(cè)方面應(yīng)用較為成熟,劉興等[11]對(duì)風(fēng)力數(shù)據(jù)使用聚類分析,使用核主成分分析法處理特征數(shù)據(jù),采用隨機(jī)森林方法進(jìn)行預(yù)測(cè),降低了預(yù)測(cè)誤差。閆政旭等[12]提出一種基于Pearson 系數(shù)的隨機(jī)森林組合模型算法,該算法利用Pearson 系數(shù)刪除無關(guān)特性,通過改進(jìn)網(wǎng)格搜索法對(duì)決策樹進(jìn)行調(diào)優(yōu),最后通過隨機(jī)森林進(jìn)行回歸預(yù)測(cè),實(shí)現(xiàn)了對(duì)股票價(jià)格的短期回歸。因此,本文使用隨機(jī)森林方法對(duì)服務(wù)器未來能耗進(jìn)行預(yù)測(cè)。
在云計(jì)算調(diào)度策略方面,鄧志龍等[13]研究了在Open-Stack 中資源負(fù)載動(dòng)態(tài)變化情況下的虛擬機(jī)遷移問題,通過衡量虛擬機(jī)與計(jì)算節(jié)點(diǎn)的匹配度選取節(jié)點(diǎn),減少了遷移成本,降低了數(shù)據(jù)中心的能耗。羅平等[14]考慮到數(shù)據(jù)中心在部署大規(guī)模虛擬機(jī)時(shí)并未將全局能耗、服務(wù)器性能作為參考因素,于是設(shè)計(jì)一種基于動(dòng)態(tài)平衡的雙策略差分進(jìn)化算法的虛擬機(jī)放置策略,在大規(guī)模創(chuàng)建虛擬機(jī)時(shí),使數(shù)據(jù)中心總功率增加到最小,從而達(dá)到減少數(shù)據(jù)中心能耗的問題。PIAO 等[15]、Kantarci 等[16]將CPU、內(nèi)存和帶寬作為評(píng)估參數(shù),提出混合整數(shù)線性規(guī)劃(MILP)使功耗最小化,從而實(shí)現(xiàn)云數(shù)據(jù)中心資源的公平利用和能耗優(yōu)化。Corradi等[17]提出一種動(dòng)態(tài)遷移方法來平衡服務(wù)器資源,它僅使用CPU 利用率作為主機(jī)過載檢測(cè)參數(shù),不考慮虛擬機(jī)遷移后目標(biāo)主機(jī)的未來狀態(tài)。Yang 等[18]實(shí)現(xiàn)一個(gè)可以監(jiān)控OpenStack 和OpenStack 上虛擬機(jī)實(shí)時(shí)狀態(tài)的云基礎(chǔ)設(shè)施,監(jiān)控項(xiàng)目包括CPU 利用率、內(nèi)存負(fù)載和功耗。此外,通過實(shí)時(shí)遷移實(shí)現(xiàn)節(jié)能。Pyati 等[19]提出一種在OpenStack 云中動(dòng)態(tài)整合虛擬機(jī)的新方法,監(jiān)控每個(gè)主機(jī)的CPU 利用率、RAM 利用率和實(shí)例數(shù),使用SVM 分類模型執(zhí)行主機(jī)過載檢測(cè)并根據(jù)分類結(jié)果進(jìn)行負(fù)載均衡整合。Khan 等[20]提出一種通過整合虛擬機(jī)、容器和容器化應(yīng)用程序之前的有效遷移以降低數(shù)據(jù)中心能耗。
本文所提出的基于隨機(jī)森林的能耗預(yù)測(cè)調(diào)度算法(ECPRF)結(jié)構(gòu)如圖1 所示,主要分為3 部分:能耗采集、能耗預(yù)測(cè)、OpenStack 調(diào)度策略。其中,OpenStack 調(diào)度策略分為具有容錯(cuò)機(jī)制的虛擬機(jī)創(chuàng)建、虛擬機(jī)遷移兩部分。
Fig.1 Flow of ECPRF algorithm圖1 ECPRF算法流程
IPMI(Intelligent Platform Management Interface)是智能平臺(tái)管理接口的縮寫,用于帶外管理計(jì)算機(jī),使用IPMI 可以獲取服務(wù)器當(dāng)前能耗,如圖2所示。ECPRF 算法使用IPMITOOL 中ipmitool sdr list 命令周期向服務(wù)器發(fā)送,并將服務(wù)器返回的能耗數(shù)據(jù)寫入MySQL 數(shù)據(jù)庫(kù),并標(biāo)注采集時(shí)間,構(gòu)成服務(wù)器能耗數(shù)據(jù)集。
隨機(jī)森林采用BootStrap 方法對(duì)含有M 個(gè)樣本的數(shù)據(jù)集有放回地隨機(jī)抽取N(N≤M)個(gè)樣本組成新樣本,每一次的樣本不完全相同,根據(jù)這些樣本構(gòu)建決策樹,并在Bagging 的基礎(chǔ)上對(duì)每棵決策樹進(jìn)行隨機(jī)特征的選擇,然后對(duì)測(cè)試集進(jìn)行回歸預(yù)測(cè),對(duì)預(yù)測(cè)結(jié)果進(jìn)行整合,投票得出最終結(jié)果。如圖3 所示,在使用隨機(jī)森林模型預(yù)測(cè)能耗變化的過程中,由于能耗為單變量數(shù)據(jù),能耗值與時(shí)間相對(duì)應(yīng),特征數(shù)較少,體現(xiàn)不出特征的隨機(jī)性,因此將能耗數(shù)據(jù)特征分為平滑特征和時(shí)間特征兩大部分。其中,平滑特征是指將數(shù)據(jù)向前平移得到的特征,時(shí)間特征是根據(jù)日期等時(shí)間特性得到的特征。根據(jù)這些特征建立決策樹進(jìn)行回歸預(yù)測(cè),最后將得到的所有回歸結(jié)果進(jìn)行投票選擇,投票最高的結(jié)果為最終模型輸出。
Fig.2 Energy consumption acquisition process圖2 能耗采集過程
Fig.3 Random forest prediction model圖3 隨機(jī)森林預(yù)測(cè)模型
本文使用OpenStack 作為云計(jì)算管理平臺(tái)。OpenStack是一個(gè)免費(fèi)的開源云計(jì)算平臺(tái),是Rackspace 和美國(guó)國(guó)家航空局(NASA)于2010 年合作開發(fā)。OpenStack 主要使用池化虛擬資源構(gòu)建和管理私有云及公共云,用戶通過Web界面、命令行工具或RESTful API 進(jìn)行管理。OpenStack 中有關(guān)虛擬機(jī)創(chuàng)建及管理主要通過Nova 項(xiàng)目完成,在Nova中,各組件通過RPC 進(jìn)行通信。Nova 主要是由API、Compute、Conductor、Scheduler 4 個(gè)核心組件構(gòu)成,其中Nova-Scheduler 負(fù)責(zé)虛擬機(jī)調(diào)度相關(guān)策略。目前,Nova 實(shí)現(xiàn)了隨機(jī)選擇的ChanceScheduler 調(diào)度策略、過濾選擇的Filter-Scheduler 調(diào)度策略、將主機(jī)資源信息緩存在本地內(nèi)存的CachingScheduler 調(diào)度策略。Nova 支持自定義調(diào)度器,F(xiàn)ilterScheduler 調(diào)度策略是通過服務(wù)器的硬件條件過濾篩選出符合條件的服務(wù)器隊(duì)列,為了篩選物理資源符合虛擬機(jī)運(yùn)行的服務(wù)器,本文使用基于FilterScheduler 的調(diào)度策略篩選硬件條件符合創(chuàng)建條件的服務(wù)器。通過外鍵將服務(wù)器基礎(chǔ)數(shù)據(jù)與服務(wù)器能耗關(guān)聯(lián),使用Nova 中的BaseHost-Filter 類構(gòu)建基于隨機(jī)森林預(yù)測(cè)的調(diào)度算法。在硬件條件符合創(chuàng)建條件的服務(wù)器基礎(chǔ)上篩選出未來能耗較低的服務(wù)器隊(duì)列。
2.3.1 容錯(cuò)機(jī)制
盡管使用隨機(jī)森林算法可提升預(yù)測(cè)精確度,但預(yù)測(cè)結(jié)果與真實(shí)值之間難免存在誤差??紤]到預(yù)測(cè)結(jié)果存在誤差,為防止出現(xiàn)誤差過大而引起虛擬機(jī)遷移/不遷移情況,本文采取了連續(xù)預(yù)測(cè)的容錯(cuò)機(jī)制,即將預(yù)測(cè)時(shí)間分為連續(xù)的時(shí)間間隔,將最后一次時(shí)間間隔預(yù)測(cè)的能耗值作為服務(wù)器未來能耗值,若之前的時(shí)間間隔預(yù)測(cè)能耗值與服務(wù)器真實(shí)值相差無幾,則認(rèn)為最后一次時(shí)間間隔預(yù)測(cè)值是準(zhǔn)確的。使用該容錯(cuò)機(jī)制可以有效避免由于預(yù)測(cè)值與實(shí)際值差距過大而引起的虛擬機(jī)錯(cuò)誤遷移。
2.3.2 調(diào)度策略
服務(wù)器能耗越高,則服務(wù)器溫度越高,進(jìn)而造成了熱點(diǎn)現(xiàn)象。通過設(shè)置能耗閾值,將能耗閾值作為服務(wù)器運(yùn)行時(shí)的最高能耗,服務(wù)器能耗若超過能耗閾值則認(rèn)為該服務(wù)器出現(xiàn)熱點(diǎn)現(xiàn)象。將服務(wù)器能耗長(zhǎng)期控制在能耗閾值之下,可以避免服務(wù)器熱點(diǎn)現(xiàn)象出現(xiàn)。
ECPRF 算法的調(diào)度策略分為虛擬機(jī)創(chuàng)建和虛擬機(jī)遷移兩部分。如圖4 所示,在虛擬機(jī)創(chuàng)建時(shí),首先獲取每臺(tái)服務(wù)器上的預(yù)測(cè)能耗值,篩選出低于能耗閾值的服務(wù)器隊(duì)列,在此隊(duì)列基礎(chǔ)上選擇符合創(chuàng)建所需資源且能耗最低的服務(wù)器,避免將虛擬機(jī)創(chuàng)建在高能耗服務(wù)器上。如圖5 所示,ECPRF 算法周期性獲取每臺(tái)服務(wù)器預(yù)測(cè)能耗值,遍歷服務(wù)器隊(duì)列,將高于能耗閾值服務(wù)器中的虛擬機(jī)遷移至符合該虛擬機(jī)運(yùn)行所需物理資源且預(yù)測(cè)能耗最低的服務(wù)器中。通過遷移虛擬機(jī)使服務(wù)器能耗長(zhǎng)期處于能耗閾值以下,從而避免熱點(diǎn)現(xiàn)象出現(xiàn)。
在虛擬機(jī)遷移過程中,ECPRF 算法使用OpenStack Live Migration(熱遷移)方法,即虛擬機(jī)在運(yùn)行狀態(tài)下進(jìn)行遷移,保證虛擬機(jī)中的任務(wù)不會(huì)因?yàn)樘摂M機(jī)遷移而中斷。遷移虛擬機(jī)個(gè)數(shù)由遷移后能耗下降范圍決定。能耗下降計(jì)算可由式(1)表示:
其中,ΔV表示能耗下降的最小范圍,Vpredict表示預(yù)測(cè)能耗值,Vactual表示實(shí)際能耗。若遷移后能耗差值大于V,則停止遷移虛擬機(jī)。
Fig.4 Virtual machine construction圖4 虛擬機(jī)創(chuàng)建
Fig.5 Virtual machine migration圖5 虛擬機(jī)遷移
3.1.1 實(shí)驗(yàn)環(huán)境
本次實(shí)驗(yàn)在國(guó)家超級(jí)計(jì)算濟(jì)南中心研發(fā)云平臺(tái)進(jìn)行,實(shí)驗(yàn)選取4 臺(tái)曙光A620-G30 服務(wù)器作為計(jì)算節(jié)點(diǎn)。采用對(duì)照實(shí)驗(yàn)的方式,將服務(wù)器分為兩組,每組兩臺(tái)服務(wù)器。一組使用ECPRF 算法,節(jié)點(diǎn)名稱為node1、node2。一組使用OpenStack 基礎(chǔ)調(diào)度策略,節(jié)點(diǎn)名稱為node3、node4。計(jì)算節(jié)點(diǎn)配置詳細(xì)參數(shù)和節(jié)點(diǎn)拓?fù)鋱D如表1、圖6所示。
Table 1 Server configuration表1 服務(wù)器配置
Fig.6 Testbed topology architecture圖6 測(cè)試環(huán)境拓?fù)浼軜?gòu)
3.1.2 實(shí)驗(yàn)數(shù)據(jù)
本文對(duì)不同負(fù)載下的服務(wù)器進(jìn)行監(jiān)控,每5 分鐘收集一次服務(wù)器能耗數(shù)據(jù),如表2所示。
3.1.3 實(shí)驗(yàn)數(shù)據(jù)處理
(1)數(shù)據(jù)清理。node 屬性對(duì)預(yù)測(cè)結(jié)果無影響,在建模時(shí)刪除node 屬性,使能耗數(shù)據(jù)變?yōu)闀r(shí)間—能耗的單變量數(shù)據(jù)。通過pandas 庫(kù)中的to_datetime()函數(shù)將時(shí)間參數(shù)轉(zhuǎn)換為時(shí)間格式。
(2)數(shù)據(jù)集劃分。由于數(shù)據(jù)集為時(shí)間序列型,為了防止破壞時(shí)間順序,將數(shù)據(jù)集按照時(shí)間順序以7∶3 的比例將其劃分為訓(xùn)練集和測(cè)試集。
(3)特征建立。處理后的能耗數(shù)據(jù)為單變量數(shù)據(jù),將特征分為平滑特征與時(shí)間特征,平滑特征是指將能耗值向前做平滑,時(shí)間特征為每分鐘均值、每小時(shí)均值、工作日均值和周末均值。具體名稱和含義如表3所示。
3.1.4 評(píng)估函數(shù)
為了評(píng)價(jià)模型精準(zhǔn)度,本文使用平均絕對(duì)誤差(MAE)和R 平方得分(R2_score)對(duì)預(yù)測(cè)結(jié)果進(jìn)行分析。評(píng)價(jià)指標(biāo)計(jì)算如下:
Table 2 Energy consumption data set sample表2 能耗數(shù)據(jù)集樣例
Table 3 Data set characteristics表3 數(shù)據(jù)集特征
對(duì)數(shù)據(jù)集分別使用隨機(jī)森林、線性回歸、嶺回歸、LASSO 回歸模型進(jìn)行預(yù)測(cè),并對(duì)預(yù)測(cè)結(jié)果進(jìn)行驗(yàn)證評(píng)估,證明使用隨機(jī)森林進(jìn)行預(yù)測(cè)的準(zhǔn)確性。同時(shí)設(shè)置對(duì)照組,通過兩組的服務(wù)器能耗變化,證明ECPRF 算法避免服務(wù)器出現(xiàn)熱點(diǎn)現(xiàn)象的有效性。具體實(shí)現(xiàn)方法如下:①對(duì)能耗數(shù)據(jù)進(jìn)行處理,構(gòu)建符合要求的數(shù)據(jù)集;②通過調(diào)用訓(xùn)練集完成對(duì)隨機(jī)森林模型的訓(xùn)練,并對(duì)預(yù)測(cè)效果進(jìn)行分析,判斷預(yù)測(cè)的精準(zhǔn)度并與同等條件下使用線性回歸、嶺回歸、LASSO 回歸模型進(jìn)行比較;③根據(jù)預(yù)測(cè)結(jié)果對(duì)超過能耗閾值的物理機(jī)執(zhí)行虛擬機(jī)遷移處理;為了確定最優(yōu)的連續(xù)預(yù)測(cè)次數(shù),將預(yù)測(cè)次數(shù)分為3 次、4 次、5 次,每次時(shí)間間隔為5分鐘,則預(yù)測(cè)10 分鐘、15 分鐘、20 分鐘后的能耗變化,同時(shí)設(shè)置可接受預(yù)測(cè)能耗誤差范圍為20,尋找最優(yōu)預(yù)測(cè)次數(shù)。若之前預(yù)測(cè)結(jié)果正確,采用最后一次預(yù)測(cè)能耗作為該服務(wù)器未來能耗。若出現(xiàn)預(yù)測(cè)錯(cuò)誤,則將出現(xiàn)錯(cuò)誤時(shí)間下服務(wù)器的實(shí)際能耗值與能耗閾值進(jìn)行比較,如果超出閾值上限,則進(jìn)行虛擬機(jī)遷移操作;④設(shè)置對(duì)照組,在node1 與node3 上創(chuàng)建14 臺(tái)相同的虛擬機(jī),每臺(tái)虛擬機(jī)都是有8 核CPU、16GB 內(nèi)存、40GB 磁盤組成,操作系統(tǒng)為Ubuntu 18.04.5。在node1與node3運(yùn)行相同程序以產(chǎn)生相同能耗,node2 與node4 不創(chuàng)建虛擬機(jī)。設(shè)置能耗閾值上限為800。運(yùn)行一段時(shí)間后,對(duì)比兩組節(jié)點(diǎn)能耗變化情況。
3.3.1 各模型誤差比較結(jié)果
各模型在該數(shù)據(jù)集上的平均絕對(duì)誤差和R 平方得分結(jié)果如圖7-圖8 所示??梢缘贸?,在MAE 中,從測(cè)試集的預(yù)測(cè)結(jié)果來看隨機(jī)森林模型的預(yù)測(cè)精度最高,MAE 僅為9.94,而線性回歸、嶺回歸、LASSO 回歸分別為69.61、43.22、54.86;在R2_score 中隨機(jī)森林依舊得分最高,預(yù)測(cè)精度達(dá)0.99,最差是線性回歸,得分僅為0.71。結(jié)果表明,隨機(jī)森林預(yù)測(cè)精準(zhǔn)度最高,因此使用隨機(jī)森林模型進(jìn)行預(yù)測(cè)。
Fig.7 Comparison of MAE圖7 平均誤差結(jié)果比較
Fig.8 Comparison of R2圖8 R2結(jié)果比較
3.3.2 預(yù)測(cè)結(jié)果比較
使用隨機(jī)森林模型對(duì)經(jīng)過預(yù)處理和轉(zhuǎn)換后的測(cè)試集數(shù)據(jù)進(jìn)行預(yù)測(cè),預(yù)測(cè)結(jié)果和實(shí)際結(jié)果如圖9 所示??梢缘贸?,在小幅度震蕩時(shí)會(huì)影響預(yù)測(cè)精準(zhǔn)度,但是在整體上隨機(jī)森林模型可以很好地預(yù)測(cè)數(shù)據(jù),預(yù)測(cè)的服務(wù)器能耗和實(shí)際服務(wù)器能耗曲線趨勢(shì)相吻合。因此,隨機(jī)森林預(yù)測(cè)模型在預(yù)測(cè)服務(wù)器能耗上是可行的。
Fig.9 Comparison between predicted with the actual results圖9 預(yù)測(cè)結(jié)果與真實(shí)結(jié)果比較
3.3.3 容錯(cuò)機(jī)制預(yù)測(cè)次數(shù)分析
設(shè)定能耗誤差范圍為20W,對(duì)于連續(xù)次數(shù)預(yù)測(cè)利用網(wǎng)格搜索法在[3,4,5]范圍內(nèi)進(jìn)行實(shí)驗(yàn)分析。如表4 所示,當(dāng)預(yù)測(cè)連續(xù)次數(shù)為3 次時(shí),預(yù)測(cè)100 次和1 000 次的正確率均為100%,而預(yù)測(cè)連續(xù)次數(shù)為4 次、5 次,預(yù)測(cè)正確率逐步降低。因?yàn)殡S著預(yù)測(cè)時(shí)刻和當(dāng)前時(shí)刻距離的增大,當(dāng)前時(shí)刻數(shù)據(jù)對(duì)預(yù)測(cè)結(jié)果的影響越來越小,導(dǎo)致誤差越來越大。當(dāng)誤差超過預(yù)設(shè)范圍時(shí),即認(rèn)定模型預(yù)測(cè)失敗。因此,本文設(shè)定連續(xù)預(yù)測(cè)次數(shù)為3。
Table 4 Prediction accuracy under different times of prediction表4 不同預(yù)測(cè)次數(shù)下的預(yù)測(cè)正確率
3.3.4 ECPRF算法有效性分析
圖10 為各節(jié)點(diǎn)能耗值。node1 能耗為683,node3 能耗為875。node2 能耗為432,node4 能耗為234。由于能耗值超過設(shè)定閾值上限,node1 使用隨機(jī)森林預(yù)測(cè)將虛擬機(jī)提前遷移至node2,導(dǎo)致node2 能耗上升,node1 能耗保持在閾值以下,而node3 高于閾值,出現(xiàn)熱點(diǎn)現(xiàn)象。圖11 為node1 與node3 在一天內(nèi)的最高能耗變化情況,node1 能耗維持在能耗閾值以下,而node3 能耗超出能耗閾值,node3出現(xiàn)熱點(diǎn)現(xiàn)象。綜上所述,ECPRF 算法能有效避免服務(wù)器出現(xiàn)熱點(diǎn)現(xiàn)象。
Fig.10 Node energy consumption圖10 節(jié)點(diǎn)能耗值
Fig.11 Node energy consumption change圖11 節(jié)點(diǎn)能耗變化
本文針對(duì)服務(wù)器出現(xiàn)的熱點(diǎn)現(xiàn)象,提出了一種基于隨機(jī)森林的能耗調(diào)度算法(ECPRF)。ECPRF 算法首先根據(jù)一段時(shí)間內(nèi)的能耗構(gòu)建時(shí)間序列向量,然后以時(shí)間—能耗序列作為輸入,使用隨機(jī)森林模型預(yù)測(cè)未來服務(wù)器能耗變化,最后根據(jù)未來服務(wù)器能耗進(jìn)行虛擬機(jī)遷移,避免出現(xiàn)熱點(diǎn)現(xiàn)象。本文分別使用線性回歸、嶺回歸、LASSO 回歸進(jìn)行預(yù)測(cè)對(duì)比,證明了使用隨機(jī)森林模型預(yù)測(cè)的準(zhǔn)確性。同時(shí),將ECPRF 算法與OpenStack 提供的算法進(jìn)行對(duì)比,證明ECPRF 算法在保持服務(wù)器能耗穩(wěn)定、避免出現(xiàn)熱點(diǎn)上具有較好有效性。