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