武 晉,何利力,鄭軍紅,程丹丹
(浙江理工大學 信息學院,杭州 310018)
云計算服務的廣泛應用極大地促進了數據中心的發展,但與此同時,規模日趨龐大的數據中心產生了巨大的能耗.根據美國勞倫斯伯克利國家實驗室最近發布的美國數據中心能源使用報告,在2014年,美國的數據中心能耗已達到700 億千瓦時,約占美國總用電量的1.8%[1].數據中心的能耗問題引起了IT 界的密切關注,能耗管理也成為了近年來的研究熱點.數據中心能耗優化的相關研究往往需要大量的實驗,而在實體服務器集群環境中,實驗參數出現差錯或中間結果失效都會導致實驗的失敗,重啟服務會大大增加實驗周期,并且在實體集群中進行實驗需要承擔巨額的費用[2].云計算仿真平臺很好的解決了這一問題,使面向大規模云資源能耗優化的相關研究能夠更加經濟、高效.但仿真技術也存在著一定的局限性,仿真平臺無法直接測量能耗,只能通過內置的能耗模型進行估算.因此,能耗評估是云計算仿真的關鍵環節,直接決定了仿真實驗的準確度和可信度.
目前已有的云計算數據中心的能耗評估方法可以大致分為兩類,一是云計算仿真平臺中內置的能耗模型,二是面向真實的物理集群進行的能耗評估.
當前應用最為廣泛的云計算仿真平臺是澳大利亞墨爾本大學的網格實驗室開發的CloudSim[3],為估算仿真平臺的能耗,CloudSim 內置了Power模塊,提供了依賴于服務器CPU 利用率的能耗評估模型.CloudSim的能耗模型可以分為兩類,一類分別采用CPU 利用率的平方根、線性、平方、立方來計算能耗,另一類依據SPECpower 記錄的服務器功耗情況對特定的7 種服務器進行能耗計算.其中SPECpower 能耗模型采用了服務器真實的CPU 使用率和能耗數據作為樣本,選取了11個采樣數據點,最終采用一元分段式模型來進行能耗計算.
除了仿真平臺的內置能耗模型之外,很多學者進行了面向真實集群的能耗評估方法相關研究.文獻[4]的研究表明,數據中心服務器的能耗可以利用CPU 利用率來計算,可以簡單高效地采用一元線性回歸數學模型來進行能耗建模.而文獻[5]認為服務器的能耗和CPU的利用率不是完全的線性關系,服務器的能耗增速隨著CPU 利用率的增加逐漸增大,之后增速逐漸平穩再迅速減小,直到能耗值達到最大.文獻[6]指出,數據中心的能耗與CPU 利用率、內存、主板、外存等有關,僅僅使用CPU 利用率來進行能耗估算可能會導致能耗估算誤差較大.文獻[7]提出了利用CPU 實時利用率、CPU 實時頻率和內存利用率,結合多元線性回歸進行能耗建模,提高了能耗建模的精確度,但采用的參數較多.在文獻[8]中,采用基于CPU 和內存使用率的多元線性和多元非線性方法進行能耗建模,選用的參數較少,且結果較為準確,適合移植到仿真環境中,但在建模過程中沒有考慮CPU 利用率對內存能耗的影響,以及在計算節點啟動過程中的狀態轉換能耗.隨著服務器處理器的不斷改進,相關學者開始從性能計數器的角度進行能耗建模的研究.在文獻[9]中,采用性能事件進行建模,定義了22個性能事件,通過全回歸的數學模型進行能耗評估.在文獻[10]中,選用CPU、內存、I/O 等主要組件的細粒度性能計數器作為特征值集合,并建立該集合與運行時系統總功耗的對應關系,通過多元線性回歸的方法確定相關系數,最終得到較為精確的能耗模型.基于性能計數器的能耗建模方法具有較高的準確性,但測算數據中心能耗的監控參數過多,難以在仿真平臺中實現.
針對以上問題,本文對CloudSim 云計算仿真平臺的能耗模塊進行了修改,提出了適用于仿真環境能耗評估方法,該方法基于計算節點的CPU 和內存利用率,并考慮了狀態轉換能耗和CPU 利用率對內存能耗的影響,利用多元回歸進行建模.本文通過實驗對比了CloudSim 一元線性模型、CloudSim 一元分段式模型、多元線性模型、多元非線性模型的能耗評估效果,驗證了本文提出的能耗評估方法的有效性.
云計算仿真平臺的主要功能是為數據中心資源調度等相關實驗提供實驗環境,盡管仿真環境在規模和精度等方面與真實集群有一定的差距,但它可以創建一個近似的模擬環境,使數據中心資源調度相關實驗可以在一個較小的計算環境中進行.應用于仿真環境中的能耗評估方法,應該在保證易于建模的基礎上,盡量提高其評估的準確性,因此需要監測多的性能參數或者過于復雜的決策評估過程并不適用于仿真環境.
云計算數據中心的總能耗包括云計算中心的計算節點能耗、網絡設備能耗、存儲設備能耗、溫控設備能耗和其他設備能耗.網絡、存儲、溫控及其他設備能耗的變化相對較小,因此在仿真環境的能耗評估過程中,我們將其視為恒定的能耗.數據中心的計算節點可能是同構的也可能是異構的,為簡化能耗評估過程,我們假定數據中心中所有的計算節點都是同構的,并且具有相同的配置,那么數據中心的能耗可以表示為:

