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