李亮亮
(四川大學計算機學院,成都 610065)
云環境下基于預測的能耗優化算法
李亮亮
(四川大學計算機學院,成都 610065)
近年來云計算技術發展迅猛,許多企業都將業務遷移到云端,如何提高云資源利用效率降低能耗是一個很多人在研究的問題。針對私有云環境中部署的Web服務提出一種基于負載預測的能耗優化算法,通過對系統負載進行預測并合理分配調度系統資源,有效提高資源利用效率并降低能耗,最后通過仿真實驗驗證該算法的可行性和有效性。
云計算;Web 服務;資源利用率;能耗
如今很多企業都將自己的業務或部分或全部遷移到了“云”中,因為云計算為用戶提供著近乎無限的計算資源。云計算最初提出時希望計算資源能夠像今天我們使用水、電一樣,用多少給多少錢,即以一種按需服務的方式給用戶使用。云計算主要使用虛擬化技術為用戶提供服務,它具有高可靠性、易于擴展、價格低廉等特點??v觀現在的云計算市場,大概可以劃分為3類,首先是公有云,用戶向公有云服務提供商支付相應的費用,從而得到相應資源的使用權利,費用使用完畢則用戶需要續費或者停止使用相應服務,例如國外有Amazon、Google、IBM等公有云服務提供商,國內則以阿里云、騰訊、華為等提供的云服務為代表;其次是企業自建的私有云,一般私有云規模都相對較小,提供的計算能力相對公有云要小很多,但因為私有云在企業或者機構內部,所以安全性有足夠的保證;第三種則是前面兩種的混合方式,即混合云,它結合了私有云安全性高和公有云計算能力強的特點,企業可以把對安全性要求高的數據放在私有云中,而需要大量計算的任務則放在公有云中去執行,這也是目前對于企業使用云計算一個很好的方式。
本文關注的是企業將Web應用部署到私有云中的情形,通過采用合適的算法來優化私有云的能耗,因為能源消耗在云的成本開銷中占有很大的比例,不加以合理利用很多都是白白浪費掉了,這不僅帶來了一定經濟上的損失,同時也與現在提倡的綠色環保的概念相違背,所以對于能耗的優化具有很重大的意義?,F有研究很少針對私有云中部署的Web應用,本文將提出一種能耗優化的調度算法針對該場景。
1.1 問題描述
本文從一個合作的電商網站的真實數據分析著手。該電商網站將業務程序部署在5臺服務器上,通過后臺監控程序每10分鐘獲取一次系統狀態,共收集了一周的監控數據,其中本文主要關注的是系統CPU負荷情況,通過分析監控數據,發現CPU負載呈現出周期性的波動,如下圖1所示,為了更清晰地呈現負荷的變動,圖中截取了一周內連續兩天的CPU負載情況,從圖1中可以看出,CPU負載以天為周期呈現出規律的波動,一天內出現兩個大的波峰,分別在中午12點左右以及晚上9點左右,這也正好印證一般我們網上購物的規律,即一天中午和晚上的空閑時間。但是從圖中看出系統整體的CPU利用率不高,最高也沒超過60%,并且大部分時間內利用率都在30%以下,這浪費掉了很多系統資源以及電能,所以具有很大的優化空間。

圖1 系統CPU負載
本文將Web應用放入云環境中,通過提出的調度算法對系統進行優化,從而提高系統整體的資源利用效率。
1.2 系統框架
出于對數據安全和隱私的考慮,本文考慮私有云場景。企業需要將Web服務器部署在私有云中,然后由調度器預測不同時刻系統中的負載情況并提前做出響應,因為當Web系統出現過載再采取行動會嚴重影響用戶的體驗。系統整體結構如圖2所示,企業中有物理服務器(PM)n個,全部進行虛擬化搭建私有云平臺,然后部署n個Web服務器到n臺虛擬機上對外提供服務,私有云環境中一個很重要的部件是broker,它由幾個模塊組成,分別是負載預測器和調度器。負載預測器會使用下述的算法根據歷史的數據對未來一個時間段內的系統整體負載做預測,然后反饋給調度器,調度器則根據系統整體的負載對這些Web服務器進行調度,當系統負載較低時它將用戶請求遷移到少數幾臺Web服務器上,同時將這些Web服務器調度到集中的幾臺PM上,同時讓其他空閑的PM關閉或者是將它們置于低功耗狀態下,這樣降低系統的整體能耗。詳細的調度算法和流程見下一小節。
2.1 預測算法
Web系統的負載變化主要是由于不同時刻用戶的請求量不同導致的。當某時間段內有大量的用戶訪問請求到達系統,則系統的負荷會增加導致系統資源利用率會提升,反之當用戶訪問量比較小時系統負荷就會變小,如圖1所示,由于在凌晨時段基本沒有用戶訪問因此系統負荷維持在很低的水平,所以CPU的利用率很低。為了充分利用系統提供的資源,保證系統資源處于一個較高的利用水平,broker中的負載預測模塊首先根據歷史數據對未來一個時間段內的用戶請求量進行預測,然后調度器根據預測結果對系統進行資源分配以及調度。