其中,E(DC)為數據中心的總能耗,N代表同構計算節點個數,E(i)代表同構節點能耗,E(other)代表網絡、存儲、溫控和其他設備的恒定能耗.
計算機系統的能耗通過功率來計算,在實際情況下,計算節點能耗并不能以一個固定的功率和時間做簡單乘積來度量,對于單個計算節點來說,能耗與功率的關系如式(2)所示:

其中,E(i)為云計算數據中心同構節點能耗,Prun為同構節點的運行功率,s為節點i發生狀態轉換的次數,Es為節點i啟動時的瞬時能耗.服務器在啟動時功率會迅速上升,產生較大的能耗,忽略啟動瞬時能耗會影響數據中心能耗模型的準確度.特別是對于虛擬機分配和遷移算法的能耗評估,如果不考慮啟動能耗,將無法衡量物理機頻繁的開閉產生的能耗.啟動能耗可以通過測量得到,這里用常量表示.通過上述分析,將云計算數據中心的能耗評估簡化為同構計算節點實時功率建模.
在實際情況下,計算機功率的變化情況是十分復雜的,受多種因素的綜合影響.其中CPU 是計算機的主要能耗組件,已有的基于計算機系統的資源利用率的能耗模型幾乎都首先將CPU的能耗考慮在內.內存組件本身能耗消費不高,但CPU 與內存互相關聯,任務的運行往往伴隨著CPU 和內存利用率的同時提高,從而導致整體能耗的提高,因此內存也是能耗評估時需考慮在內的重要組件[8].另外硬盤、網絡接口等組件也會產生一定的能耗,但對整體能耗的影響相對較小,為簡化能耗模型,可以將計算節點的實時功率按各個組件進行分解,表示為:

