王曉琛 王宇廷 張麗媛 金順福
(*燕山大學(xué)信息科學(xué)與工程學(xué)院 秦皇島 066004) (**河北省計算機虛擬技術(shù)與系統(tǒng)集成重點實驗室 秦皇島 066004) (***廊坊師范學(xué)院理學(xué)院 廊坊 065000)
隨著云計算應(yīng)用的普及與云服務(wù)規(guī)模的擴大,云數(shù)據(jù)中心在面向各界提供高性能服務(wù)的同時,產(chǎn)生了巨大的能量消耗[1,2]。如何在保證云系統(tǒng)節(jié)能效果的前提下,提高云用戶請求響應(yīng)性能成為相關(guān)領(lǐng)域的研究熱點。
針對云計算數(shù)據(jù)中心的高能耗問題,部分學(xué)者使用虛擬機整合技術(shù)對節(jié)能策略進行了相關(guān)研究。Fayyaz等人[3]為了降低云數(shù)據(jù)中心的總體能耗,提出基于虛擬機/任務(wù)整合的云基礎(chǔ)架構(gòu),通過虛擬機監(jiān)視器將任務(wù)從未充分利用的服務(wù)器遷移到合適的服務(wù)器,使用動態(tài)閾值電壓調(diào)節(jié)算法關(guān)閉空閑服務(wù)器。Zhou等人[4]提出一種虛擬機整合算法,針對不同類型的主機,進行基于主機負載預(yù)測的虛擬機遷移,研究云數(shù)據(jù)中心的空閑能耗問題。Tang等人[5]為了降低云數(shù)據(jù)中心服務(wù)器、通訊網(wǎng)絡(luò)及冷卻系統(tǒng)的總體能耗,提出基于工作負載預(yù)測的節(jié)能作業(yè)調(diào)度算法,使用虛擬機遷移及整合技術(shù),關(guān)閉相應(yīng)模塊及機架。
還有部分學(xué)者基于休眠模式研究了云數(shù)據(jù)中心的節(jié)能問題。Fan等人[6]為了降低云數(shù)據(jù)中心的總體能耗,提出基于多種休眠模式的服務(wù)器調(diào)度方案。使用綠色休眠管理器制定服務(wù)器活躍模式及多睡眠模式的時間表,確保有足夠的服務(wù)器以最低的能耗為云請求提供服務(wù)。Jin等人[7]為了提高云數(shù)據(jù)中心的能源效率,提出具有速度切換及多重休眠模式的節(jié)能策略?;诋斍暗墓ぷ髫撦d,確定主虛擬機的運行速度及備用虛擬機的狀態(tài)。為了實現(xiàn)系統(tǒng)節(jié)能,Hou等人[8]提出基于多種休眠模式的嵌入式系統(tǒng)的節(jié)能優(yōu)化算法。在估計空閑持續(xù)時間長度之后,制定最優(yōu)控制算法選擇合適的休眠模式。在上述文獻的休眠模式中,只有休眠定時器超時,系統(tǒng)才能從休眠期切換至喚醒期,而不考慮系統(tǒng)中的云用戶請求數(shù)量,在一定程度上影響了云用戶請求的響應(yīng)性能。
本文兼顧云數(shù)據(jù)中心的能量效率與云用戶請求的響應(yīng)性能,面向多虛擬機引入(N,T)休眠機制,研究了云系統(tǒng)的節(jié)能策略與優(yōu)化問題。
在傳統(tǒng)的云數(shù)據(jù)中心中,除了處理云用戶請求需產(chǎn)生的必要能耗外,云系統(tǒng)在空閑時也會產(chǎn)生額外的能耗,造成能源浪費。為了在保證云用戶服務(wù)質(zhì)量的前提下,最大限度地提高云數(shù)據(jù)中心的能量效率,本文面向多虛擬機提出一種帶有(N,T)休眠機制的節(jié)能策略。該策略的工作原理如圖1所示。
當云系統(tǒng)中全部云用戶請求都完成服務(wù),即云系統(tǒng)變空時,全部虛擬機同時進入休眠狀態(tài),云系統(tǒng)由喚醒狀態(tài)進入節(jié)能狀態(tài)。云系統(tǒng)節(jié)能狀態(tài)內(nèi)第一個到達的云用戶請求使虛擬機由休眠狀態(tài)轉(zhuǎn)入休眠監(jiān)聽狀態(tài),并啟動一個長度為T的計時器及閾值為N的計數(shù)器。計時器及計數(shù)器中的任何一個失效,都將同時喚醒全部的虛擬機,即全部虛擬機同時進入運行或空閑狀態(tài),云系統(tǒng)將從節(jié)能狀態(tài)切換至喚醒狀態(tài)。
圖1 (N, T)休眠機制的工作原理
將云用戶請求抽象為顧客,將虛擬機抽象為服務(wù)臺,將休眠狀態(tài)抽象為休假,基于(N,T)休眠機制可建立多重同步休假隨機模型。
假設(shè)所有云用戶請求是同質(zhì)的,所有虛擬機是同構(gòu)的。云用戶請求到達間隔服從參數(shù)為λ(λ>0)的指數(shù)分布,服務(wù)一個云用戶請求的時間服從參數(shù)為μ(μ>0)的指數(shù)分布,休眠定時器的長度T服從參數(shù)為θ(θ>0)的指數(shù)分布。
令隨機變量L(t)表示t時刻系統(tǒng)中云用戶請求的數(shù)量,稱為系統(tǒng)水平。令隨機變量J(t)表示云系統(tǒng)所處的狀態(tài)。J(t)=0表示云系統(tǒng)處于節(jié)能狀態(tài),虛擬機或者休眠或者休眠監(jiān)聽。J(t)=1表示云系統(tǒng)處于喚醒狀態(tài),虛擬機或者空閑或者運行。{(L(t),J(t)),t≥0}構(gòu)成一個2維連續(xù)時間馬爾可夫鏈,其狀態(tài)空間Ω表示為
Ω={(i,j)|i=0,1,2,…,j=0,1}
(1)
令πi, j表示穩(wěn)態(tài)下云系統(tǒng)水平為i且云系統(tǒng)處于狀態(tài)j的概率分布,則有:
i=0,1,2,…,j=0,1 (2)
令πi(i≥0)表示穩(wěn)態(tài)下云系統(tǒng)水平為i的概率向量,πi=(πi0,πi1,πi2,…)。則該馬爾可夫鏈的穩(wěn)態(tài)概率分布π由πi(i≥0)構(gòu)成,π表示為π=(π0,π1,π2,…)。
令Q表示連續(xù)時間馬爾可夫鏈{(L(t),J(t)),t≥0}的一步狀態(tài)轉(zhuǎn)移率矩陣,Qx, y表示系統(tǒng)從x(x=0,1,2,…)水平跳轉(zhuǎn)至y(y=0,1,2,…)水平的轉(zhuǎn)移率子陣。在第2節(jié)給出的假設(shè)條件下,馬爾可夫鏈中L(t)的跳轉(zhuǎn)只能發(fā)生在相鄰水平之間。為表示方便,用Bx代替系統(tǒng)水平下降的子陣Qx,x-1,用Ax代替系統(tǒng)水平不變的子陣Qx,x,用Cx代替系統(tǒng)水平上升的子陣Qx,x+1。
在多重同步休眠機制中,只有在虛擬機處于休眠狀態(tài)時到達一個云用戶請求后,才啟動閾值為N的計數(shù)器,故設(shè)置喚醒閾值下限Nmin=2個;為了保證所有的云用戶請求都能在虛擬機喚醒以后立即被服務(wù),故設(shè)置喚醒閾值上限Nmax=c個。
考慮到喚醒閾值N不大于系統(tǒng)中的虛擬機數(shù)量c,分Bx、Ax及Cx,并給出一步狀態(tài)轉(zhuǎn)移率矩陣Q。
首先,根據(jù)跳轉(zhuǎn)前不同的系統(tǒng)水平討論一步狀態(tài)轉(zhuǎn)移率子陣Bx。
跳轉(zhuǎn)前系統(tǒng)水平x=0時,全部虛擬機處于休眠狀態(tài),不存在一步狀態(tài)轉(zhuǎn)移率子陣B0。
其次,根據(jù)跳轉(zhuǎn)前不同的系統(tǒng)水平討論一步狀態(tài)轉(zhuǎn)移率子陣Ax。
最后,根據(jù)跳轉(zhuǎn)前不同的系統(tǒng)水平討論一步狀態(tài)轉(zhuǎn)移率子陣Cx。
按照系統(tǒng)水平從低到高的順序,系統(tǒng)一步狀態(tài)轉(zhuǎn)移率矩陣Q寫為
Q=
(3)
由一步狀態(tài)轉(zhuǎn)移率子陣Q的結(jié)構(gòu)可知,馬爾可夫鏈{(L(t),J(t)),t≥0}是一種擬生滅過程,該過程正常返的充分必要條件是矩陣二次方程R2B+RA+C=0的最小非負解R(稱為率陣R)的譜半徑SP(R)<1。
轉(zhuǎn)移率子陣A,B及C都是右下角只有一個非零元素的方陣,因此,率陣R也必然有相同的結(jié)構(gòu)。設(shè)
(4)
其中,r22是實數(shù)。
構(gòu)造方陣B[R]如下:
B[R]=
(5)
基于平衡方程及正規(guī)化條件,建立方程組:
(6)
其中,e是維數(shù)為2×c的全1列向量,e1是維數(shù)為2的全1列向量。
利用高斯-賽德爾法[9](Gauss-Seidel method)求解方程組式(6),可得πi(i=0,1,…,c)的數(shù)值解。結(jié)合矩陣幾何解方法,給出πi=πcRi-c,i>c,可進一步求得πi(i=c+1,c+2,…)的數(shù)值解。
云用戶請求響應(yīng)時間定義為從云用戶請求到達云系統(tǒng)開始到服務(wù)完成為止的時間長度[10]。一個云用戶請求響應(yīng)時間包含在系統(tǒng)緩沖區(qū)中的等待時間及在虛擬機上的服務(wù)時間。運用Little公式[11],云用戶請求平均響應(yīng)時間D的表達式為
(7)
云系統(tǒng)節(jié)能水平定義為單位時間內(nèi)云系統(tǒng)因休眠機制的引入而減少的能量消耗。云系統(tǒng)處于喚醒狀態(tài)時消耗正常的能量,處于節(jié)能狀態(tài)時節(jié)省能耗;由節(jié)能狀態(tài)切換至喚醒狀態(tài)的過程會增加額外的能耗。云系統(tǒng)節(jié)能水平S的表達式如下:
(8)
其中,wh表示云系統(tǒng)處于喚醒狀態(tài)時單位時間內(nèi)的能量消耗,ws表示云系統(tǒng)處于節(jié)能狀態(tài)時單位時間內(nèi)的能量消耗,wa表示云系統(tǒng)由節(jié)能狀態(tài)切換至喚醒狀態(tài)的能量消耗。
為了在不同服務(wù)率μ下進一步研究喚醒閾值N及休眠參數(shù)θ對虛擬機調(diào)度策略的影響,進行數(shù)值實驗及仿真實驗。數(shù)值實驗基于式(7)和式(8)用Matlab R2016a進行;仿真實驗基于(N,T)休眠機制采用Java語言在MyEclipse2014下進行。
圖2刻畫了不同喚醒閾值N及服務(wù)率μ下云用戶請求平均響應(yīng)時間D隨休眠參數(shù)θ的變化趨勢。
由圖2可知,若服務(wù)率μ及喚醒閾值N固定,隨著休眠參數(shù)θ的增大,云用戶請求平均響應(yīng)時間D整體呈下降趨勢。休眠參數(shù)越大,休眠定時器長度越短,云用戶請求在系統(tǒng)節(jié)能狀態(tài)的滯留時間越少,因而,云用戶請求平均響應(yīng)時間減小。特別地,當休眠參數(shù)θ=0.0時,系統(tǒng)退化為純N策略,云用戶請求平均響應(yīng)時間較長;當喚醒閾值N=∞時,系統(tǒng)退化為純T策略,云用戶請求平均響應(yīng)時間也較長。與傳統(tǒng)的純N策略及純T策略相比,(N,T)策略下的云系統(tǒng)休眠機制改善了云系統(tǒng)的響應(yīng)性能。
從圖2可以看出,當μ=1.3,θ<4.0時,云用戶請求平均響應(yīng)時間D隨著喚醒閾值N的增大呈現(xiàn)出增加的趨勢;當μ=1.3,θ>4.0時,喚醒閾值N對云用戶請求平均響應(yīng)時間D無影響。
圖2 休眠參數(shù)對云用戶請求平均響應(yīng)時間的影響
為了準確了解喚醒閾值N對云用戶請求平均響應(yīng)時間D的影響,圖3刻畫了不同休眠參數(shù)θ及服務(wù)率μ下云用戶請求平均響應(yīng)時間D隨喚醒閾值N的變化趨勢。
圖3 喚醒閾值對云用戶請求平均響應(yīng)時間的影響
由圖3可知,若服務(wù)率μ及休眠參數(shù)θ固定,隨著喚醒閾值N的增大,云用戶請求平均響應(yīng)時間D整體呈增加趨勢。喚醒閾值越大,節(jié)能狀態(tài)下云用戶請求數(shù)達到喚醒閾值所需的時間越長,因而云用戶請求平均響應(yīng)時間增加。
圖4刻畫了不同喚醒閾值N及服務(wù)率μ下云系統(tǒng)節(jié)能水平S隨休眠參數(shù)θ的變化趨勢。
圖4 休眠參數(shù)對云系統(tǒng)節(jié)能水平的影響
由圖4可知,若服務(wù)率μ及喚醒閾值N固定,隨著休眠參數(shù)θ的增大,云系統(tǒng)節(jié)能水平S整體呈下降趨勢。休眠參數(shù)越大,休眠定時器長度越短,云用戶請求在系統(tǒng)節(jié)能狀態(tài)的滯留時間越少。由于云系統(tǒng)處于節(jié)能狀態(tài)時單位時間內(nèi)的能量消耗低于系統(tǒng)喚醒狀態(tài)時的能量消耗,因而,云系統(tǒng)節(jié)能水平降低。特別地,當休眠參數(shù)θ=0.0時,系統(tǒng)退化為純N策略,云系統(tǒng)節(jié)能水平較高;當喚醒閾值N=∞時,系統(tǒng)退化為純T策略,云系統(tǒng)節(jié)能水平也較高。(N,T)策略下云系統(tǒng)休眠機制響應(yīng)性能的改善是以犧牲一定的云系統(tǒng)節(jié)能水平為代價的。
圖4可以看出,當μ=1.3,θ<3.0時,云系統(tǒng)節(jié)能水平S隨著喚醒閾值N的增大呈現(xiàn)出增加的趨勢;當μ=1.3,θ>3.0時,喚醒閾值N對云系統(tǒng)節(jié)能水平S無影響。
為了準確了解喚醒閾值N對云系統(tǒng)節(jié)能水平S的影響,圖5刻畫了不同休眠參數(shù)θ及服務(wù)率μ下云系統(tǒng)節(jié)能水平S隨喚醒閾值N的變化趨勢。
由圖5可知,若服務(wù)率μ及休眠參數(shù)θ固定,隨著喚醒閾值N的增大,云系統(tǒng)節(jié)能水平S整體呈增加的趨勢。喚醒閾值越大,系統(tǒng)節(jié)能狀態(tài)內(nèi)云用戶請求數(shù)達到喚醒閾值所需的時間越長,即系統(tǒng)處于節(jié)能狀態(tài)的時間越長,因而,云系統(tǒng)節(jié)能水平提高。
圖5 喚醒閾值對云系統(tǒng)節(jié)能水平的影響
綜合圖2和圖3揭示出的云用戶請求平均響應(yīng)時間的變化趨勢與圖4和圖5揭示出的云系統(tǒng)節(jié)能水平的變化趨勢,可以看出在設(shè)置休眠參數(shù)θ及喚醒閾值N時,云用戶響應(yīng)性能及云系統(tǒng)節(jié)能效果之間存在折衷關(guān)系。過大的休眠參數(shù)θ可以降低云用戶響應(yīng)時間,但降低了云系統(tǒng)節(jié)能水平。過大的N可以提高云系統(tǒng)節(jié)能水平,但又影響了云用戶響應(yīng)性能。為此,面向(N,T)休眠機制的虛擬機節(jié)能策略,需要聯(lián)合優(yōu)化休眠參數(shù)θ及喚醒閾值N。
為了尋找云用戶響應(yīng)時間D及云系統(tǒng)節(jié)能水平S之間的平衡點,需要聯(lián)合優(yōu)化休眠參數(shù)θ及喚醒閾值N。
由圖2~圖5的實驗結(jié)果,給出不同服務(wù)率μ下云用戶請求平均響應(yīng)時間的最大值Dmax及云系統(tǒng)節(jié)能水平最大值Smax。無量綱化云用戶請求平均響應(yīng)時間與云系統(tǒng)節(jié)能水平,采用權(quán)重算法[12],建立系統(tǒng)成本函數(shù)H為
(9)
其中,f1與f2表示權(quán)重系數(shù),且f1+f2=1。
由2.2節(jié)的理論分析可知,云用戶請求平均響應(yīng)時間D與云系統(tǒng)節(jié)能水平S均很難用休眠參數(shù)θ與喚醒閾值N顯示表示,系統(tǒng)成本函數(shù)H的封閉解也很難求出。因此,利用傳統(tǒng)的理論分析方法難以給出系統(tǒng)成本函數(shù)H的優(yōu)化結(jié)果。
群體智能優(yōu)化算法具有操作簡單、不受目標函數(shù)形式影響的特點,但容易陷入局部最優(yōu)。本文以提高全局搜索能力為目的,綜合使用對數(shù)螺旋函數(shù)及正弦函數(shù)更新飛蛾的當前位置,改進飛蛾撲火優(yōu)化(moth-flame optimization, MFO)算法[13],用于優(yōu)化(N,T)休眠機制的系統(tǒng)參數(shù)。該算法的主要步驟如算法1所示。
算法1 (N, T)休眠機制系統(tǒng)參數(shù)的優(yōu)化算法Input: 種群數(shù)量n,最大迭代次數(shù)Imax,喚醒閾值下限Nmin及上限Nmax,休眠參數(shù)下限θmin及上限θmaxOutput: 最小成本H?,最優(yōu)參數(shù)組合(N?,θ?)1: for N=Nmin:Nmax2: 構(gòu)建n×3二維表M3: M(i,1)=N, i∈{1,2,…,n}4: M(i,2)=rand·(θmax-θmin)+θmin, i∈{1,2,…,n} % 初始化休眠參數(shù)5: M(i,3)=H(M(i,1),M(i,2)), i∈{1,2,…,n} % 由式(4)計算系統(tǒng)成本函數(shù)6: 創(chuàng)建與表M內(nèi)容相同的表F,并對表F按最后一列值升序排序,構(gòu)造表X存放表F第一行的內(nèi)容7: Iter=18: f=roundn-IterImax(n-1)()9: for Iter=2:Imax10: M(i,1)=N, i∈{1,2,…,n}11: t=-2+IterImax()·rand+1 % t為[-2,1]之間的隨機數(shù)12: Di=|(M(i,1), M(i,2))-(F(i,1), F(i,2))|, i∈{1,2,…, f} % 計算表M中前f個系統(tǒng)參數(shù)與表F中前f個系統(tǒng)參數(shù)之間的歐氏距離13: M(i,2)=Di·ebt·sin(2πt)+F(i,2),i∈{1,2,…, f} % 利用螺旋函數(shù)及正弦函數(shù)更新表M中前f個休眠參數(shù)14: Di=|(M(i,1), M(i,1))-(F(f,1), F(f,2))|,i∈{f+1,…,n} % 計算表M中后(n-f)個系統(tǒng)參數(shù)與表F中最后一行系統(tǒng)參數(shù)之間的歐氏距離15: M(i,2)=Di·ebt·sin(2πt)+F(f, 2), i∈{f+1,…,n} % 利用螺旋函數(shù)及正弦函數(shù)更新表M中后(n-f)個休眠參數(shù)16: M(i,3)=H(M(i,1), M(i,2)), i∈{1,2,…,n}17: 結(jié)合表M與表F,構(gòu)造表R,并對表R按最后一列值升序排序18: f=roundn-IterImax(n-1)()19: 清空表F,抽取表R中前f行的內(nèi)容,放入表F中20: endfor 21: if F(1,3) 利用改進的飛蛾撲火優(yōu)化算法進行實驗。實驗過程中的休眠參數(shù)范圍為[θmin,θmax]。考慮休眠定時器長度為無窮大,設(shè)置休眠參數(shù)下限為θmin=0.0 m/s。由圖2與圖4可知,當休眠參數(shù)θ>11.0 m/s時,隨著休眠參數(shù)θ的增大,云用戶請求平均響應(yīng)時間及云系統(tǒng)節(jié)能水平的變化很小,因此,設(shè)置休眠參數(shù)上限為θmax=12.0 m/s。算法所需其他實驗參數(shù)設(shè)置如表1所示。 表1 實驗參數(shù)設(shè)置 將上述實驗參數(shù)代入算法1給出的算法中,在不同服務(wù)率μ下尋找出最小系統(tǒng)成本H*,并給出喚醒閾值N及休眠參數(shù)θ的最優(yōu)組合(N*,θ*)。系統(tǒng)優(yōu)化數(shù)值結(jié)果如表2所示。 表2給出的系統(tǒng)優(yōu)化數(shù)值結(jié)果是在表1所設(shè)權(quán)重系數(shù)下得到的。在實際應(yīng)用中,對于實時性要求高的云系統(tǒng),通常設(shè)置較大的權(quán)重系數(shù)f1,而對于追求高節(jié)能效果的云系統(tǒng),則應(yīng)設(shè)置較大的權(quán)重系數(shù)f2。 表2 系統(tǒng)優(yōu)化數(shù)值結(jié)果 折衷考慮云數(shù)據(jù)中心的節(jié)能水平與云用戶請求的響應(yīng)性能,提出了基于(N,T)休眠機制的云計算中心節(jié)能策略。結(jié)合喚醒閾值及休眠定時器,建立了一種多重同步休假隨機模型,并給出了2維馬爾可夫鏈的一步狀態(tài)轉(zhuǎn)移率矩陣。利用矩陣幾何解方法,給出了云系統(tǒng)節(jié)能水平與云用戶請求平均響應(yīng)時間等性能指標。在Matlab R2016a平臺下基于性能指標的理論分析進行了數(shù)值實驗,在Myeclipse2014平臺下采用Java語言進行了仿真實驗。實驗結(jié)果表明,較大的休眠參數(shù)可以減少云用戶響應(yīng)時間,但降低了云系統(tǒng)節(jié)能水平;較大的喚醒閾值可以提高云系統(tǒng)節(jié)能水平,但又影響了云用戶響應(yīng)性能。權(quán)衡不同性能指標,建立系統(tǒng)成本函數(shù),通過改進飛蛾撲火優(yōu)化算法,給出了云數(shù)據(jù)中心節(jié)能策略的聯(lián)合優(yōu)化結(jié)果。 在下一步的工作中,將引入延遲休眠機制,進一步研究響應(yīng)性能更高的云計算中心的節(jié)能策略。5 結(jié) 論