圖2 系統結構圖
在確定其中的參數時,我們使用“三和法”來估計參數,需要將建模的數據分為3組,即將觀測的歷史數據長度表示為3L,則上述模型中的參數可分別表示為n。 上式中pi(t)和分別代表t時刻監測到的實際用戶請求數量和預測的t,時刻的用戶請求量,實際的監測數據通過歷史數據獲取,這樣就可以利用歷史數據來預測未來某時刻的用戶請求數量。
2.2 調度流程
負載預測器預測了未來一段時間內的用戶請求數量,調度器將該結果與現在的系統負載作對比,然后根據對比結果決定是為Web服務器分配新的資源或者是回收部分資源并將服務器置于低功耗節能狀態。調度算法偽代碼如下所示:
算法1 基于預測的能耗優化算法 predict based energy consumption optimization(PBEO)

上述算法主要過程分為兩步,根據預測和實際的情況系統采取不同的措施,如2~6行所示,當用戶量突然增長很多時,調度器提前為Web服務分配新的資源,在資源利用率比較低的PM上分配新的vm;相反當用戶量在短時間內下降比較多時,調度器會將資源利用率低的PM上的vm遷移到其他PM上,使vm集中到少量的PM上,從而使空閑的PM處于低能耗狀態下或者是將其關閉,這樣可以提升系統整體的能效。

圖3 CPU平均利用率

圖4 系統一天整體功耗
由于條件受限無法在真實的云環境中做實驗,所以本文實驗采用的是模擬實驗,使用云計算實驗平臺Cloudsim進行仿真,實驗環境為Intel Core i7處理器,8G內存,Windows 8的PC。
使用Cloudsim生成了一個小型數據中心,然后使用前文所述的真實電商數據模擬用戶請求數,分別對比在使用本文算法和不使用本文算法的情況下,系統整體的CPU利用率和系統整體能量 (主要是電能)消耗。
如圖3所示,使用本文提出的算法之后,系統整體的CPU利用率比沒有使用提高了不少,并且當系統中PM數量從4增加到8時,利用率逐漸降低,因為系統提供的資源過剩之后導致很多資源處于空閑狀態,從而降低了系統整體資源利用率。圖4也反映出,當PM增多之后,系統功耗也逐漸變大,使用PBEO算法之后,系統整體能耗降低了不少。
本文提出了一種在云環境下針對Web服務進行能耗優化的算法,該算法通過對系統負載作出預測,然后調度器對系統進行調度優化,當系統負載突然增加時,提前分配新的資源給Web服務器,避免系統過載使Web服務受影響;當系統負荷很低時,則將負載集中到少數服務器上以提高系統整體利用率并降低能耗。模擬實驗驗證了該算法的有效性。
參考文獻:
[1]Buyya R,Yeo C S,Venugopal S,et al.Cloud Computing and Emerging IT Platforms:Vision,Hype,and Reality for Delivering Computing as the 5th Utility[J].Future Generation Computer Systems,2009,25(6):599-616.
[2]Le T A.Workload Prediction for Resource Management in Data Centers[J],2016.
[3]Lucas-Simarro J L,Moreno-Vozmediano R,Montero R S,et al.Scheduling Strategies for Optimal Service Deployment Across Multiple Clouds[J].Future Generation Computer Systems,2013,29(6):1431-1441.
[4]Calheiros R N,Ranjan R,Beloglazov A,et al.CloudSim:a Toolkit for Modeling and Simulation of Cloud Computing Environments and Evaluation of Resource Provisioning Algorithms[J].Software:Practice and Experience,2011,41(1):23-50.
Energy Optimization Algorithm Based on Predictive in Cloud Environment
LI Liang-liang
(College of Computer Science,Sichuan University,Chengdu 610065)
With the rapid development of cloud computing technology in recent years,many companies move their business to the cloud,and how to improve the efficiency of cloud resources then reduce energy consumption is a problem which attracts a lot of researchers.Aiming at the Web service deployed in the private cloud environment,puts forward an energy consumption optimization algorithm based on load forecasting.By forecasting the system load and allocating the dispatching system resources reasonably,the resource utilization efficiency and energy consumption are improved effectively.Finally,the feasibility and validity of the algorithm are verified by simulation experiments.
Cloud Computing;Web Services;Resource Utilization;Energy Consumption
1007-1423(2017)09-0047-04
10.3969/j.issn.1007-1423.2017.09.012
李亮亮(1991-),男,湖北宜昌人,碩士,研究方向為云計算
2017-02-20
2017-03-10