郭鵬
(安徽電子信息職業技術學院 軟件學院,安徽 蚌埠 233000)
為了滿足用戶的實時需求,云計算需要預留足夠的資源(例如內存、CPU)來滿足應用程序處于運行狀態時的要求[1-2]。資源預留需要準確地滿足實時的需求:資源的過度配置會導致運營成本過高,而資源配置不足可能會嚴重降低服務質量,造成中斷和實時部署額外資源[3]。現有的資源預留策略大多使用機器學習這一類方法,但是機器學習算法的探索與應用階段具有一定的不可預測性,可能會導致資源預留無法滿足真實需求。因此,本文提出一種基于在線學習的云計算資源預留策略,通過實時在線學習來及時、準確地進行資源預留。


(1)
如式(2)所示,當違反資源i的約束沒有超過閾值,則認為策略π是一個可行的策略,即
(2)
因此,資源i的可行約束可以重寫為:
(3)
我們的目標是找到一個能夠使總成本最小化的策略,但由于每一個時隙t中的資源請求λt是未知的,這樣的目標是難以達到的。為了解決這個問題,采用在線凸優化框架對問題進行求解。
采用誤差這個性能指標,來對在線算法的魯棒性進行評價[4]。誤差是策略π與基準策略之間的累積損失差。令x*表示基準策略,可以通過求解下述的問題得到x*。
(4)
于是,誤差R的定義如下:
(5)

通常,對手的動作需要受到資源的約束,即對手的資源請求不能超過資源i的有限值Λi,max。但是,Λi,max的取值會影響算法:若Λi,max的值太小,則會導致算法不穩定;若Λi,max的值太大,則資源請求很容易超出資源的總量,導致算法性能下降。

當策略π沒有誤差時,認為策略π具有與基準策略相同的平均性能。然后,引入一類基準策略,以確保對時間T內K個時隙的都沒有違反約束:
(6)
當K與T相同時,能得到原始的基準。隨著K值的下降,基準能夠在一段較短的時間內確保約束不被違反,因此會產生較高的成本。
在時隙t中調用在線資源預留策略以將決策從xt-1更新為xt。為了解釋OLRRS如何執行策略更新,實現以下三個過程:約束凸化、預測隊列以及漂移加懲罰。

由于高斯過程的分位函數是一個擬凸函數,可以為FΛ設計一個凸包絡函數,即:
(7)


(8)

如式(9)所示,將預測隊列向量定義為Q,該向量中的每個元素表示每種資源的虛擬隊列,其中包含過去迭代中預測的違反約束概率的和。
(9)

通過預測變量隊列獲得了時間平均約束后,接下來解釋如何在OLRRS中更新xt。為了結合成本和預測隊列,使用李雅普諾夫優化中的漂移加懲罰技術,該技術用于解決受約束的隨機網絡優化問題[5]。隊列長度和成本之間的重要性是通過懲罰參數V控制的。具體來說,首先考慮二次李雅普諾夫漂移,用來衡量我們的策略對預測隊列的影響。二次李雅普諾夫漂移需要滿足如下所示的條件:
(10)

(11)
變量x增大會使漂移項Δ(t)變小,但同時會導致成本VC(x)增加。在最小化漂移加懲罰的過程中,可以在兩個相互矛盾的目標之間取得平衡。在每個時隙t中,可以找到漂移加懲罰上限的極小值,并產生了一種在線策略。
進一步添加一個以xt-1為中心的二次正則化器,以確保下一次迭代xt與上次迭代xt-1的值之間變化不大。
在漂移加懲罰的基礎上加入了額外項α‖xt-xt-1‖2,有
(12)

觀察函數g(x),可以對g(x)關于資源I進行分解,然后通過求解每一個子問題得到資源預留策略。這能為每個時隙t生成了一個bang-bang臨時預留策略。必須保持穩定的預留策略,以允許對服務器和資源的操作。與此同時,使用的正則器,以步長為1/2α的梯度下降法來更新資源。令梯度為零,就能求解得到xi,即
(13)
在本小節中,將本算法與Dynamic Mirror Descent(DMD)框架[6]的實現進行比較,采用真實的公共數據集[7]。數據集包含有關方面的詳細信息:(1)資源的實際使用情況;(2)資源的請求;(3)將資源放置在大型集群中的約束。測量使用群集上資源的實際使用情況,測量的時間粒度為1 d。
圖1和圖2分別是CPU資源和內存資源的使用情況。由圖可知,對于CPU和內存兩種資源,OLRRS都會較為準確地預留資源,并針對真實需求變化及時地做出快速響應。DMD卻無法及時適應動態變化,并有違反資源約束的情況發生。

圖1 CPU資源使用情況 圖2 內存資源使用情況
本文設計了一種用于云計算的在線資源預留策略(OLRRS)。由于云端的工作負載多變且難以預測,因此在云環境中進行資源預留是一個具有挑戰性的課題。OLRRS使用李雅普諾夫優化技術來進行資源策略的調整:一方面最小化超額配置的資源,提高資源使用率;另一方面,避免了預留過少的資源導致無法滿足用戶的真實需求。實驗結果驗證了本算法在資源分配方面的有效性。未來的工作集中于從理論方面證明本算法的性能。