劉林 張東
(91202部隊 葫蘆島 125004)
云計算是一個用時付費的模型,用戶根據這個模型按需獲取各種可配置,可共享的虛擬資源。其中資源映射是云計算中相對復雜且重要的關鍵技術。當用戶提出任務時,并不知道自己的任務需求需要什么以及多少虛擬資源。一般情況下,用戶都盡可能地選擇更多更好的資源,遠遠超過他們的需求,因此產生了過度供應問題。此外,用戶選擇的資源不足的話,也會導致任務失敗,其Qos指標沒法保障。資源映射的目的是為了實現用戶需求到虛擬資源的映射,以此來保證用戶所需要的服務質量。如果云平臺能自動預測用戶任務的網絡資源需求,在滿足任務的服務質量情況下,并利用網絡資源匹配技術選擇最合適的網絡資源來完成任務,為用戶提供性價比高的服務,也提高了網絡資源利用率,這是一個很有意義的研究問題。
目前,也有很多基于Qos的任務網絡資源需求預測的解決方案。田啟華[1]等提出了利用層次分析法(AHP)來構造資源分配矩陣,從而確定資源分配權重系數。但利用層次分析法最后得到的結果是每個任務對總資源需求的占比,不能準確地預測任務需求的資源。
吳世山[2]利用神經網絡對程序資源消耗預測,以影響程序運行所需要的各項因素作為神經網絡的輸入,以程序運行所消耗的資源作為網絡輸出。預測器不斷收集程序運行的歷史數據作為神經網絡的訓練數據,從而實現對新應用進行預測。但該方法前提是歷史任務已經分門別類地存儲在預測系統里,并且已經知道新任務的類別。這在云計算上是十分困難的,因為云計算任務類型是繁多復雜的,需要在任務預測之前用相應的算法對任務進行分類。
Sarka等[3]采用了混合克隆檢測技術預測云計算中的任務資源需求,將歷史任務執行過程中的資源消耗存儲在數據庫里。利用克隆技術尋找與新任務資源消耗模式相似的歷史任務。找到相似的歷史任務后,根據實際情況選用回歸的方法預測新任務的資源需求。但克隆技術多基于源碼分析,是不利于在公有云環境上推廣應用的。
趙春燕[4]提出了一種分配性正義的伯格模型,用一般期待來約束資源選擇。根據任務的Qos指標提供給任務特定的一般期待資源向量去尋找合適的虛擬機資源來完成任務。任務完成后利用公平評判函數來修正期待資源向量。這種算法實現簡單,利于推廣。該算法的核心是如何根據任務得到合適的一般期待資源向量,期待資源向量的好壞影響著整個預測調度系統的性能,但文獻中沒有提到怎么獲取準確的一般期待資源向量。
目前的研究大都實現了任務服務質量指標到虛擬資源的映射。輸入給定任務的關鍵描述和任務的服務質量需求,通過機器學習等技術預測任務的網絡資源需求,但目的只是預測網絡資源需求的多少,網絡資源利用率提升有限。網絡資源需求預測算法性能的好壞取決于找到相似歷史任務的網絡資源消耗的精確程度和調度框架提供的反饋機制。因此,任務完成后,需要一種反饋機制去判定網絡資源分配是否公平合理,從而提高網絡資源需求預測的準確程度,提高網絡資源的使用率,實現一個最優的面向任務的網絡資源調度過程。
綜上所述,本文提出了一種面向任務網絡資源需求預測的網絡資源映射框架。為了解決云計算任務類型眾多異構等問題,首先對歷史執行和待完成任務服務質量識別后,從歷史任務集合中搜索相同類別的任務建模利用強化學習進行預測。在任務完成后,設計了兩種反饋信息來提高預測的精確度,更接近實際的任務需求。一種是隱式反饋來表示任務是否完成,另一種是顯式反饋來表示任務完成實際用了多少網絡資源。若分配的網絡資源大于實際所用的網絡資源,則更新歷史任務消耗網絡資源數據庫。
我們所提的方案是基于強化學習自動預測任務所需求的網絡資源。圖1為整個方案的流程。首先,我們根據Qos指標對進行任務分類,本文參考了完成時間,帶寬,可靠性,費用四個Qos參數。

