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