,
安徽國防科技職業學院 信息技術學院,安徽 六安 237000)
云計算數據中心使用的計算機耗費能量,產生的大氣污染數字在高速增長[1].高能耗主要來源于處理器層次和數據中心層次的能耗.因此迫切需要探討能耗和資源利用率的關系,以尋找一個最佳的資源利用率來降低能耗.
CPU利用率越高,能耗越高.系統能效是單位時間內的運算量與能耗的比值.因此,探索CPU利用率的最佳點來最大化能效是研究熱點.宋杰等[2]提出了一種通過CPU利用率和頻率計算能效的方法,得出了當CPU利用率達到100%時能效達到最大值的結論;肖丁等[3]提出了一種基于分段式CPU利用率的能耗模型,將CPU能耗模型從簡單的單線式線性能耗模型變成了分段式線性模型;葉可江等[4]介紹了能耗監測步驟及能耗輪廓分析方法,提出了虛擬機系統的整體能耗模型;于俊洋等[5]根據計算機各部件的參數對能耗變化的貢獻程度和參數之間的相關度,選取最能代表能耗變化的可監測參數建立了一個能耗模型.上述學者建立的能耗模型大多以理論推導為基礎,很少基于真實的能耗測試結果,因此筆者針對上述問題,以CPU密集型任務為負載類型,提出了一個非線性的能耗預測模型.
目前認為影響能耗的主要部件有CPU、內存、硬盤、網絡.以計算密集型任務為研究對象,對于CPU密集型任務,能耗主要由CPU產生,因此在能耗建模的過程中,主要考慮CPU能耗.
虛擬機的能耗主要由兩部分組成,一部分是虛擬機維持自身運行所消耗的能耗,即靜態能耗;另一部分為虛擬機運行任務時消耗的能耗,即執行能耗.當系統被激活后靜態能耗通常是不變的.因此我們將主要探討動態功耗.對于CPU密集型任務來說,動態能耗主要由CPU產生,而其它部件的能耗如內存的能耗,可視為包含在靜態能耗中.對于固定配置的虛擬機,靜態能耗可以看成是一個常量,而動態能耗則與CPU利用率有關.
對于CPU密集型任務,假設數據中心有m種虛擬機運行任務,則第n種虛擬機的能耗定義為
(1)


(2)

為了驗證能耗模型,分別在windows操作系統和linux操作系統下分別進行實驗.通常采用MFCPUStresser程序及較為權威的SPECpower_ssj2008基準測試程序.
MFCPUStresser是一種解決方案,允許調整系統中的CPU利用率,根據不同CPU的利用率可以評估系統性能、測試系統的能耗.實驗的測試環境及指標如表1所示.

表1 測試環境及指標

圖1 虛擬機臺數不同時CPU利用率與瞬時能耗的關系
通過測試發現,在分配的虛擬機核數由1增加到4的情況下,物理機的能耗差值與最大能耗的比值不超過0.04%,因此我們認為在不運行任何能耗測試程序的情況下,虛擬機的CPU核數對能耗的影響可忽略不計.為了驗證虛擬機臺數的增加對總能耗的影響情況,將虛擬機的臺數由1逐漸增加到4,得到不同虛擬機臺數情況下CPU利用率和能耗之間的關系,結果如圖1所示,其中1、2、3、4分別代表為物理機分配的虛擬機臺數.可以看出,虛擬機空載的瞬時能耗占滿載時能耗的50%以上,能耗與CPU利用率之間并非線性關系,在CPU利用率逐漸增加的過程中,能耗與CPU利用率的曲線斜率在變小,即能耗的增加值在逐漸減小.
我們使用了基準測試程序SPECpower_ssj2008對一臺小型的方正圓明服務器進行了測試.通過SPECpower_ssj2008分別測試不同CPU利用率及不同內存對應的瞬時能耗.測試的具體參數如表2所示.

表2 SPECpower_ssj2008測試配置表
為驗證內存對能耗的影響,通過改變內存的方法進行了多次測試,將該服務器的內存從2 GB逐漸增加到12 GB,分別記錄運行測試程序時不同CPU利用率對應的瞬時能耗,測試結果如圖2所示.可以看出,能耗與CPU利用率之間的關系曲線接近于線性但并非線性關系.在相同CPU利用率下,服務器的實際內存越高,對應的瞬時能耗越高,這說明CPU密集型任務的能耗不僅與CPU利用率有關,還與機器的內存有關.隨著CPU利用率逐漸升高,曲線的斜率均逐漸減小.因此可以得出,隨著CPU利用率的增加,相同CPU利用率的變化區間對應的能耗增加值則逐漸減小,即CPU的利用率越高,能效越高.
為了驗證內存的利用率與瞬時能耗之間的關系,我們在服務器實際內存為12GB時分別進行了三次測試,實驗結果如圖3所示.可以看出,在不同CPU利用率的情況下,三種不同內存的利用率對應的能耗值基本相同,因此可以得出,對于CPU密集型任務,影響能耗大小的因素主要是服務器的實際內存,而與內存利用率無關.
本文在兩種不同的操作系統環境中,分別選擇常見的CPU密集型應用程序MFCPUStresser及基準測試程序SPECpower_ssj2008對能耗進行測試,并對CPU密集型任務的能耗與各指標之間的關系進行探究.實驗表明,CPU的利用率越高,能效越高;而且CPU密集型任務的能耗與機器的實際內存有關,與內存利用率無關;在其它配置相同的情況下,內存越大,能耗越高.
云計算需要同時考慮成本和任務的服務質量.為保證系統穩定性及滿足用戶的QoS約束,需要找到一個最佳點來平衡能耗和系統的穩定性,因此,就需要尋找一個滿足QoS約束的CPU利用率最大值以最大化能效.

圖2 內存不同時CPU利用率與瞬時能耗的關系

圖3 不同內存使用率在不同CPU利用率下的瞬時能耗