圖1 預測任務網絡資源需求的調度過程
當對待執行任務進行合理的分類后,向網絡資源預測器輸入待執行的任務。網絡資源預測器基于歷史執行任務預測該任務所需要的虛擬網絡資源。然后,網絡資源分配器將這些任務分配給合適的可用網絡資源。一旦任務成功完成,預測器收集反饋信息來更新數據庫的信息。如果由于網絡資源容量不足而導致作業終止失敗,則它們將由用戶重新提交或由調度系統自動執行。總之,該預測器的主要目標是釋放未使用的網絡資源,提高網絡資源的利用率。
預測任務需求網絡資源取決于兩種主要因素:一是精確得到歷史相似任務需求網絡資源的能力;二是調度器里的反饋機制。為了做到準確且自動地預測任務網絡資源需求,本算法使用強化學習進行預測。強化學習是一種通過代理探索狀態空間來學習行為策略的學習算法,此外代理通過修改其行動政策來最大化自己的累積獎勵。強化學習還可以很好地應用反饋信息得到更精準的平均實際網絡資源需求。
而當任務完成后,需要收集任務的反饋信息。本算法中反饋信息有兩種。一種是隱式反饋信息,一種是顯式反饋信息。隱式反饋信息反映了任務是否能完成;顯式反饋包含任務終止時使用的實際網絡資源量。我們收集并報告此信息給預測器,當隱式反饋認為該任務完成,預測器就根據顯式反饋信息來改進預測近似值并更接近實際的工作網絡資源需求。
此外,我們提出了分類和回歸兩種方法,通過使用非線性的感知來估計工作要求。在根據準確的反饋信息下,感知機試圖估計實際網絡資源要求,之后決定是否使用當前的網絡資源完成任務?;趶娀瘜W習預測算法的如下:
1)初始化感知機關于任務特征向量x的權重向量ω,p表示目前已經成功執行的任務率,設置其為0.5。
2)逐個分析已經分類好待執行的任務。預測當前分析的任務的網絡資源需求量E',如果E'小于可用的網絡資源能力E,則就提交任務去執行。否則轉到步驟3)。
3)設置一個隨機數 rand ,其值范圍為[0,1]。若 rand>ep/τ+e(1-p)/τ,則利用當前僅有網絡資源執行任務,其中τ為強化學習的衰減常數。否則,返回任務給用戶。
4)當任務執行完成后,根據式(1)收集反饋信息:

其中U為實際任務使用的網絡資源。
5)設置 z=E',為更新目前任務權重向量ω作準備。
6)根據式(2)計算關于ω的導數:

7)利用以下兩個公式更新權重向量ω的值:

8)更新任務成功完成率 p值。
雖然,即使現有的網絡資源不能滿足估計的網絡資源,但我們認為任務也有一定概率能完成的。所以設置一個閾值來決定是否用僅有的網絡資源來執行任務。這個閾值決定于任務完成率p。這個過程是強化學習的探索階段。
根據反饋信息我們可以得到任務執行情況。如果任務成功執行則報告所用的網絡資源,否則報告最大的分配網絡資源量。最后根據執行結果更新感知機的權重向量和探索閾值,不斷近似最小網絡資源供給方案。由于云計算每天處理的任務的數量是巨大的,用這種學習方式得到基于Qos的任務需求預測是可行的。
本文中,為了驗證本文提出網絡資源需求預測模型的性能,選取自回歸模型、指數平滑算法以及本文中的考慮反饋的綜合預測模型分別進行預測,并選取以下3種不同的評價指標對比各模型的預測性能。
1)平均絕對百分比誤差MAPE,用于衡量預測模型對網絡資源需求預測誤差的情況。計算公式如下:

其中,N為測量次數,xt為真實值,x't為預測值。算法的MAPE越小,說明預測值和真實值的偏差越小。
2)均方根誤差RMSE,是預測值和真實值之差的平方和的開方與測量次數N的比值,它表示預測數據與真實數據的偏離程度。

3)節點負載利用率,用來衡量每個節點的負載情況,計算公式如下:

其中,TT為總的運行時間。此外,我們定義任務負載率Task Load來衡量提交任務數量,其值越大,表示調度器中任務的數量越多,計算公式如下:

其中,任務到達時間為 ai(i=1,2,…,N),每一個節點Mi運行時間為Ti秒;MT為運行節點的總數。在開始階段,系統沒到達飽和時候利用率是線性增長的,當系統飽和點處節點利用率越高說明算法性能越好。
在我們的試驗中,我們從一個高性能計算平臺上收集數據,構建了一個真實的任務網絡資源請求數據集合。選用了其中3/4作為訓練集,1/4作為測試集。為了說明本算法的性能,將本算法與自回歸預測模型[5],基于徑向量神經網絡[6]預測模型作對比。

表1 三種網絡資源需求預測模型的MAPE和RMSE仿真參數
由表1可知,由于本文的預測算法利用反饋機制不斷近似得到實際的網絡資源值,使得其預測結果的誤差較小,擬合程度也很高。
為了檢驗各個預測模型的網絡資源利用情況,仿真中我們通過改變任務負載率變化節點負載利用率來衡量算法使用網絡資源的效率。我們設置了1024個節點,每個節點有不同MB的物理內存,便于簡便論證我們方案的性能,我們僅利用節點內存的利用情況進行仿真實驗分析。
如圖2所示,各個預測模型一開始由于系統的網絡資源充足負載利用率都呈線性增長。當任務量到達0.5時候,就慢慢接近飽和。但由于本算法考慮了預測網絡資源大于可用網絡資源也有可能完成任務的情況,因此負載利用率更高,另一方面也說明預測的精確性更高。

圖2 算法負載利用率對比
通過實驗結果的比較和分析可知,本文提出的基于強化學習的預測模型在預測的準確性和性能方面表現的更好,與真實值的擬合程度更高。與傳統的自回歸和神經網絡算法相比,本文的算法在預測效果和預測精度方面都有所提高。
針對難以實現任務Qos到虛擬網絡資源的映射,本文提出了一種自動預測任務資源需求的算法。與目前大部分算法不同的是,我們通過反饋機制提供一個近似最小化的資源供給方案。盡管用戶不知道要實現任務需要什么虛擬資源,但可以通過本算法的學習系統自動地精確預測任務需要的實際資源。仿真結果表明,我們算法有很高的預測精準度,提高了資源利用率,降低了服務成本的同時還實現了用戶的任務需求。