余戰(zhàn)秋
(安徽工業(yè)經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院,安徽 合肥 243000)
云計(jì)算近年來(lái)得到了業(yè)界廣泛的關(guān)注.根據(jù)應(yīng)用需求及場(chǎng)景不同,大量的應(yīng)用構(gòu)建在公有云或私有云之上[1]。如何對(duì)位于不同云中的資源進(jìn)行基于應(yīng)用負(fù)載的優(yōu)化調(diào)度是其中的一個(gè)關(guān)鍵問(wèn)題,值得深入研究。將混合云的資源供給問(wèn)題公式化為如下:給定一組的請(qǐng)求(例如并行的任務(wù))和混合云系統(tǒng)。混合云包括易出故障的私有云,和假定無(wú)故障的公有,主在解決如何決定一個(gè)請(qǐng)求將被公共云還是私有云所服務(wù),在保障了用戶的服務(wù)質(zhì)量(Quality of Service,QoS)的情況下分配用戶請(qǐng)求[2]?;诖?,建立資源預(yù)測(cè)模型能夠?qū)崿F(xiàn)對(duì)于虛擬機(jī)資源的跟蹤及預(yù)測(cè)。通過(guò)預(yù)測(cè),統(tǒng)計(jì)未來(lái)的虛擬機(jī)列表中的虛擬機(jī)負(fù)載狀態(tài),運(yùn)用動(dòng)態(tài)調(diào)整算法啟用新的虛擬機(jī)來(lái)申請(qǐng)資源或者關(guān)閉虛擬機(jī)來(lái)釋放資源,保證資源的高效利用。
將時(shí)變的CPU使用率作為一個(gè)一維隨機(jī)游動(dòng)的值,其中vk表示在k時(shí)刻真實(shí)使用的占總的CPU的比重,獨(dú)立的隨機(jī)變量tk表示過(guò)程噪聲,并假定它正態(tài)分布,建立以下的線性隨機(jī)差分方程:
vk+1=vk+tk
(1)
控制器的目的是使用基于使用情況追蹤的應(yīng)用程序性能模型來(lái)計(jì)算每個(gè)虛擬機(jī)需被分配的資源量.定義a為分配給VM的CPU資源,u為測(cè)量的CPU使用率.建立資源分配模型如下:
ak+1=ak+zk
(2)
uk+1=cak+wk
(3)
其中c記為真實(shí)的使用值與分配值之間的差值,可以根據(jù)服務(wù)器應(yīng)用程序或者虛擬機(jī)而更改。獨(dú)立的隨機(jī)變量zk和wk分別表示過(guò)程噪聲和量測(cè)噪聲,并假定它們滿足正態(tài)分布:
p(z)~N(0,Q)
(4)
p(w)~N(0,R)
(5)
量測(cè)噪聲方差R在每一步或者測(cè)量時(shí)都可能會(huì)發(fā)生變化,過(guò)程噪聲方差Q幾乎肯定會(huì)改變,反應(yīng)了不同的系統(tǒng)動(dòng)力學(xué)[3]。然而在這里,假設(shè)在濾波過(guò)程中它們是穩(wěn)定的。
步驟一:預(yù)測(cè)
(6)
(7)
步驟二:更新
(8)
(9)
其中,增益為
(10)
得到新的k+1時(shí)刻的最優(yōu)CPU分配方案及其對(duì)應(yīng)的誤差協(xié)方差。
在系統(tǒng)運(yùn)行過(guò)程中,每一個(gè)虛擬機(jī)的狀態(tài)將被監(jiān)控.如果在一個(gè)數(shù)據(jù)中心中重載的虛擬機(jī)比例超過(guò)設(shè)定的閾值時(shí),算法將自動(dòng)租用新的虛擬機(jī)[4]。相反的,當(dāng)數(shù)據(jù)中心的空閑虛擬機(jī)比例過(guò)高,算法會(huì)退還多余的虛擬機(jī)。這種方法即使在預(yù)測(cè)并不十分準(zhǔn)確的情況下,仍可以保證一定的服務(wù)質(zhì)量并降低費(fèi)用。
由云租戶分別設(shè)定兩個(gè)不同的閾值,根據(jù)所有的虛擬機(jī)查詢得到的負(fù)載信息與這兩個(gè)閾值進(jìn)行比較,判斷新的資源的啟用與釋放[5]。閾值A(chǔ)與私有云中虛擬機(jī)資源的申請(qǐng)有關(guān),閾值B與公有云中虛擬機(jī)資源的申請(qǐng)有關(guān)。當(dāng)小于閾值A(chǔ)時(shí)說(shuō)明私有云上現(xiàn)有的虛擬機(jī)能較好地完成用戶請(qǐng)求,不需要額外的申請(qǐng)資源。當(dāng)用戶請(qǐng)求數(shù)量減少,私有云中虛擬機(jī)的負(fù)載降低小于閾值B,則要申請(qǐng)?jiān)诠性浦型诉€虛擬機(jī),減少資源的浪費(fèi)。
圖1 Q=10時(shí),CPU資源使用情況與分配追蹤圖
如圖1可知,控制器追蹤C(jī)PU使用情況的變化,并實(shí)時(shí)的調(diào)整資源分配。預(yù)測(cè)算法能夠很好的實(shí)現(xiàn)對(duì)于使用資源的追蹤,并且將分配值與使用值的差值保持在一個(gè)合理的范圍內(nèi).控制器能夠針對(duì)每個(gè)瞬時(shí)的資源使用變化進(jìn)行動(dòng)態(tài)調(diào)整,是因?yàn)橛幸粋€(gè)較高的卡爾曼增益值,使得更加傾向于信任新的觀測(cè)值而非舊的預(yù)測(cè)值.雖然在這種方式下,控制器對(duì)于任何變化的工作負(fù)載有更快的響應(yīng),但是這可能會(huì)引起不必要的資源分配調(diào)整,使得更容易出現(xiàn)資源飽和現(xiàn)象。
圖2 Q=0.7時(shí),CPU資源使用情況與分配追蹤圖
如圖2所示,針對(duì)上述容易出現(xiàn)資源飽和的情形,調(diào)整實(shí)驗(yàn)參數(shù),來(lái)獲得對(duì)系統(tǒng)更好的理解.令Q=0.7 ,這樣會(huì)得到一個(gè)較小的卡爾曼增益,通過(guò)減少對(duì)于新的觀測(cè)值的信任,使得服務(wù)性能變得更加平穩(wěn)。
在研究虛擬化技術(shù)、云環(huán)境下的預(yù)測(cè)技術(shù)和混合云資源調(diào)度技術(shù)的基礎(chǔ)上,設(shè)計(jì)了混合云原型系統(tǒng).根據(jù)構(gòu)建的混合云模型,并提出一個(gè)調(diào)度算法,包括自動(dòng)資源申請(qǐng)以及用戶請(qǐng)求響應(yīng)。運(yùn)用卡爾曼預(yù)測(cè)模型,對(duì)虛擬機(jī)的資源分配信息進(jìn)行追蹤和預(yù)測(cè),并統(tǒng)計(jì)每個(gè)虛擬機(jī)的負(fù)載情況。當(dāng)云中負(fù)載過(guò)重或過(guò)輕的比重大于閾值時(shí)進(jìn)行資源的申請(qǐng)和退還。通過(guò)使用負(fù)載均衡器實(shí)現(xiàn)用戶請(qǐng)求的合理分配。