,
安徽國防科技職業(yè)學(xué)院 信息技術(shù)學(xué)院,安徽 六安 237000)
云計(jì)算數(shù)據(jù)中心使用的計(jì)算機(jī)耗費(fèi)能量,產(chǎn)生的大氣污染數(shù)字在高速增長[1].高能耗主要來源于處理器層次和數(shù)據(jù)中心層次的能耗.因此迫切需要探討能耗和資源利用率的關(guān)系,以尋找一個(gè)最佳的資源利用率來降低能耗.
CPU利用率越高,能耗越高.系統(tǒng)能效是單位時(shí)間內(nèi)的運(yùn)算量與能耗的比值.因此,探索CPU利用率的最佳點(diǎn)來最大化能效是研究熱點(diǎn).宋杰等[2]提出了一種通過CPU利用率和頻率計(jì)算能效的方法,得出了當(dāng)CPU利用率達(dá)到100%時(shí)能效達(dá)到最大值的結(jié)論;肖丁等[3]提出了一種基于分段式CPU利用率的能耗模型,將CPU能耗模型從簡單的單線式線性能耗模型變成了分段式線性模型;葉可江等[4]介紹了能耗監(jiān)測步驟及能耗輪廓分析方法,提出了虛擬機(jī)系統(tǒng)的整體能耗模型;于俊洋等[5]根據(jù)計(jì)算機(jī)各部件的參數(shù)對能耗變化的貢獻(xiàn)程度和參數(shù)之間的相關(guān)度,選取最能代表能耗變化的可監(jiān)測參數(shù)建立了一個(gè)能耗模型.上述學(xué)者建立的能耗模型大多以理論推導(dǎo)為基礎(chǔ),很少基于真實(shí)的能耗測試結(jié)果,因此筆者針對上述問題,以CPU密集型任務(wù)為負(fù)載類型,提出了一個(gè)非線性的能耗預(yù)測模型.
目前認(rèn)為影響能耗的主要部件有CPU、內(nèi)存、硬盤、網(wǎng)絡(luò).以計(jì)算密集型任務(wù)為研究對象,對于CPU密集型任務(wù),能耗主要由CPU產(chǎn)生,因此在能耗建模的過程中,主要考慮CPU能耗.
虛擬機(jī)的能耗主要由兩部分組成,一部分是虛擬機(jī)維持自身運(yùn)行所消耗的能耗,即靜態(tài)能耗;另一部分為虛擬機(jī)運(yùn)行任務(wù)時(shí)消耗的能耗,即執(zhí)行能耗.當(dāng)系統(tǒng)被激活后靜態(tài)能耗通常是不變的.因此我們將主要探討動態(tài)功耗.對于CPU密集型任務(wù)來說,動態(tài)能耗主要由CPU產(chǎn)生,而其它部件的能耗如內(nèi)存的能耗,可視為包含在靜態(tài)能耗中.對于固定配置的虛擬機(jī),靜態(tài)能耗可以看成是一個(gè)常量,而動態(tài)能耗則與CPU利用率有關(guān).
對于CPU密集型任務(wù),假設(shè)數(shù)據(jù)中心有m種虛擬機(jī)運(yùn)行任務(wù),則第n種虛擬機(jī)的能耗定義為
(1)
(2)
為了驗(yàn)證能耗模型,分別在windows操作系統(tǒng)和linux操作系統(tǒng)下分別進(jìn)行實(shí)驗(yàn).通常采用MFCPUStresser程序及較為權(quán)威的SPECpower_ssj2008基準(zhǔn)測試程序.
MFCPUStresser是一種解決方案,允許調(diào)整系統(tǒng)中的CPU利用率,根據(jù)不同CPU的利用率可以評估系統(tǒng)性能、測試系統(tǒng)的能耗.實(shí)驗(yàn)的測試環(huán)境及指標(biāo)如表1所示.
表1 測試環(huán)境及指標(biāo)
圖1 虛擬機(jī)臺數(shù)不同時(shí)CPU利用率與瞬時(shí)能耗的關(guān)系
通過測試發(fā)現(xiàn),在分配的虛擬機(jī)核數(shù)由1增加到4的情況下,物理機(jī)的能耗差值與最大能耗的比值不超過0.04%,因此我們認(rèn)為在不運(yùn)行任何能耗測試程序的情況下,虛擬機(jī)的CPU核數(shù)對能耗的影響可忽略不計(jì).為了驗(yàn)證虛擬機(jī)臺數(shù)的增加對總能耗的影響情況,將虛擬機(jī)的臺數(shù)由1逐漸增加到4,得到不同虛擬機(jī)臺數(shù)情況下CPU利用率和能耗之間的關(guān)系,結(jié)果如圖1所示,其中1、2、3、4分別代表為物理機(jī)分配的虛擬機(jī)臺數(shù).可以看出,虛擬機(jī)空載的瞬時(shí)能耗占滿載時(shí)能耗的50%以上,能耗與CPU利用率之間并非線性關(guān)系,在CPU利用率逐漸增加的過程中,能耗與CPU利用率的曲線斜率在變小,即能耗的增加值在逐漸減小.
我們使用了基準(zhǔn)測試程序SPECpower_ssj2008對一臺小型的方正圓明服務(wù)器進(jìn)行了測試.通過SPECpower_ssj2008分別測試不同CPU利用率及不同內(nèi)存對應(yīng)的瞬時(shí)能耗.測試的具體參數(shù)如表2所示.
表2 SPECpower_ssj2008測試配置表
為驗(yàn)證內(nèi)存對能耗的影響,通過改變內(nèi)存的方法進(jìn)行了多次測試,將該服務(wù)器的內(nèi)存從2 GB逐漸增加到12 GB,分別記錄運(yùn)行測試程序時(shí)不同CPU利用率對應(yīng)的瞬時(shí)能耗,測試結(jié)果如圖2所示.可以看出,能耗與CPU利用率之間的關(guān)系曲線接近于線性但并非線性關(guān)系.在相同CPU利用率下,服務(wù)器的實(shí)際內(nèi)存越高,對應(yīng)的瞬時(shí)能耗越高,這說明CPU密集型任務(wù)的能耗不僅與CPU利用率有關(guān),還與機(jī)器的內(nèi)存有關(guān).隨著CPU利用率逐漸升高,曲線的斜率均逐漸減小.因此可以得出,隨著CPU利用率的增加,相同CPU利用率的變化區(qū)間對應(yīng)的能耗增加值則逐漸減小,即CPU的利用率越高,能效越高.
為了驗(yàn)證內(nèi)存的利用率與瞬時(shí)能耗之間的關(guān)系,我們在服務(wù)器實(shí)際內(nèi)存為12GB時(shí)分別進(jìn)行了三次測試,實(shí)驗(yàn)結(jié)果如圖3所示.可以看出,在不同CPU利用率的情況下,三種不同內(nèi)存的利用率對應(yīng)的能耗值基本相同,因此可以得出,對于CPU密集型任務(wù),影響能耗大小的因素主要是服務(wù)器的實(shí)際內(nèi)存,而與內(nèi)存利用率無關(guān).
本文在兩種不同的操作系統(tǒng)環(huán)境中,分別選擇常見的CPU密集型應(yīng)用程序MFCPUStresser及基準(zhǔn)測試程序SPECpower_ssj2008對能耗進(jìn)行測試,并對CPU密集型任務(wù)的能耗與各指標(biāo)之間的關(guān)系進(jìn)行探究.實(shí)驗(yàn)表明,CPU的利用率越高,能效越高;而且CPU密集型任務(wù)的能耗與機(jī)器的實(shí)際內(nèi)存有關(guān),與內(nèi)存利用率無關(guān);在其它配置相同的情況下,內(nèi)存越大,能耗越高.
云計(jì)算需要同時(shí)考慮成本和任務(wù)的服務(wù)質(zhì)量.為保證系統(tǒng)穩(wěn)定性及滿足用戶的QoS約束,需要找到一個(gè)最佳點(diǎn)來平衡能耗和系統(tǒng)的穩(wěn)定性,因此,就需要尋找一個(gè)滿足QoS約束的CPU利用率最大值以最大化能效.
圖2 內(nèi)存不同時(shí)CPU利用率與瞬時(shí)能耗的關(guān)系
圖3 不同內(nèi)存使用率在不同CPU利用率下的瞬時(shí)能耗