陳 俊, 李 婭, 張 芥
貴州師范大學(xué)教育學(xué)院,貴陽550025
數(shù)據(jù)中心廉價資源池的日益擴(kuò)容帶來了能源的急劇消耗.統(tǒng)計(jì)數(shù)據(jù)顯示,2006 年美國6 000 個數(shù)據(jù)中心消耗電能的價值約為45 億美元[1],已超過美國當(dāng)時電視機(jī)的能耗總和.Facebook 基礎(chǔ)設(shè)施每半年增長1 倍,電費(fèi)消耗則每半年增長數(shù)百萬美元[2].
數(shù)據(jù)中心利用虛擬機(jī)在線遷移技術(shù)實(shí)現(xiàn)負(fù)載均衡,進(jìn)行物理資源與虛擬資源的重映射[3].虛擬機(jī)技術(shù)的應(yīng)用使數(shù)據(jù)中心擁有集中計(jì)算屬性,這一屬性可將空置物理機(jī)設(shè)為等待狀態(tài)而實(shí)現(xiàn)節(jié)能[4].虛擬機(jī)能耗優(yōu)化的前提是數(shù)據(jù)中心可以實(shí)現(xiàn)虛擬機(jī)層次的能耗測量,而利用傳統(tǒng)操作系統(tǒng)監(jiān)測物理機(jī)運(yùn)行狀態(tài)獲取物理機(jī)能耗的方法不能測量虛擬機(jī)層次的能耗.原因在于,數(shù)據(jù)中心存在較多的虛擬機(jī)在線遷移行為,導(dǎo)致虛擬資源與物理資源映射不一致,從而造成能耗測試數(shù)據(jù)精度丟失,使得能耗數(shù)據(jù)結(jié)果失去意義.
針對虛擬機(jī)層次的能耗測量,文獻(xiàn)[5]提出使用虛擬機(jī)功率與運(yùn)算時間乘積計(jì)算虛擬機(jī)能耗的方法.該方法未考慮到虛擬機(jī)運(yùn)行功率是實(shí)時變化、并非持續(xù)以額定功率運(yùn)行的.文獻(xiàn)[6]嘗試建立虛擬機(jī)在線遷移能耗模型,但其未考慮資源映射的非一致性問題,因而計(jì)算誤差較大.本文采用Hypervisor(虛擬機(jī)監(jiān)視器)監(jiān)控虛擬機(jī)運(yùn)行狀態(tài)參數(shù)[7],提出了一種度量虛擬機(jī)層次能耗的方法,該方法是基于計(jì)算密集型與I/O 密集型并結(jié)合典型設(shè)備運(yùn)行狀態(tài)參數(shù)來建立數(shù)學(xué)模型.模型在計(jì)算密集型時引入了針對虛擬機(jī)的CPU 使用率與CPU 頻率,在I/O 密集型時引入了針對虛擬機(jī)的硬盤讀寫與內(nèi)存讀寫總字節(jié)數(shù)計(jì)算虛擬機(jī)功耗,并將其進(jìn)行積分得出數(shù)據(jù)中心能耗[8].
虛擬機(jī)技術(shù)可以支持單個虛擬機(jī)擁有獨(dú)立的虛擬資源,這會使虛擬資源與物理資源具有非一致性.因此,直接通過測量物理機(jī)的運(yùn)行能耗去獲得虛擬機(jī)的運(yùn)行能耗顯然是不夠準(zhǔn)確的.Hypervisor 可以監(jiān)測虛擬機(jī)運(yùn)行狀態(tài)的參數(shù),故可用于虛擬機(jī)運(yùn)行能耗的測量.本文利用Hypervisor 對虛擬機(jī)運(yùn)行狀態(tài)參數(shù)進(jìn)行跟蹤,例如對虛擬機(jī)最后一層cache(last level cache, LLC)跟蹤時,結(jié)合性能計(jì)數(shù)器來跟蹤虛擬機(jī)因上下文切換造成的LLC 缺失數(shù),從而避免物理資源與虛擬資源的非一致性.實(shí)驗(yàn)方案將虛擬機(jī)運(yùn)行劃分為計(jì)算密集型與I/O 密集型.實(shí)驗(yàn)測量中則使用電量儀獲取通過電纜的實(shí)時功率來建立能耗模型.
能耗定義為一段時間內(nèi)能量的總開銷,故可采用對功耗進(jìn)行時間積分的辦法來獲取實(shí)時能耗.實(shí)驗(yàn)中的數(shù)據(jù)中心被設(shè)計(jì)為多臺同構(gòu)節(jié)點(diǎn)(同構(gòu)定義為硬件設(shè)備型號相同),又設(shè)定第節(jié)點(diǎn)機(jī)上運(yùn)行多個虛擬機(jī),第i節(jié)點(diǎn)上第個虛擬機(jī)在t時刻的功耗記為Pij(t),則可推知數(shù)據(jù)中心能耗E(T)為[9]
式中,Pij(t)dt為第i節(jié)點(diǎn)上第j個虛擬機(jī)的實(shí)時功耗,在實(shí)驗(yàn)中可令運(yùn)行的物理機(jī)節(jié)點(diǎn)僅運(yùn)行1 個虛擬機(jī),從而通過電量儀直接測量獲得實(shí)時功耗值.
由上文分析可知,式(1)中E(T)數(shù)值確定的關(guān)鍵點(diǎn)在于Pij(t)值的確定.實(shí)驗(yàn)中每臺物理機(jī)上皆可運(yùn)行多個虛擬機(jī),而電量儀只能測量物理機(jī)粒度的實(shí)時功耗,故虛擬機(jī)粒度的實(shí)時功耗無法通過電量儀直接測量.在此,實(shí)驗(yàn)通過Hypervisor 對虛擬機(jī)運(yùn)行狀態(tài)參數(shù)進(jìn)行采樣,用以建立虛擬機(jī)實(shí)時功耗模型,從而計(jì)算虛擬機(jī)實(shí)時功耗值.
計(jì)算機(jī)系統(tǒng)運(yùn)行狀態(tài)為計(jì)算密集型時,計(jì)算機(jī)系統(tǒng)功耗模型可看為CPU 運(yùn)行狀態(tài)的線性回歸模型[10],而除CPU 外其他設(shè)備功耗可看作常數(shù).項(xiàng)目組在研究CPU 使用率、CPU 頻率與虛擬機(jī)功率之間關(guān)系的實(shí)驗(yàn)中,將ω設(shè)定為0、0.25、0.50、0.75、1.00,并在Userspace 模式設(shè)定CPU 工作頻率為1.6 GHz、1.8 GHz、2.0 GHz、2.2 GHz、2.4 GHz、2.6 GHz、2.8 GHz,實(shí)驗(yàn)數(shù)據(jù)見圖1.
圖1 CPU 使用率、CPU 頻率與虛擬機(jī)功率關(guān)系Figure 1 Relationship among CPU utilization, CPU frequency and virtual machine power
由圖1 可知,當(dāng)CPU 使用率為0 時,功率基本保持常數(shù)值,而當(dāng)CPU 使用率為非0 時,頻率越大則功率越大.故可得
式中,f為CPU 頻率,ω為CPU 使用率.
實(shí)驗(yàn)發(fā)現(xiàn),CPU 使用率與CPU 頻率處于低值時,僅使用式(2)計(jì)算虛擬機(jī)功率會造成較大誤差,故在實(shí)驗(yàn)中增選硬盤讀寫總字節(jié)數(shù)(drw)與內(nèi)存讀寫總字節(jié)數(shù)(mdr)建立數(shù)學(xué)模型[11].
為求取硬盤讀寫總字節(jié)數(shù)與內(nèi)存讀寫總字節(jié)數(shù)相對計(jì)算機(jī)實(shí)時功率的數(shù)學(xué)關(guān)系,實(shí)驗(yàn)方案以間隔?t時間(?t取值為0.1 s)對計(jì)算機(jī)硬盤讀寫總字節(jié)數(shù)與內(nèi)存讀寫總字節(jié)數(shù)進(jìn)行斷點(diǎn)采樣.為保證結(jié)果精確,以上采樣都在Sort 任務(wù)運(yùn)行環(huán)境下進(jìn)行.Sort 任務(wù)運(yùn)行環(huán)境為I/O 密集型運(yùn)算環(huán)境,可最大限度避免CPU 運(yùn)行所帶來的計(jì)算功率波動.實(shí)驗(yàn)方案引入下式用以求取若干配對數(shù)據(jù)之間的相關(guān)系數(shù)r
式中,xi為計(jì)算節(jié)點(diǎn)硬盤讀寫總字節(jié)數(shù)與內(nèi)存讀寫總字節(jié)數(shù),yi為計(jì)算節(jié)點(diǎn)功率為計(jì)算節(jié)點(diǎn)硬盤讀寫總字節(jié)數(shù)與內(nèi)存讀寫總字節(jié)數(shù)的平均數(shù)為計(jì)算節(jié)點(diǎn)平均功率.
我們分別將Sort 運(yùn)算置為主硬盤讀寫方式與主內(nèi)存讀寫方式,獲取采樣數(shù)據(jù).針對P,drw配對取樣的(P,drw)數(shù)據(jù)有:(60, 2 317)、(83, 3 257)、(92, 4 531)、(78, 3 115)、(81, 3 212)等;針對P,mdr配對取樣的(P,mdr)數(shù)據(jù)有:(75, 6 512)、(82, 7 122)、(72,5 561)、(93, 8 671)、(65, 6 321)等.
利用式(3),分別求取drw、mdr與計(jì)算機(jī)實(shí)時功率P的相關(guān)系數(shù),見表1.
表1 變量線性關(guān)系參數(shù)分析Table 1 Parameter analysis of variable linear relation
表1 中第1 行為P與drw配對數(shù)據(jù)計(jì)算得出的變量線性關(guān)系參數(shù),第2 行為P與mdr配對數(shù)據(jù)計(jì)算得出的變量線性關(guān)系參數(shù).其中,P與drw的相關(guān)系數(shù)= 0.856,P與mdr的相關(guān)系數(shù)= 0.784,相關(guān)系數(shù)值均大于0.75,可證明硬盤讀寫總字節(jié)數(shù)與內(nèi)存讀寫總字節(jié)數(shù)相對于計(jì)算機(jī)實(shí)時功率P具備線性相關(guān)性.故有
又由式(2)和式(4)可得
令式(5)中β1+β2=β0,可得
實(shí)驗(yàn)在數(shù)據(jù)中心實(shí)驗(yàn)室內(nèi)進(jìn)行,引入了WordCount(計(jì)算密集型)、Sort(I/O 密集型)進(jìn)行測試計(jì)算.在待測虛擬機(jī)上運(yùn)行測試程序,每?t(?t取為2 s)進(jìn)行1 次Hypervisor 資源計(jì)數(shù)與電量儀功率的數(shù)據(jù)采樣.實(shí)驗(yàn)需保證采樣數(shù)據(jù)的獨(dú)立性,故此處盡量增長采樣間隔時長,以便減少采樣點(diǎn)之間的數(shù)據(jù)關(guān)聯(lián)性.實(shí)驗(yàn)以?t的間隔對2 000 個采樣點(diǎn)數(shù)據(jù)進(jìn)行分組,得到兩個規(guī)模為1 000 個采樣點(diǎn)的采樣數(shù)據(jù)分組,故分組相鄰兩個采樣數(shù)據(jù)樣本之間間隔時長實(shí)際為2?t.實(shí)驗(yàn)采樣的數(shù)據(jù)質(zhì)量直接影響模型精度,本文采樣數(shù)據(jù)應(yīng)滿足以下質(zhì)量要求[12]:
1)正態(tài)分布性:采樣數(shù)據(jù)應(yīng)盡可能呈現(xiàn)正態(tài)分布.
2)方差齊性:計(jì)算同類采樣數(shù)據(jù)的平均值與方差,盡可能減少各類采樣數(shù)據(jù)組方差差值.
3)樣本獨(dú)立性:樣本獨(dú)立性檢驗(yàn)等同于均值差異性檢驗(yàn),實(shí)驗(yàn)通過增長采樣數(shù)據(jù)間隔時長來保證樣本獨(dú)立性.
WordCount 運(yùn)算與Sort 運(yùn)算壓力測試數(shù)據(jù)見圖2、圖3.
圖2 500MB 數(shù)據(jù)WordCount 運(yùn)算壓力測試Figure 2 WordCount operational stress test for 500MB data
圖3 500MB 數(shù)據(jù)Sort 運(yùn)算壓力測試Figure 3 500MB data Sort operational stress test
由圖2、圖3 數(shù)據(jù)可知,較多WordCount 運(yùn)算節(jié)點(diǎn)處于高CPU 使用率狀態(tài),屬于CPU 密集型.而Sort 運(yùn)算節(jié)點(diǎn)則呈現(xiàn)CPU 使用率時高時低的運(yùn)行狀態(tài),且Map 階段CPU 使用率高于Reduce 階段,屬于I/O 密集型.
考慮到虛擬機(jī)的運(yùn)行狀態(tài)參數(shù)可能存在共線性問題[13],在此,針對式(6)用實(shí)驗(yàn)數(shù)據(jù)進(jìn)行共線性診斷,診斷結(jié)果見表2.其中,共線性診斷計(jì)算的常量值為57.61.
表2 共線性診斷Table 2 Collinearity diagnosis
在表2 中,VVIF為表征變量共線性的膨脹因子,其計(jì)算公式為
式中,Rj為第j個自變量與其余變量進(jìn)行回歸時的判定系數(shù).表中對應(yīng)有3 個VVIF值大于20(VVIF10 即存在共線性),故應(yīng)加入嶺參數(shù)進(jìn)行嶺回歸分析[14],得到:K1= 0.911,K2=32.752,K3=0.321,K4=0.225,β0=25.351.
本節(jié)針對實(shí)驗(yàn)測量能耗與計(jì)算能耗進(jìn)行誤差分析[15],定義
式中,We為采樣點(diǎn)功耗誤差,Wm為測量功耗,Wc為計(jì)算功耗.
圖4 是WordCount 運(yùn)算計(jì)算值與測量值比較,圖5 是Sort 運(yùn)算計(jì)算值與測量值比較.
圖4 WordCount 運(yùn)算計(jì)算值與測量值比較Figure 4 Comparisons of WordCount operational calculated value and measured value
圖5 Sort 運(yùn)算計(jì)算值與測量值比較Figure 5 Comparisons of Sort operation calculated value and measured value
采樣點(diǎn)功耗平均誤差為各采樣點(diǎn)功耗誤差之和除以總采樣點(diǎn)數(shù)量.對采樣數(shù)據(jù)進(jìn)行誤差分析可知:平均誤差為0.062 5,最大絕對誤差為0.115 2,誤差整體呈正態(tài)分布.
分析采樣數(shù)據(jù)的誤差計(jì)算結(jié)果可知,誤差分布呈現(xiàn)正態(tài)分布.對實(shí)驗(yàn)物理節(jié)點(diǎn)能耗組成分析可知,第1 部分能耗為無負(fù)載運(yùn)行的物理機(jī)操作系統(tǒng)基礎(chǔ)功耗;第2 部分能耗為去除多個虛擬機(jī)運(yùn)行的增量功耗與Hypervisor 所需功耗后,物理機(jī)的剩余功耗;第3 部分能耗為運(yùn)行物理機(jī)上的虛擬機(jī)功耗.
數(shù)據(jù)中心的海量運(yùn)算資源帶來了巨大的能耗開銷,本文通過Hypervisor 采樣虛擬機(jī)運(yùn)行狀態(tài)參數(shù)以建立一個較好精度的虛擬機(jī)能耗模型.實(shí)驗(yàn)將采樣數(shù)據(jù)虛擬機(jī)運(yùn)行狀態(tài)劃分為計(jì)算密集型與I/O 密集型,能耗模型的測量功耗與計(jì)算功耗平均誤差為0.062 5.
實(shí)驗(yàn)方案為進(jìn)一步實(shí)現(xiàn)粒度細(xì)化,采用虛擬機(jī)Hypervisor 進(jìn)行虛擬機(jī)運(yùn)行狀態(tài)參數(shù)采樣,但該方法會造成測量精度下降,由上節(jié)所述物理節(jié)點(diǎn)能耗劃分可知本文虛擬機(jī)粒度能耗構(gòu)建未考慮第1 部分和第2 部分能耗,故造成一定精度誤差.