其中,P(cpu)和P(mem)分別表示計算機處理器和內存對功率的影響,P(others)表示硬盤、網絡接口等其他組件對計算節點功率的影響.由于硬盤和網絡接口對整體能耗影響較低,且對于仿真環境來說引入過多變量將導致模型過于復雜,大大增加重寫能耗模型的難度,因此我們只針對與能耗關系最緊密的處理器和內存進行建模,網絡接口和硬盤的能耗將被視為常量.其中處理器能耗用CPU 利用率來構建,內存能耗通過內存利用率來構建.
為保證仿真環境下的數據中心能耗模型的可信度和準確度,在建模之前需要收集大量的真實數據,根據上一節闡述的能耗建模原理,采樣數據應包括同構節點對應的CPU 利用率、內存利用率和實時功率.
在本文中,同構節點的操作系統為CentOS,在Linux 系統中,可以采用top 命令來監測系統的CPU利用率和內存利用率.執行top 命令會顯示CPU 和內存的相關信息,可以表示為:
Cpu(s):3.3 us,1.4 sy,0.0 ni,94.7 id,0.6 wa,0.0 hi,0.0 si,0.0 st
Mem:3803368 total,2117404 free,1084500 used,601464 buffers
其中與CPU 利用率相關的參數有us、sy和id,分別代表用戶空間占用CPU的百分比、內核空間占用CPU的百分比和空閑百分比,CPU 利用率的計算公式可以表示為

與內存相關的參數有total,used,free,buffers,分別表示物理內存總量、使用中的內存、空閑內存和緩存內存,內存利用率的計算公式可以表示為:

同構節點的實時功率采用HP-9800 功率儀進行測量,HP-9800 功率儀包含USB 接口,可以連接收集數據的主機,通過代理軟件將功率和對應的時間導入到計算機中.同構節點實時功率采樣拓撲如圖1.

圖1 實時功率采樣拓撲
在完成CPU 利用率、內存利用率和實時功率的數據采集后,通過采集時間進行匹配,形成功率、CPU 利用率、內存利用率的三元組,采樣結果如圖2.

圖2 采樣結果圖
在本文中,通過采樣得到了近3800 組CPU 利用率、內存利用率和實時功率數據,將CPU 利用率和內存利用率作為自變量,實時功率作為因變量,通過多元線性回歸和多元非線性回歸的方式進行能耗建模與驗證.
3.2.1 多元線性回歸模型
多元線性回歸是處理變量間相關關系時常用的分析手段,含n個變量的多元線性回歸模型可以表示為:

其中,β0,β1,β2,…,βn為回歸系數,ε為隨機誤差,多元線性回歸的過程就是對回歸系數和誤差的計算.利用多元線性回歸方法進行建模,因變量與每個自變量需大致滿足線性關系,即要求自變量CPU 利用率、內存利用率與因變量實時功率的線性相關系數大于0.75,線性相關系數計算公式為:

將采樣的得到的3800 組數據代入上式進行計算,CPU 利用率、內存利用率與功率的線性相關系數分別為:rcpu=0.9603,rmem=0.9537.由此可以得出,CPU 利用率、內存利用率與功率之間的線性關系較強,可以嘗試采用多元線性回歸的方式進行能耗建模.多元線性回歸的能耗模型可以表示為:

其中,β0,β1,β2為需要確定的回歸系數,通過回歸分析可以得到β0的值為36.6309,β1的值為0.5315,β2的值為-0.1644.
3.2.2 多元非線性回歸模型
多元線性回歸模型簡單、高效并且易于使用,但它更適用于自變量之間相互獨立的問題.而在本文中,由于CPU 和內存是通過主板連接的一個整體,CPU 和內存的能耗產生可能會相互影響,并且功率和CPU 利用率、內存利用率不是絕對的線性關系,為進一步提高能耗模型的準確性,本文引入了非線性模型,并將CPU 對內存的影響考慮在內.
首先采用多項式模型為基本函數,初步得到非線性能耗模型,計算公式如下:

CPU 是計算機的主要能耗組件,并且對內存能耗存在著一定的影響,因此內存相關系數β3,β4可能與CPU 利用率相關.我們首先通過多項式回歸分析,得到只考慮CPU 利用率時β0,β1,β2的值.之后將采樣數據分為38 組,每組一百份數據,在β0,β1,β2值固定的情況下,觀察CPU 利用率的變化對內存的相關系數β3,β4的影響.分析發現,β4的值隨CPU 利用率變化不明顯,在一定的區間內上下浮動,而β3隨CPU 利用率變化明顯,其變化趨勢如圖3.

