徐雅斌 彭宏恩



摘 要:針對缺乏PaaS平臺下資源需求的有效預測與優化分配的問題,提出一種資源需求預測模型和分配方法。首先,根據PaaS平臺中應用對資源需求的周期性來對資源序列進行切分,并在短期預測的基礎上結合應用的多周期性特征,利用多元回歸算法建立綜合的預測模型。然后,基于MapReduce架構設計實現了一個Master-Slave模式的PaaS平臺資源分配系統。最后,結合當前任務請求和資源需求預測結果進行資源分配。實驗結果表明,采用該資源需求預測模型和分配方法后,相比于自回歸模型和指數平滑算法,平均絕對百分比誤差分別下降8.71個百分點和2.07個百分點,均方根誤差分別下降2.01個百分點和0.46個百分點。所提預測模型的預測結果不僅誤差小,與真實值的擬合程度也較高,而且利用較小的時間開銷就可以獲得較高的準確度。此外,使用該預測模型的PaaS平臺的資源請求的平均等待時間有了明顯的下降。
關鍵詞:云計算;平臺即服務;需求預測;資源分配;多元回歸
中圖分類號: TP393.09;TP391
文獻標志碼:A
Abstract: In view of the lack of effective resource demand forecasting and optimal allocation in Platform-as-a-Service (PaaS) platform, a resource demand forecasting model and an allocation method were proposed. Firstly, according to the periodicity of the application demand for resources in PaaS platform, the resource sequence was segmented. And on the basis of short-term prediction, combined with the multi-periodicity characteristics of the application, a comprehensive prediction model was established by using the multiple regression algorithm. Then, based on MapReduce architecture, a PaaS platform resource allocation system based on Master-Slave mode was designed and implemented. Finally, the resources were allocated based on current task request and resource demand prediction results. The experimental results show that, compared with autoregressive model and exponential smoothing algorithm, the proposed resource demand forecasting model and allocation method has the mean absolute percentage error drop of 8.71 percentage points and 2.07 percentage points respectively, root mean square error drop of 2.01 percentage points and 0.46 percentage points respectively. It can be seen that the prediction result of the prediction model has little error and its fitting degree with real value is high, while high accuracy costs little time. Besides, the average waiting time of PaaS platform with the proposed prediction model for resource requests decreases significantly.
Key words: cloud computing; Platform-as-a-Service (PaaS); demand forecasting; resource allocation; multiple regression
0 引言
云計算以其便捷、高可靠性的資源服務方式獲得了人們的青睞并得到了快速的發展[1],越來越多的應用開始部署在云中。在云計算的三層服務體系中,作為承上啟下的平臺即服務(Platform-as-a-Service, PaaS)層通過為應用程序提供完備的部署和運行環境,使開發者在開發的過程中只需關注應用開發本身,而不需要關心軟件及硬件環境,這可以在很大程度上節省開發人員的工作量,縮短開發周期。
PaaS平臺中資源需求量的獲取主要有兩種方式:一種是實時獲取應用對資源的訪問次數及使用量,并估算出當前應用對資源的需求量。由于PaaS平臺中的應用一般規模較大,并發程度較高,且資源需求變化較快[2],這種實時獲取的方法不可避免地會有一定的滯后性,給資源分配策略帶來較大的壓力,甚至會違反服務等級協議(Service-Level Agreement, SLA)[3]。另一種方式是采用預測算法對PaaS中應用的資源需求量進行預測,根據歷史數據,預測應用在未來一段時間可能的資源需求量。一旦獲知未來的資源需求量,資源分配器就可以提前制定相應的策略[4]。這種方式能夠為PaaS平臺的資源分配提供更加科學、合理的決策支持,對PaaS平臺的資源優化配置以及系統的穩定運行有直接的影響。因此,資源需求預測是目前PaaS平臺資源分配研究的重點。
目前的云計算資源預測模型可以分為兩類:第一類是基于時間序列的基礎預測模型;第二類是基于神經網絡、支持向量機(Support Vector Machine, SVM)等機器學習方法的預測模型。
文獻[5]利用動態趨勢預測的思想,通過當前負載與上一時刻負載的比較來預測負載上升或下降的趨勢,并且通過當前負載與歷史負載均值的比較,調整負載增加或減少的幅度,計算下一時刻的負載值。該模型簡單快速,但是預測誤差率相對較大。
文獻[6]采用指數平滑的技術實現對即將到來任務的預測,在云計算系統中獲得最近的任務序列,采用指數平滑(Exponential Smoothing, ES)算法,通過任務的歷史信息預測即將到來的任務的趨勢,如到達時間、任務大小和執行時間。
文獻[7]提出了云計算中的彈性資源擴展預測方案,在該方案中,采用輕量級的信號處理技術與統計學方法,實現動態的資源需求的在線預測。具體方法為:利用快速傅里葉變換技術分析資源需求序列的特征,在沒有相似負載模式時使用離散的馬爾可夫過程對資源需求進行預測。
文獻[8]綜合考慮最小化成本與SLA,采用基于二階自回歸移動均值的預測模型。通過建立用戶行為模型,對用戶的歷史行為進行分析,計算出未來短期內負載所需的資源量。該算法中將部分變量賦予固定值,這可能會影響算法的適應能力以及算法的靈活性。
文獻[9]中基于虛擬機的外部表現,提出了利用TCP-like模式計算指數加權移動平均值來預測服務器上的CPU負載。模型中最重要的是穩定性與響應能力的折中因子a,通過實驗確定合適的a,并且通過調整a的正負性,實現對負載波動趨勢的預測。
以上基于時間序列的傳統預測方法具有模型簡單、收斂速度快等特點。但是,由于PaaS中應用業務內容的多樣性以及服務時間的不一致性的影響,導致應用對資源的需求量具有很強的不確定性。傳統的基于時間序列的預測模型在這種情況下會不可避免地產生較大的誤差,不僅可能會引發違反SLA問題,而且可能導致資源浪費。因此,許多研究者將機器學習方法應用到資源需求預測中。
文獻[10]采用兩層的前向反饋徑向基函數神經網絡來對云計算環境中單虛擬機能耗進行預測。由于神經網絡具有較強的非線性擬合能力,可以通過訓練逼近復雜的非線性函數[11],得到較好的近似解。
針對傳統的單值預測所包含的信息量過少、不能支持完善的自適應調整策略、會引發不必要的調整等問題,文獻[12]利用SVM對云環境中用戶的并發量進行預測,并采用梯度下降粒子群算法進行優化。
文獻[13]采用兩層模式進行資源預測。第一層采用包括自回歸、移動均值、神經網絡等多個子模型的自回歸組合,并且根據預測誤差對組合中的每個預測子模型的權重進行調整。該模型的第二層利用不同虛擬機之間的關系以及不同序列之間的相關性來消除噪聲數據的干擾,提高預測的健壯性。這個預測模型綜合考慮了不同虛擬機的交叉相關性,但是在云服務中,僅能根據虛擬機的外在表現(如CPU、內存的使用情況)判斷其不同虛擬機之間的差別,而這種差別是微弱的。
綜合云計算中資源預測的發展趨勢以及國內外研究現狀得出,傳統的基于簡單時間序列的預測方法很難適應云計算環境中復雜多變的環境。而目前基于機器學習的預測方法,無論是神經網絡、SVM還是其他一些算法,大部分是針對IaaS層的,是以虛擬機為基本對象的預測算法[14],而針對PaaS層面資源預測方法的研究相對較少。由于PaaS層主要面向的對象為應用,導致其與IaaS層有較大的不同,主要表現在:
1) 資源需求變化幅度不同。一般情況下,IaaS平臺中的資源短期內變動幅度較小,而PaaS平臺中的資源變動幅度較大,并且可能出現激增的情況。
2) 資源需求的周期性不同。在云計算環境中,應用多采用跨虛擬機以及跨服務器的部署方式[15],因此一個應用可能存在多個實例,并且部署在不同的虛擬機中,這種情況下,單個虛擬機的資源需求量沒有明顯的周期性,而對于PaaS平臺中的某個應用而言,通過分析是可以發現其周期性的。
通過對PaaS平臺中應用對資源的需求進行準確的預測,可以優化PaaS平臺的資源配置,合理、有效地進行資源分配,從而提高云平臺的應用效率,確保PaaS平臺上應用的穩定運行[16]。準確的預測算法能使PaaS平臺預知應用負載的變化趨勢,并根據負載變化趨勢更好地實現資源的有效配置和彈性分配,使PaaS平臺上的應用可以高效平穩地運行,避免不必要的開銷。因此,資源需求預測技術可以有效提高資源分配的科學性和準確性。
為此,本文提出并設計了面向PaaS平臺的資源需求預測模型和資源分配方法,通過基于時間序列的短期預測與周期性預測相結合進行綜合預測,從而對PaaS平臺的資源進行科學、合理的分配。
1 基于時間序列的短期預測
短期預測對于云計算的資源配置有著重要的意義[17]。短期時間序列預測的主要思想是利用某一事物過去的行為來預測其將來的可能變化,即通過一段時間內的歷史數據來預測將來短期內該事物的變化趨勢。相較其他方法而言,由于自回歸模型具有高效、簡潔的特點,因而我們采用自回歸模型進行短期時間序列預測。
自回歸模型(Autoregressive Model)的特點是用自身作回歸變量,是一種利用前期若干時刻的隨機變量的線性組合,預測即將到來的短時間內變量變化趨勢的線性回歸模型[18]。具體形式如式(1):
為了獲得自回歸模型的最佳擬合系數,需要找到一種參數擬合方法。最小二乘法是一種數學優化技術,通過最小化誤差的平方和尋找數據的最佳匹配,其特點是簡潔高效,不需要大量迭代。為此,本文中使用最小二乘法進行參數擬合,使其與實際值的擬合誤差最小。通過求得模型中參數的最優值,解決回歸問題。
在回歸模型中,使總的擬合誤差(即擬殘差)達到最小作為選擇擬合曲線有三種方法:
1)用“殘差和最小”確定直線的位置。但是這個標準存在一些不足,如果只是對誤差進行簡單的相加求和,會出現“殘差和” 相互抵消的問題。
2)為了解決“殘差和”會抵消的問題,可以使用“殘差”絕對值的和最小作為標準,但是絕對值計算起來比較麻煩。
3)以“殘差平方和最小”為標準,使用最小二乘法解決問題。采用這種方法,不僅計算比較方便,得到的估計量還具有優良的特性。
在本文的回歸模型中,采用第三種方法,需要使所有的觀測值的“殘差平方和”最小,通過計算得到自回歸模型的平方損失函數:
2 基于多元回歸模型的綜合預測
單獨使用基于時間序列的算法或回歸算法的預測結果都是不準確的。因為,短期時間序列算法只能根據近期的數據進行趨勢預測,不能充分利用歷史數據,因而預測的精度不高;如果只考慮周期性預測,雖然能充分利用歷史數據,但是不能很好地掌握當前資源需求的變化趨勢,尤其是在資源需求波動性較大的情況下,會產生較大的誤差。在本文的模型中,充分考慮了這兩者的不足,結合時間序列與回歸分析的優勢來預測PaaS平臺中應用的動態資源需求。
在本文提出的預測模型中,因為要綜合考慮資源需求的短期趨勢以及周期性,這時采用自回歸以及一元回歸分析進行預測是難以奏效的。因此,在本文的預測算法中,采用多元回歸模型作為綜合預測的基礎。
多元回歸是自然科學領域的一種非常重要的多元統計分析方法,它以數理統計為基礎,通過對大量觀測值或者歷史數據的分析,確定各個變量之間的相關性。在一個變量受多個因素影響的問題中,多元回歸算法是一種行之有效的方法[19]。在本文的問題中,假設需要預測的值為y,樣本變量為x,每組樣本數量為p,n組觀測值為:
使用梯度下降算法計算時,b首先被初始化,然后通過不斷迭代計算b的參數,最終結果收斂于最優值。
在梯度下降算法中,α決定了迭代搜索的速度。如果α取值較大,可能在迭代的過程中越過最小值,出現overshoot minimum的現象;如果α過小,會造成迭代次數過多,導致算法的速度很慢。因此,應該依據問題的具體情況確定合適的α值。
梯度下降算法的步驟如下:
1)確定移動步長的大小(Learning rate)。
2)給定一個初始值集合{b1,b2,…,bp} 。
3)確定一個梯度下降的方向,然后根據開始確定的移動步長向下移動,并更新b1,b2,…,bp。
4)當下降的高度小于定義的閾值的時候,則停止下降;否則繼續迭代搜索。
在多元線性回歸模型中,變量的權值確定分為兩種:一種是參數學習法,一種是非參數學習法。在參數學習法中,模型通過訓練數據得到一系列權值(參數),然后根據這些權值來預測數據。非參數學習法在預測的過程中,每次都需要重新訓練新的數據,得到新的權值,這將導致每次訓練得到的權值也是不一樣的。
在本文的問題中,PaaS平臺中資源需求量的波動性可能會比較大,所以選擇非參數學習法進行資源需求的預測。
3 PaaS平臺資源分配系統設計
為了能夠提供最優的資源分配和計算服務,并獲得整體更好的性價比和處理效率,就需要采用PaaS架構的云計算平臺來進行資源分配和服務。在這種PaaS架構的云計算平臺中可以綜合考慮服務質量(Quality of Service, QoS)、資源使用情況、服務器與虛擬機數量等諸多因素[21]。為此,本文在原有的云計算平臺基礎上,基于Hadoop的MapReduce架構實現了一個Master-Slave模式的PaaS架構,并由此進行資源分配和計算服務,從而可以有效實現大型應用的分布式部署,將一個應用映射成多個應用實例,實現應用實例的跨虛擬機或者跨服務器部署。
為了能夠有效地收集PaaS平臺中的相關信息,并據此進行負載預測和資源分配,以進一步優化和提高PaaS平臺的整體性能,構建了如圖1所示的資源分配系統。
本文提出并采用的資源分配系統主要由APP Master節點和Web服務器集群組成,Web服務器提供對外訪問服務,也是資源分配的主要對象。APP Master作為管理節點對集群的資源進行管理,主要負責外部訪問的解析以及資源的分配,由請求解析模塊、監控器、需求預測模塊、資源分配器等組成。各個模塊具體功能如下:
1)解析器主要負責對外部訪問的解析,當有外部訪問時,解析器會對其進行信息提取,并對這些信息進行相應的計算得到負載值,以便預測算法和調度模塊更好地對資源進行預測與調度。
2)監控器會周期性地收集集群中各個服務器的資源負載信息,以及其中虛擬機、應用實例所占資源的比率,然后將這些信息提交給資源分配器。
3)需求預測模塊中的預測算法能根據應用的歷史負載信息預測應用在下一時刻的資源需求量,并將其提交給資源分配器,作為其資源分配時的重要參考指標。
4)資源分配器根據預測模塊的預測值以及監控器提供的信息,利用其中的調度算法制定資源分配方案并實施。
在本調度系統中,APP Master是資源分配的核心節點,依據用戶提交的請求或任務調度相應的資源。它不僅需要在SLA范圍內及時響應用戶的請求,而且還需要盡可能提高云計算服務的資源利用率。然而,盲目地提高服務器的資源利用率會嚴重影響其中應用的服務質量,因此需要一個需求預測模塊來對云平臺中的應用負載進行預測,提前知曉應用在下一時刻的負載,即資源需求量。這樣,可以使Mater中的資源分配器制定出更加合理、有效的資源分配方案,在保證SLA的同時提高云平臺的資源利用率。所以,需求預測模塊有著極其重要的意義,也是本文的研究重點。在此模塊中,本文設計了短期預測與周期性預測相結合的綜合模型。通過記錄在數據庫中的歷史數據,計算出PaaS平臺中的應用在未來時刻對資源的需求量。
4 實驗結果及分析
實驗中,從如圖1所示架構的PaaS平臺資源分配系統的監控模塊收集資源需求量數據,作為相應的數據集合。該PaaS平臺主要用于提供Web訪問以及數據處理功能,對外訪問功能主要由Weblogic調度,數據處理功能由Oracle實現。對2016年10月到11月期間我們構建的資源分配系統監控模塊獲取的資源需求量數據進行實驗。
本文實驗數據集包括20160條資源請求數據。選擇其中的3/4作為訓練集,剩下的1/4作為測試集。為了彌補數據量的不足,采用交叉驗證的方法來檢驗資源需求預測模型預測的準確性和性能的穩定性。為了充分驗證預測模型的有效性,本文在同一實驗環境中重復進行多次實驗,選擇多次實驗的均值作為實驗結果數據。通過這種方法,可以有效排除偶然因素帶來的實驗干擾。
本文預測模型對資源需求量的預測值與實際值的對比結果如圖2所示。其中,虛線代表預測值,實線代表測試獲取的真實值。縱坐標為CPU數量,單位為臺。橫坐標為時間,單位為毫秒。由圖2可以看出,資源需求預測結果與實際結果基本相同,雖然由于趨勢慣性的影響,在峰值時會產生一定的誤差,但很快就能收回來,與實際值保持一致。總的來說,本文提出的預測模型能夠比較準確地預測資源需求量變化的趨勢。
5 結語
針對PaaS平臺應用負載具有周期性的特點,本文設計了一種在資源需求預測的基礎上進行資源分配的方法。針對資源需求預測,將短期預測與周期性預測相結合,利用多元回歸模型以及梯度下降算法對PaaS平臺中的資源需求量進行預測。在資源分配上,基于MapReduce架構設計實現了一個Master-Slave模式的PaaS架構,并由此進行資源分配和計算服務。
實驗結果表明,本文提出的模型和方法在預測準確性方面相較傳統預測算法有明顯的提高,資源消耗量和任務平均等待時間分別有不同程度的下降。通過資源需求預測結果進行資源分配,不僅能提高資源利用率,節省服務的成本,也能縮短對用戶的響應時間,提升用戶的服務體驗,有效保證SLA的執行。但由于實驗部分所采用的數據集是從自己團隊構建的PaaS平臺中獲取的實驗數據,數據量不是很大,而且不一定具有廣泛的代表性,因此系統的性能指標可能會因實驗環境和實驗數據的不同而不同。接下來,我們將進一步搜集并采用公開的數據集來檢驗模型和方法的有效性。
參考文獻 (References)
[1] ARMBRUST M, FOX A, GRIFFITH R, et al. A view of cloud computing[J]. Communications of the ACM, 2010, 53(4): 50-58.
[2] XU P, ZHANG Y, SUN S. PaaS cloud resource scheduling techno-logy research [J]. Journal of Huazhong University of Science and Technology (Natural Science Edition), 2013, S2(41): 53-56.
[3] XU L, ZHANG S, LI J. A density based performance prediction model for cloud services [C]// Proceedings of the 2013 International Conference on Cloud Computing and Big Data. Washington, DC: IEEE Computer Society, 2013: 92-99.
[4] HU Y, DENG B, PENG F, et al. Workload prediction for cloud computing elasticity mechanism [C]// Proceedings of the 2016 IEEE International Conference on Cloud Computing and Big Data Analysis. Piscataway, NJ: IEEE, 2016: 244-249.
[5] 周文俊,曹健.基于預測及蟻群算法的云計算資源調度策略[J].計算機仿真,2012,29(9):239-242.(ZHOU W J, CAO J. Cloud computing resource scheduling strategy based on prediction and ACO algorithm [J]. Computer Simulation, 2012, 29(9): 239-242.)
[6] WANG C, HUNG W, YANG C. A prediction based energy conserving resources allocation scheme for cloud computing [C]// Proceedings of the 2014 IEEE International Conference on Granular Computing. Piscataway, NJ: IEEE, 2014: 320-324.
[7] GONG Z, GU X, WILKES J. Press: predictive elastic resource scaling for cloud systems [C]// Proceedings of the 2010 International Conference on Network and Service Management. Piscataway, NJ: IEEE, 2010: 9-16.
[8] ROY N, DUBEY A, GOKHALE A. Efficient autoscaling in the cloud using predictive models for workload forecasting [C]// Proceedings of the 4th IEEE International Conference on Cloud Computing. Piscataway, NJ: IEEE, 2011: 500-507.
[9] SONG W, XIAO Z, CHEN Q. Dynamic resource allocation using virtual machines for cloud computing environment [J]. IEEE Transactions on Parallel and Distributed Systems, 2013, 24(6): 1107-1117.
[10] 徐浩.基于神經網絡的虛擬機能耗預測模型研究[D].北京:北京郵電大學,2015: 41-49.(XU H. Research on neural network based virtual machine's power prediction model [D]. Beijing: Beijing University of Posts and Telecommunications, 2015: 41-49.)
[11] 王維,張英堂.BP 神經網絡進行時問序列預測的不足及改進[J].計算機工程與設計,2007,28(21):5292-5294.(WANG W, ZHANG Y T. Analysis and improving way of BP ANN in predicting time series data [J]. Computer Engineering and Design, 2007, 28(21): 5292-5294.)
[12] 孟煜,張斌,郭軍,等.云計算環境下云服務用戶并發量的區間預測模型[J].計算機學報,2017,40(2):378-396.(MENG Y, ZHANG B, GUO J, et al. Prediction interval estimation model of user concurrent request for cloud service in cloud environment [J]. Chinese Journal of Computers, 2017, 40(2): 378-396.)
[13] JIANG Y, PERNG C, CHEN R, et al. ASAP: a self-adaptive prediction system for instant cloud resource demand provisioning [C]// Proceedings of the 2011 IEEE 11th International Conference on Data Mining. Piscataway, NJ: IEEE, 2011: 1104-1109.
[14] PARK S, MUN Y. Prediction method about power consumption by using utilization rate of resource in cloud computing environment [C]// Proceedings of the 2016 International Conference on Big Data and Smart Computing. Piscataway, NJ: IEEE, 2016: 265-268.
[15] 溫鑒榮.PaaS云平臺中Java Web應用調度機制的研究與實現[D].北京:北京郵電大學,2013:10-19.(WEN J R. Research and implementation of Java Web application scheduling mechanism in PaaS [D]. Beijing: Beijing University of Posts and Telecommunications, 2013: 10-19.)
[16] CHEN H, FU X, TANG Z, et al. Resource monitoring and prediction in cloud computing environments [C]// Proceedings of the 3rd International Conference on Applied Computing and Information Technology/2nd International Conference on Computational Science and Intelligence. Piscataway, NJ:IEEE, 2015: 288-292.
[17] XU D, ZHANG X. An incremental clustering pattern sequence-based short-term load prediction for cloud computing [J]. International Journal of Grid and Utility Computing, 2016, 7(4): 304-312.)
[18] SHUMWAY R H, STOFFER D S. Time Series Analysis and Its Applications: with R Examples [M]. Berlin: Springer, 2006: 84-165.
[19] 張顯,王建學,王錫凡,等.考慮多重周期性的短期電價預測[J].電力系統自動化,2007,31(3):4-8.(ZHANG X, WANG J X, WANG X F, et al. Short-term electricity price forecasting based on price subsequences [J]. Automation of Electric Power Systems, 2007, 31(3): 4-8.)
[20] 沈富可,張衛,常潘.應用時間序列分析進行網絡負載預測[J].中山大學學報(自然科學版),2009,48(S1):84-86.(SHEN F K, ZHANG W, CHANG P. Time series analysis used to predict network load [J]. Acta Scientiarum Naturalium Universitatis Sunyatseni, 2009, 48(S1): 84-86.)
[21] 趙宏偉,申德榮,田力威.云計算環境下資源需求預測與調度方法的研究[J].小型微型計算機系統,2016,37(4):659-663.(ZHAO H W, SHEN D R, TIAN L W. Research on resources forecasting and scheduling method in cloud computing environment [J]. Journal of Chinese Computer Systems, 2016, 37(4): 659-663.)