武 晉,何利力,鄭軍紅,程丹丹
(浙江理工大學(xué) 信息學(xué)院,杭州 310018)
云計(jì)算服務(wù)的廣泛應(yīng)用極大地促進(jìn)了數(shù)據(jù)中心的發(fā)展,但與此同時(shí),規(guī)模日趨龐大的數(shù)據(jù)中心產(chǎn)生了巨大的能耗.根據(jù)美國(guó)勞倫斯伯克利國(guó)家實(shí)驗(yàn)室最近發(fā)布的美國(guó)數(shù)據(jù)中心能源使用報(bào)告,在2014年,美國(guó)的數(shù)據(jù)中心能耗已達(dá)到700 億千瓦時(shí),約占美國(guó)總用電量的1.8%[1].數(shù)據(jù)中心的能耗問(wèn)題引起了IT 界的密切關(guān)注,能耗管理也成為了近年來(lái)的研究熱點(diǎn).數(shù)據(jù)中心能耗優(yōu)化的相關(guān)研究往往需要大量的實(shí)驗(yàn),而在實(shí)體服務(wù)器集群環(huán)境中,實(shí)驗(yàn)參數(shù)出現(xiàn)差錯(cuò)或中間結(jié)果失效都會(huì)導(dǎo)致實(shí)驗(yàn)的失敗,重啟服務(wù)會(huì)大大增加實(shí)驗(yàn)周期,并且在實(shí)體集群中進(jìn)行實(shí)驗(yàn)需要承擔(dān)巨額的費(fèi)用[2].云計(jì)算仿真平臺(tái)很好的解決了這一問(wèn)題,使面向大規(guī)模云資源能耗優(yōu)化的相關(guān)研究能夠更加經(jīng)濟(jì)、高效.但仿真技術(shù)也存在著一定的局限性,仿真平臺(tái)無(wú)法直接測(cè)量能耗,只能通過(guò)內(nèi)置的能耗模型進(jìn)行估算.因此,能耗評(píng)估是云計(jì)算仿真的關(guān)鍵環(huán)節(jié),直接決定了仿真實(shí)驗(yàn)的準(zhǔn)確度和可信度.
目前已有的云計(jì)算數(shù)據(jù)中心的能耗評(píng)估方法可以大致分為兩類,一是云計(jì)算仿真平臺(tái)中內(nèi)置的能耗模型,二是面向真實(shí)的物理集群進(jìn)行的能耗評(píng)估.
當(dāng)前應(yīng)用最為廣泛的云計(jì)算仿真平臺(tái)是澳大利亞墨爾本大學(xué)的網(wǎng)格實(shí)驗(yàn)室開(kāi)發(fā)的CloudSim[3],為估算仿真平臺(tái)的能耗,CloudSim 內(nèi)置了Power模塊,提供了依賴于服務(wù)器CPU 利用率的能耗評(píng)估模型.CloudSim的能耗模型可以分為兩類,一類分別采用CPU 利用率的平方根、線性、平方、立方來(lái)計(jì)算能耗,另一類依據(jù)SPECpower 記錄的服務(wù)器功耗情況對(duì)特定的7 種服務(wù)器進(jìn)行能耗計(jì)算.其中SPECpower 能耗模型采用了服務(wù)器真實(shí)的CPU 使用率和能耗數(shù)據(jù)作為樣本,選取了11個(gè)采樣數(shù)據(jù)點(diǎn),最終采用一元分段式模型來(lái)進(jìn)行能耗計(jì)算.
除了仿真平臺(tái)的內(nèi)置能耗模型之外,很多學(xué)者進(jìn)行了面向真實(shí)集群的能耗評(píng)估方法相關(guān)研究.文獻(xiàn)[4]的研究表明,數(shù)據(jù)中心服務(wù)器的能耗可以利用CPU 利用率來(lái)計(jì)算,可以簡(jiǎn)單高效地采用一元線性回歸數(shù)學(xué)模型來(lái)進(jìn)行能耗建模.而文獻(xiàn)[5]認(rèn)為服務(wù)器的能耗和CPU的利用率不是完全的線性關(guān)系,服務(wù)器的能耗增速隨著CPU 利用率的增加逐漸增大,之后增速逐漸平穩(wěn)再迅速減小,直到能耗值達(dá)到最大.文獻(xiàn)[6]指出,數(shù)據(jù)中心的能耗與CPU 利用率、內(nèi)存、主板、外存等有關(guān),僅僅使用CPU 利用率來(lái)進(jìn)行能耗估算可能會(huì)導(dǎo)致能耗估算誤差較大.文獻(xiàn)[7]提出了利用CPU 實(shí)時(shí)利用率、CPU 實(shí)時(shí)頻率和內(nèi)存利用率,結(jié)合多元線性回歸進(jìn)行能耗建模,提高了能耗建模的精確度,但采用的參數(shù)較多.在文獻(xiàn)[8]中,采用基于CPU 和內(nèi)存使用率的多元線性和多元非線性方法進(jìn)行能耗建模,選用的參數(shù)較少,且結(jié)果較為準(zhǔn)確,適合移植到仿真環(huán)境中,但在建模過(guò)程中沒(méi)有考慮CPU 利用率對(duì)內(nèi)存能耗的影響,以及在計(jì)算節(jié)點(diǎn)啟動(dòng)過(guò)程中的狀態(tài)轉(zhuǎn)換能耗.隨著服務(wù)器處理器的不斷改進(jìn),相關(guān)學(xué)者開(kāi)始從性能計(jì)數(shù)器的角度進(jìn)行能耗建模的研究.在文獻(xiàn)[9]中,采用性能事件進(jìn)行建模,定義了22個(gè)性能事件,通過(guò)全回歸的數(shù)學(xué)模型進(jìn)行能耗評(píng)估.在文獻(xiàn)[10]中,選用CPU、內(nèi)存、I/O 等主要組件的細(xì)粒度性能計(jì)數(shù)器作為特征值集合,并建立該集合與運(yùn)行時(shí)系統(tǒng)總功耗的對(duì)應(yīng)關(guān)系,通過(guò)多元線性回歸的方法確定相關(guān)系數(shù),最終得到較為精確的能耗模型.基于性能計(jì)數(shù)器的能耗建模方法具有較高的準(zhǔn)確性,但測(cè)算數(shù)據(jù)中心能耗的監(jiān)控參數(shù)過(guò)多,難以在仿真平臺(tái)中實(shí)現(xiàn).
針對(duì)以上問(wèn)題,本文對(duì)CloudSim 云計(jì)算仿真平臺(tái)的能耗模塊進(jìn)行了修改,提出了適用于仿真環(huán)境能耗評(píng)估方法,該方法基于計(jì)算節(jié)點(diǎn)的CPU 和內(nèi)存利用率,并考慮了狀態(tài)轉(zhuǎn)換能耗和CPU 利用率對(duì)內(nèi)存能耗的影響,利用多元回歸進(jìn)行建模.本文通過(guò)實(shí)驗(yàn)對(duì)比了CloudSim 一元線性模型、CloudSim 一元分段式模型、多元線性模型、多元非線性模型的能耗評(píng)估效果,驗(yàn)證了本文提出的能耗評(píng)估方法的有效性.
云計(jì)算仿真平臺(tái)的主要功能是為數(shù)據(jù)中心資源調(diào)度等相關(guān)實(shí)驗(yàn)提供實(shí)驗(yàn)環(huán)境,盡管仿真環(huán)境在規(guī)模和精度等方面與真實(shí)集群有一定的差距,但它可以創(chuàng)建一個(gè)近似的模擬環(huán)境,使數(shù)據(jù)中心資源調(diào)度相關(guān)實(shí)驗(yàn)可以在一個(gè)較小的計(jì)算環(huán)境中進(jìn)行.應(yīng)用于仿真環(huán)境中的能耗評(píng)估方法,應(yīng)該在保證易于建模的基礎(chǔ)上,盡量提高其評(píng)估的準(zhǔn)確性,因此需要監(jiān)測(cè)多的性能參數(shù)或者過(guò)于復(fù)雜的決策評(píng)估過(guò)程并不適用于仿真環(huán)境.
云計(jì)算數(shù)據(jù)中心的總能耗包括云計(jì)算中心的計(jì)算節(jié)點(diǎn)能耗、網(wǎng)絡(luò)設(shè)備能耗、存儲(chǔ)設(shè)備能耗、溫控設(shè)備能耗和其他設(shè)備能耗.網(wǎng)絡(luò)、存儲(chǔ)、溫控及其他設(shè)備能耗的變化相對(duì)較小,因此在仿真環(huán)境的能耗評(píng)估過(guò)程中,我們將其視為恒定的能耗.數(shù)據(jù)中心的計(jì)算節(jié)點(diǎn)可能是同構(gòu)的也可能是異構(gòu)的,為簡(jiǎn)化能耗評(píng)估過(guò)程,我們假定數(shù)據(jù)中心中所有的計(jì)算節(jié)點(diǎn)都是同構(gòu)的,并且具有相同的配置,那么數(shù)據(jù)中心的能耗可以表示為:
其中,E(DC)為數(shù)據(jù)中心的總能耗,N代表同構(gòu)計(jì)算節(jié)點(diǎn)個(gè)數(shù),E(i)代表同構(gòu)節(jié)點(diǎn)能耗,E(other)代表網(wǎng)絡(luò)、存儲(chǔ)、溫控和其他設(shè)備的恒定能耗.
計(jì)算機(jī)系統(tǒng)的能耗通過(guò)功率來(lái)計(jì)算,在實(shí)際情況下,計(jì)算節(jié)點(diǎn)能耗并不能以一個(gè)固定的功率和時(shí)間做簡(jiǎn)單乘積來(lái)度量,對(duì)于單個(gè)計(jì)算節(jié)點(diǎn)來(lái)說(shuō),能耗與功率的關(guān)系如式(2)所示:
其中,E(i)為云計(jì)算數(shù)據(jù)中心同構(gòu)節(jié)點(diǎn)能耗,Prun為同構(gòu)節(jié)點(diǎn)的運(yùn)行功率,s為節(jié)點(diǎn)i發(fā)生狀態(tài)轉(zhuǎn)換的次數(shù),Es為節(jié)點(diǎn)i啟動(dòng)時(shí)的瞬時(shí)能耗.服務(wù)器在啟動(dòng)時(shí)功率會(huì)迅速上升,產(chǎn)生較大的能耗,忽略啟動(dòng)瞬時(shí)能耗會(huì)影響數(shù)據(jù)中心能耗模型的準(zhǔn)確度.特別是對(duì)于虛擬機(jī)分配和遷移算法的能耗評(píng)估,如果不考慮啟動(dòng)能耗,將無(wú)法衡量物理機(jī)頻繁的開(kāi)閉產(chǎn)生的能耗.啟動(dòng)能耗可以通過(guò)測(cè)量得到,這里用常量表示.通過(guò)上述分析,將云計(jì)算數(shù)據(jù)中心的能耗評(píng)估簡(jiǎn)化為同構(gòu)計(jì)算節(jié)點(diǎn)實(shí)時(shí)功率建模.
在實(shí)際情況下,計(jì)算機(jī)功率的變化情況是十分復(fù)雜的,受多種因素的綜合影響.其中CPU 是計(jì)算機(jī)的主要能耗組件,已有的基于計(jì)算機(jī)系統(tǒng)的資源利用率的能耗模型幾乎都首先將CPU的能耗考慮在內(nèi).內(nèi)存組件本身能耗消費(fèi)不高,但CPU 與內(nèi)存互相關(guān)聯(lián),任務(wù)的運(yùn)行往往伴隨著CPU 和內(nèi)存利用率的同時(shí)提高,從而導(dǎo)致整體能耗的提高,因此內(nèi)存也是能耗評(píng)估時(shí)需考慮在內(nèi)的重要組件[8].另外硬盤(pán)、網(wǎng)絡(luò)接口等組件也會(huì)產(chǎn)生一定的能耗,但對(duì)整體能耗的影響相對(duì)較小,為簡(jiǎn)化能耗模型,可以將計(jì)算節(jié)點(diǎn)的實(shí)時(shí)功率按各個(gè)組件進(jìn)行分解,表示為:
其中,P(cpu)和P(mem)分別表示計(jì)算機(jī)處理器和內(nèi)存對(duì)功率的影響,P(others)表示硬盤(pán)、網(wǎng)絡(luò)接口等其他組件對(duì)計(jì)算節(jié)點(diǎn)功率的影響.由于硬盤(pán)和網(wǎng)絡(luò)接口對(duì)整體能耗影響較低,且對(duì)于仿真環(huán)境來(lái)說(shuō)引入過(guò)多變量將導(dǎo)致模型過(guò)于復(fù)雜,大大增加重寫(xiě)能耗模型的難度,因此我們只針對(duì)與能耗關(guān)系最緊密的處理器和內(nèi)存進(jìn)行建模,網(wǎng)絡(luò)接口和硬盤(pán)的能耗將被視為常量.其中處理器能耗用CPU 利用率來(lái)構(gòu)建,內(nèi)存能耗通過(guò)內(nèi)存利用率來(lái)構(gòu)建.
為保證仿真環(huán)境下的數(shù)據(jù)中心能耗模型的可信度和準(zhǔn)確度,在建模之前需要收集大量的真實(shí)數(shù)據(jù),根據(jù)上一節(jié)闡述的能耗建模原理,采樣數(shù)據(jù)應(yīng)包括同構(gòu)節(jié)點(diǎn)對(duì)應(yīng)的CPU 利用率、內(nèi)存利用率和實(shí)時(shí)功率.
在本文中,同構(gòu)節(jié)點(diǎn)的操作系統(tǒng)為CentOS,在Linux 系統(tǒng)中,可以采用top 命令來(lái)監(jiān)測(cè)系統(tǒng)的CPU利用率和內(nèi)存利用率.執(zhí)行top 命令會(huì)顯示CPU 和內(nèi)存的相關(guān)信息,可以表示為:
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 利用率相關(guān)的參數(shù)有us、sy和id,分別代表用戶空間占用CPU的百分比、內(nèi)核空間占用CPU的百分比和空閑百分比,CPU 利用率的計(jì)算公式可以表示為
與內(nèi)存相關(guān)的參數(shù)有total,used,free,buffers,分別表示物理內(nèi)存總量、使用中的內(nèi)存、空閑內(nèi)存和緩存內(nèi)存,內(nèi)存利用率的計(jì)算公式可以表示為:
同構(gòu)節(jié)點(diǎn)的實(shí)時(shí)功率采用HP-9800 功率儀進(jìn)行測(cè)量,HP-9800 功率儀包含USB 接口,可以連接收集數(shù)據(jù)的主機(jī),通過(guò)代理軟件將功率和對(duì)應(yīng)的時(shí)間導(dǎo)入到計(jì)算機(jī)中.同構(gòu)節(jié)點(diǎn)實(shí)時(shí)功率采樣拓?fù)淙鐖D1.
圖1 實(shí)時(shí)功率采樣拓?fù)?/p>
在完成CPU 利用率、內(nèi)存利用率和實(shí)時(shí)功率的數(shù)據(jù)采集后,通過(guò)采集時(shí)間進(jìn)行匹配,形成功率、CPU 利用率、內(nèi)存利用率的三元組,采樣結(jié)果如圖2.
圖2 采樣結(jié)果圖
在本文中,通過(guò)采樣得到了近3800 組CPU 利用率、內(nèi)存利用率和實(shí)時(shí)功率數(shù)據(jù),將CPU 利用率和內(nèi)存利用率作為自變量,實(shí)時(shí)功率作為因變量,通過(guò)多元線性回歸和多元非線性回歸的方式進(jìn)行能耗建模與驗(yàn)證.
3.2.1 多元線性回歸模型
多元線性回歸是處理變量間相關(guān)關(guān)系時(shí)常用的分析手段,含n個(gè)變量的多元線性回歸模型可以表示為:
其中,β0,β1,β2,…,βn為回歸系數(shù),ε為隨機(jī)誤差,多元線性回歸的過(guò)程就是對(duì)回歸系數(shù)和誤差的計(jì)算.利用多元線性回歸方法進(jìn)行建模,因變量與每個(gè)自變量需大致滿足線性關(guān)系,即要求自變量CPU 利用率、內(nèi)存利用率與因變量實(shí)時(shí)功率的線性相關(guān)系數(shù)大于0.75,線性相關(guān)系數(shù)計(jì)算公式為:
將采樣的得到的3800 組數(shù)據(jù)代入上式進(jìn)行計(jì)算,CPU 利用率、內(nèi)存利用率與功率的線性相關(guān)系數(shù)分別為:rcpu=0.9603,rmem=0.9537.由此可以得出,CPU 利用率、內(nèi)存利用率與功率之間的線性關(guān)系較強(qiáng),可以嘗試采用多元線性回歸的方式進(jìn)行能耗建模.多元線性回歸的能耗模型可以表示為:
其中,β0,β1,β2為需要確定的回歸系數(shù),通過(guò)回歸分析可以得到β0的值為36.6309,β1的值為0.5315,β2的值為-0.1644.
3.2.2 多元非線性回歸模型
多元線性回歸模型簡(jiǎn)單、高效并且易于使用,但它更適用于自變量之間相互獨(dú)立的問(wèn)題.而在本文中,由于CPU 和內(nèi)存是通過(guò)主板連接的一個(gè)整體,CPU 和內(nèi)存的能耗產(chǎn)生可能會(huì)相互影響,并且功率和CPU 利用率、內(nèi)存利用率不是絕對(duì)的線性關(guān)系,為進(jìn)一步提高能耗模型的準(zhǔn)確性,本文引入了非線性模型,并將CPU 對(duì)內(nèi)存的影響考慮在內(nèi).
首先采用多項(xiàng)式模型為基本函數(shù),初步得到非線性能耗模型,計(jì)算公式如下:
CPU 是計(jì)算機(jī)的主要能耗組件,并且對(duì)內(nèi)存能耗存在著一定的影響,因此內(nèi)存相關(guān)系數(shù)β3,β4可能與CPU 利用率相關(guān).我們首先通過(guò)多項(xiàng)式回歸分析,得到只考慮CPU 利用率時(shí)β0,β1,β2的值.之后將采樣數(shù)據(jù)分為38 組,每組一百份數(shù)據(jù),在β0,β1,β2值固定的情況下,觀察CPU 利用率的變化對(duì)內(nèi)存的相關(guān)系數(shù)β3,β4的影響.分析發(fā)現(xiàn),β4的值隨CPU 利用率變化不明顯,在一定的區(qū)間內(nèi)上下浮動(dòng),而β3隨CPU 利用率變化明顯,其變化趨勢(shì)如圖3.
圖3 CPU 利用率與內(nèi)存相關(guān)系數(shù)分布圖
通過(guò)曲線擬合得到CPU 利用率和內(nèi)存的相關(guān)系數(shù)β3函數(shù)形式,之后結(jié)合式(9)得到非線性能耗評(píng)估模型,如式(10)所示:
得到函數(shù)基本模型后,通過(guò)進(jìn)一步非線性回歸分析,確定各個(gè)系數(shù)值,其中β0,β1,β2,β4分別取值為20.5604,1.3027,-0.0107,-0.0041,γ0,γ1,γ2分別取值為1.5963,0.0200,-0.6236.
完成能耗模型建立后,將依據(jù)能耗模型進(jìn)行能耗評(píng)估,為比較評(píng)估結(jié)果的精確度,將采用相對(duì)偏差和平均相對(duì)偏差作為評(píng)估標(biāo)準(zhǔn).其中相對(duì)偏差反應(yīng)每個(gè)采樣點(diǎn)的評(píng)估精度,平均相對(duì)偏差反應(yīng)模型評(píng)估的整體情況.相對(duì)偏差和平均相對(duì)偏差的計(jì)算公式如下:
為驗(yàn)證本文提出的能耗模型的有效性,本文采用CloudSim 內(nèi)置模型作為參考組設(shè)計(jì)了對(duì)比實(shí)驗(yàn).CloudSim中內(nèi)置的能耗模型全部為基于CPU 利用率的一元模型,在對(duì)比實(shí)驗(yàn)中選擇最為常用的一元線性模型和較為準(zhǔn)確的一元分段式模型作為對(duì)照組.其中一元分段式模型將CPU 利用率以10%為梯度進(jìn)行分段,設(shè)置11個(gè)分段點(diǎn),在每個(gè)分段內(nèi)采用一元線性模型來(lái)計(jì)算服務(wù)器功率,實(shí)驗(yàn)的軟硬件環(huán)境見(jiàn)表1.
表1 實(shí)驗(yàn)軟硬件參數(shù)表
CloudSim 一元線性模型、CloudSim 一元分段式模型、多元線性模型、多元非線性模型的能耗預(yù)測(cè)值和能耗真實(shí)值的對(duì)比情況依次如圖4 至圖7所示.
通過(guò)對(duì)比各個(gè)能耗模型的預(yù)測(cè)值和能耗真實(shí)值可以直觀地判斷各個(gè)模型的預(yù)測(cè)準(zhǔn)確性.之后,根據(jù)公式(11)計(jì)算可以得到CloudSim 仿真平臺(tái)一元線性模型、CloudSim 一元分段式模型、多元線性模型、多元非線性模型的相對(duì)偏差,反應(yīng)了各個(gè)模型每個(gè)采樣點(diǎn)的預(yù)測(cè)誤差分布情況.以上四個(gè)模型的相對(duì)偏差情況如圖8 至圖11所示.
圖4 CloudSim 一元線性模型預(yù)測(cè)情況
圖5 CloudSim 一元分段式模型預(yù)測(cè)情況
圖6 多元線性回歸模型預(yù)測(cè)情況
根據(jù)式(12)計(jì)算可得到各個(gè)模型的平均相對(duì)偏差,其中CloudSim 一元線性模型的平均相對(duì)偏差為0.0659,CloudSim 一元分段式模型為0.0421,多元線性模型的平均相對(duì)偏差為0.0261,多元非線性模型為0.0094,通過(guò)對(duì)比以上四種模型的預(yù)測(cè)情況、相對(duì)偏差和平均相對(duì)偏差,可以發(fā)現(xiàn),多元線性模型、多元非線性模型預(yù)測(cè)效果均優(yōu)于CloudSim 平臺(tái)中的內(nèi)置模型,其中考慮了CPU 對(duì)內(nèi)存能耗影響的多元非線性模型有較為明顯的優(yōu)勢(shì).因此,選擇本文提出的多元非線性模型重寫(xiě)仿真平臺(tái)的能耗評(píng)估方法,用于資源調(diào)度相關(guān)實(shí)驗(yàn)的能耗評(píng)估.
圖7 多元非線性回歸模型預(yù)測(cè)情況
本文針對(duì)云計(jì)算仿真平臺(tái)中數(shù)據(jù)中心能耗評(píng)估誤差較大的問(wèn)題,提出了基于計(jì)算機(jī)CPU 和內(nèi)存利用率的多元非線性能耗評(píng)估方法.實(shí)驗(yàn)結(jié)果表明,本文提出的多元非線性能耗模型在適用于云計(jì)算仿真平臺(tái)的同時(shí),有較高的準(zhǔn)確性,有效的提高了仿真環(huán)境中的能耗評(píng)估效果.在本文中為簡(jiǎn)化能耗評(píng)估過(guò)程,將數(shù)據(jù)中心的網(wǎng)絡(luò)、存儲(chǔ)等設(shè)備產(chǎn)生的能耗和計(jì)算節(jié)點(diǎn)的硬盤(pán)、網(wǎng)絡(luò)接等口產(chǎn)生的能耗都視為了常量,接下來(lái)的研究將分析這些設(shè)備或組件的能耗特性,在盡量保證仿真過(guò)程簡(jiǎn)單可行的前提下,進(jìn)一步提高仿真模型的精確度.此外,還將在重寫(xiě)了能耗模型的CloudSim 仿真平臺(tái)中實(shí)現(xiàn)資源調(diào)度算法,以本文的能耗評(píng)估方法為標(biāo)準(zhǔn)進(jìn)行能耗感知相關(guān)實(shí)驗(yàn).
圖8 CloudSim 一元線性模型相對(duì)偏差
圖9 CloudSim 一元線分段模型相對(duì)偏差
圖10 多元線性回歸模型相對(duì)偏差
圖11 多元非線性回歸模型相對(duì)偏差