圖3 CPU 利用率與內存相關系數分布圖
通過曲線擬合得到CPU 利用率和內存的相關系數β3函數形式,之后結合式(9)得到非線性能耗評估模型,如式(10)所示:

得到函數基本模型后,通過進一步非線性回歸分析,確定各個系數值,其中β0,β1,β2,β4分別取值為20.5604,1.3027,-0.0107,-0.0041,γ0,γ1,γ2分別取值為1.5963,0.0200,-0.6236.
完成能耗模型建立后,將依據能耗模型進行能耗評估,為比較評估結果的精確度,將采用相對偏差和平均相對偏差作為評估標準.其中相對偏差反應每個采樣點的評估精度,平均相對偏差反應模型評估的整體情況.相對偏差和平均相對偏差的計算公式如下:

為驗證本文提出的能耗模型的有效性,本文采用CloudSim 內置模型作為參考組設計了對比實驗.CloudSim中內置的能耗模型全部為基于CPU 利用率的一元模型,在對比實驗中選擇最為常用的一元線性模型和較為準確的一元分段式模型作為對照組.其中一元分段式模型將CPU 利用率以10%為梯度進行分段,設置11個分段點,在每個分段內采用一元線性模型來計算服務器功率,實驗的軟硬件環境見表1.

表1 實驗軟硬件參數表
CloudSim 一元線性模型、CloudSim 一元分段式模型、多元線性模型、多元非線性模型的能耗預測值和能耗真實值的對比情況依次如圖4 至圖7所示.
通過對比各個能耗模型的預測值和能耗真實值可以直觀地判斷各個模型的預測準確性.之后,根據公式(11)計算可以得到CloudSim 仿真平臺一元線性模型、CloudSim 一元分段式模型、多元線性模型、多元非線性模型的相對偏差,反應了各個模型每個采樣點的預測誤差分布情況.以上四個模型的相對偏差情況如圖8 至圖11所示.

圖4 CloudSim 一元線性模型預測情況

圖5 CloudSim 一元分段式模型預測情況

圖6 多元線性回歸模型預測情況
根據式(12)計算可得到各個模型的平均相對偏差,其中CloudSim 一元線性模型的平均相對偏差為0.0659,CloudSim 一元分段式模型為0.0421,多元線性模型的平均相對偏差為0.0261,多元非線性模型為0.0094,通過對比以上四種模型的預測情況、相對偏差和平均相對偏差,可以發現,多元線性模型、多元非線性模型預測效果均優于CloudSim 平臺中的內置模型,其中考慮了CPU 對內存能耗影響的多元非線性模型有較為明顯的優勢.因此,選擇本文提出的多元非線性模型重寫仿真平臺的能耗評估方法,用于資源調度相關實驗的能耗評估.

圖7 多元非線性回歸模型預測情況
本文針對云計算仿真平臺中數據中心能耗評估誤差較大的問題,提出了基于計算機CPU 和內存利用率的多元非線性能耗評估方法.實驗結果表明,本文提出的多元非線性能耗模型在適用于云計算仿真平臺的同時,有較高的準確性,有效的提高了仿真環境中的能耗評估效果.在本文中為簡化能耗評估過程,將數據中心的網絡、存儲等設備產生的能耗和計算節點的硬盤、網絡接等口產生的能耗都視為了常量,接下來的研究將分析這些設備或組件的能耗特性,在盡量保證仿真過程簡單可行的前提下,進一步提高仿真模型的精確度.此外,還將在重寫了能耗模型的CloudSim 仿真平臺中實現資源調度算法,以本文的能耗評估方法為標準進行能耗感知相關實驗.

圖8 CloudSim 一元線性模型相對偏差

圖9 CloudSim 一元線分段模型相對偏差

圖10 多元線性回歸模型相對偏差

圖11 多元非線性回歸模型相對偏差