鄧 莉,任雨林,朱金燦,何 亨,李 超
1(武漢科技大學 計算機科學與技術(shù)學院,武漢 430065)2(智能信息處理與實時工業(yè)系統(tǒng)湖北省重點實驗室,武漢 430065)3(湖北大學 信息化建設與管理處,武漢 430062)
近年來,云平臺因其廉價可擴展的計算資源、穩(wěn)定高容量的存儲空間和隨時隨地可靈活訪問等優(yōu)勢受到廣泛地使用.
雖然云平臺提供的按需付費方式新穎便捷,能有效地提高工作效率.但是最新的研究[1,2]表明,大多數(shù)云設施和商業(yè)集群的資源使用率很低,比如:Twitter云平臺千臺服務器在一個月內(nèi)的總CPU使用率始終低于20%,然而預留的資源卻達到了總資源的80%[3];Google云平臺CPU平均使用率在10%~45%之間波動[4].為了提高云平臺的資源使用率,一些研究人員改進了云數(shù)據(jù)中心的調(diào)度算法[5],通過建立基于歷史數(shù)據(jù)的預測模型和現(xiàn)有調(diào)度模型的組合[6],預測了云數(shù)據(jù)中心任務未來的資源使用率,結(jié)果表明,云平臺任務的資源使用預測可以優(yōu)化任務的資源分配方式,降低數(shù)據(jù)中心成本,是提高云平臺性能和效率的一種有效方法[7,8].
對云平臺任務的資源使用情況的預測展開分析研究,需要大量的相關(guān)資源使用數(shù)據(jù)集,但是由于商業(yè)數(shù)據(jù)的機密性以及公司策略等原因,真實的云平臺資源使用數(shù)據(jù)集較難獲得.因此現(xiàn)有的大部分相關(guān)研究都是基于仿真數(shù)據(jù)[9]而展開的,最終的實驗結(jié)果缺乏說服性.還有些學者針對長時間運行的服務[10]或者高性能計算負載[11]也展開過相關(guān)研究,但是真實的云計算平臺負載具有多樣性,專注于某一種類型的負載進行研究并不能有效提高云平臺整體的資源使用率.Cortez E等人[12]于2017年對真實云平臺Microsoft Azure中的資源使用情況進行了詳細地分析,研究表明了Microsoft Azure云平臺的低資源使用率和云平臺資源使用率的可預測性,并且使用隨機森林回歸模型預測虛擬機的資源使用量,但是性能還可以進一步提升.還有研究人員針對云計算環(huán)境下基于用戶需求進行預測的虛擬機節(jié)能分配方法進行過研究[13],但是并沒有針對具體任務進行資源預測.Delimitrou C等人[10]于2014年提出離線分析工作負載的方法,先讓任務試運行一段時間,通過推薦算法得出其可能的資源使用率,然后重新調(diào)度.實際上,離線分析是不可行的,因為在實際生產(chǎn)中,工作負載的輸入在任務運行之前通常都是得不到的.Reiss C等人[11]通過對Google云平臺數(shù)據(jù)集的詳細分析,發(fā)現(xiàn)云平臺中運行時間較長的任務資源使用率具有可預測性.Yu等人[14]于2014年提出了使用BP模型預測Google云平臺任務的平均CPU使用量的方法,但是Cortez等人[12]于2017年的研究工作表明云平臺調(diào)度器分配給任務的資源量是按照用戶估計的任務最大資源使用量分配的,因此在生產(chǎn)中更需要預測的是任務的最大資源使用量.而且BP模型算法的收斂速度慢,容易陷入局部極值.Islam[15]等人提出了改進的遞歸神經(jīng)網(wǎng)絡(RNN)的預測方法-長短期記憶網(wǎng)絡(LSTM),用于識別云中的應用程序故障.除了上面提到的研究,還有一些學者開展了任務使用模式預測[16]和預測任務的約束特征[17]等工作.T.Mehmood等人[18]把Google云平臺中任務的資源使用率分成高中低三個級別,使用分類技術(shù)對任務的資源使用率級別進行預測,但是這種分類方式是基于粗粒度的,不能有效地幫助調(diào)度器分配資源.
本節(jié)以阿里巴巴云平臺1(數(shù)據(jù)集于2017年發(fā)布)任務和Google云平臺(數(shù)據(jù)集于2012年發(fā)布[19])任務為例,詳細地分析了云平臺任務的資源使用特征.
圖1(a)描述了Google云平臺中JobId為3418309、TaskId為0的任務在連續(xù)114個小時內(nèi)的最大CPU使用率的變化情況.圖1(b)描述了Google云平臺中JobId為3418309、TaskId為1的任務在連續(xù)114個小時內(nèi)的最大CPU使用率的變化情況.從圖1可以看出,在大多數(shù)情況下,這兩個任務在某一個時間點的最大CPU使用率都與附近時間點該任務的最大CPU使用率比較接近,而且時間點越接近,相應的資源使用率相差越小.在少數(shù)情況下CPU使用率也會有突變,例如圖1(a)中的任務在第104個小時的CPU使用率突然增大到第103個小時的5倍.因此僅僅通過前段時間的最大CPU使用率變化情況,并不能準確預測出這種在某個時間點具有較大突變性的任務的資源使用率.圖1(b)中編號為1的任務的最大CPU使用率也具有較為明顯的突變性,在11個時間點都發(fā)生了較大的突變.因此,在預測任務未來的資源使用率時,不僅僅需要考慮到附近的最大CPU使用率,還需要考慮到任務的歷史資源使用的波動情況.
同時,從圖1(a)和圖1(b)可以看出,編號為0的任務的最大CPU使用率波動情況和編號為1的任務的最大CPU使用率波動情況有很大不同.編號為1的任務最大CPU使用率在連續(xù)的114個小時內(nèi)的突變較為頻繁,變化的幅度時大時小.而編號為0的任務的最大CPU使用率雖然只突變了1次,CPU使用率增加的幅度卻很大.這2個任務的CPU資源使用特征差別比較大,如果采用同一種預測模型,會影響最后的預測效果.
圖1 Google云平臺中隨機抽取的2個任務的資源使用率變化Fig.1 Resource usage changes of two randomly selected tasks in Google cloud platform
圖2描述了阿里云平臺平均CPU使用率大于等于30%和平均使用率小于30%的在線服務的最大CPU使用率的累積分布函數(shù)(Cumulative Distribution Function,CDF)圖.從該圖可以得出,當平均CPU使用率超過30%時,有50%的在線服務的最大CPU使用率超過50%.當在線服務的平均CPU使用率低于30%時,有99%的在線服務的最大CPU使用率不超過40%.因此,若云平臺任務的平均CPU使用率較低,則其在整個生命周期內(nèi)的最大CPU使用率很大可能也比較低.
圖2 阿里云平臺中在線服務的最大CPU使用率和平均CPU使用率之間的關(guān)系Fig.2 Relationship of the maximum and average CPU usage of online services in Ali cloud
圖3描述了Google云平臺隨機抽取的生產(chǎn)優(yōu)先級和其他優(yōu)先級的任務在連續(xù)24小時內(nèi)的資源使用狀況(將優(yōu)先級為9-11的任務定義為生產(chǎn)優(yōu)先級任務).分析該圖發(fā)現(xiàn)生產(chǎn)優(yōu)先級任務的CPU使用率在0.2~0.3之間波動,而其他優(yōu)先級任務的CPU使用率基本低于0.1.由此可知具有不同優(yōu)先級的任務可能會具有完全不同的資源使用率.
用戶申請的CPU資源量都是基于對任務使用的最大資源量的估計,然而任務實際使用的資源量遠遠低于用戶申請的資源量,這也是云平臺任務資源使用率低的原因之一.因此本文預測的是云平臺任務未來一個小時的最大CPU/內(nèi)存使用率(如果預測的時間段過短,由于任務的資源使用在較短時間內(nèi)可能發(fā)生較大變化,預測的結(jié)果不能有效地幫助云平臺調(diào)度器分配資源,而預測時間段過長,依舊會導致云平臺資源的浪費,因此本文預測的是任務未來1個小時的資源使用率).通過3.1節(jié)對云平臺任務資源使用特征的分析,本文提出任務資源使用預測方法REPO-TASK(REsource Prediction method fOr TASKs,REPO-TASK),如圖4所示.
圖3 Google云平臺生產(chǎn)優(yōu)先級和其他優(yōu)先級任務在連續(xù)24小時內(nèi)的CPU使用狀況Fig.3 CPU usage of tasks with production priority and other priority on Google cloud platform during 24 hours
基于云平臺多個任務的歷史資源使用信息,通過分析云平臺任務的資源使用情況提取初步任務資源使用特征,然后使用稀疏自編碼模型進一步提取特征,接著使用K-medoids聚類方法對任務進行聚類,并對每一個任務類別使用改進的隨機森林回歸模型進行訓練,最后,基于給定的任務在最近一段時間內(nèi)的資源使用率歷史信息,就可以利用訓練好的模型預測出該任務在未來一段時間內(nèi)的最大資源使用率.
圖4 任務最大資源使用率預測方法REPO-TASKFig.4 Prediction method REPO-TASK of tasks′ maximum resource usage
由于云平臺跟蹤數(shù)據(jù)主要是定期通過RPC遠程過程調(diào)用收集,當監(jiān)控系統(tǒng)或者主機超載時,一些跟蹤數(shù)據(jù)可能會丟失,本文對這些缺失的字段采取向前填充的方法.
本文在3.1節(jié)對云平臺任務資源使用特征的分析表明任務的最大資源使用率不僅和靠近當前時間的任務資源使用率有關(guān),還和其前段時間的資源使用波動情況、平均資源使用率以及任務的優(yōu)先級密切相關(guān).因此本文提取了任務的平均CPU使用率、前n個小時的加權(quán)最大CPU使用率(公式(1))、最大CPU使用率公平性指數(shù)[20](公式(2))以及任務的優(yōu)先級等特征.
(1)
其中n表示選取的前n個小時的歷史資源使用率,x1、x2、…、xi分別表示按時間先后次序排列的最大CPU/內(nèi)存使用率.
(2)
其中n和xi所代表的含義和公式(1)相同.
表1即為從云平臺任務資源使用數(shù)據(jù)提取的全部特征.為了消除這些特征值的差別,使不同特征具有可比性,本文使用最大最小標準化對不同的特征進行處理,見公式(3),其中MIN表示某個特征在所有樣本中的最小值,MAX表示某個特征在所有樣本中的最大值,x表示某個樣本的特征值,x′表示處理后的樣本特征值.
(3)
本文將在方法評估部分通過實驗來分析所提取的(3n+3)個特征對于預測任務未來CPU/內(nèi)存使用率的重要性.
表1 云平臺任務資源提取的特征
Table 1 Features extracted from task resource
usage in cloud platform
特征編號特征內(nèi)容1連續(xù)60分鐘內(nèi)平均處理器/內(nèi)存使用率2連續(xù)60分鐘內(nèi)最大處理器使用率3連續(xù)60分鐘內(nèi)最大內(nèi)存使用率4任務的優(yōu)先級5前n個小時加權(quán)最大處理器/內(nèi)存使用率6前n個小時最大處理器/內(nèi)存使用率公平性指數(shù)
得到任務的3*(n+1)個特征后,本文采用稀疏自編碼模型進一步提取特征.稀疏自編碼模型包含輸入層、隱含層和輸出層.輸入層到隱含層的映射關(guān)系可以看作是一個編碼過程,通過映射函數(shù)把輸出向量映射到隱含層.從隱含層到輸出層的過程相當于一個解碼過程,把隱含層通過映射函數(shù)“重構(gòu)”輸入層.對于每一個輸入樣本,經(jīng)過自動編碼器之后會轉(zhuǎn)化為一個對應的輸出向量.當自動編碼器訓練完成,輸入與輸出基本相同,則對應的隱含層的輸出可以看作是輸入的一種抽象表達,可以用于表示提取輸入數(shù)據(jù)的特征.
現(xiàn)已提出的用于預測云平臺任務的資源使用率預測模型有BP模型和LSTM模型.BP模型具有高度自學習和自適應的能力,數(shù)學理論已證明其具有實現(xiàn)任何復雜非線性映射的功能,然而BP神經(jīng)網(wǎng)絡算法的收斂速度慢,容易陷入局部極值.LSTM模型是RNN模型的一個優(yōu)秀變種,非常適用于處理與時間序列高度相關(guān)的問題,但是訓練時間過長,會導致不能及時的預測出任務的資源使用率,從而影響云平臺調(diào)度器的性能.本文針對上述問題提出了改進的隨機森林回歸模型,改進的隨機森林回歸模型擁有隨機森林模型[21]不容易出現(xiàn)過擬合、訓練時間較短、預測效果好等優(yōu)點,同時更加符合云平臺任務的資源使用特征,具有較好的預測性能.
隨機森林回歸模型使用CART回歸決策樹作為弱分類器,本文針對云平臺任務資源使用率的特征,同時保證SLA協(xié)議,對CART決策回歸樹算法改進為算法1.
算法1.CART回歸決策樹改進算法.
輸入:云平臺任務數(shù)據(jù)集D.
輸出:改進的CART回歸決策樹T(x).
①遍歷數(shù)據(jù)集D上的所有特征j,遍歷每一個特征下所有可能的取值或者切分點s,使用切分點s把當前的數(shù)據(jù)集分為R1和R2兩部分,C1和C2分別為R1和R2內(nèi)所有樣本目標變量的算術(shù)平均值,yi為樣本xi對應的目標值.在云平臺中,服務提供商需要保證SLA協(xié)議,選擇最佳特征值對(j,s)分割數(shù)據(jù)集時,不僅要最小化平方誤差,還要使任務的資源使用預測值不低于實際值,因此我們對最佳特征值對(j,s)的選擇方法進行了改進,具體如公式(4)所示.
(4)
其中:
(5)
(6)
(7)
③遞歸對上述2個區(qū)域重復步驟①、②,直至每一個區(qū)域都不能再次劃分為止.
④最后可以得到M個區(qū)域R1,R2,…,RM,每個區(qū)域的輸出值分別為:c1,c2,…,cM,改進的CART回歸決策樹模型表示為公式(8).
(8)
使用Google云平臺跟蹤數(shù)據(jù)集進行實驗,評估本文提出的云平臺任務最大資源使用率預測方法REPO-TASK的性能,同時驗證本文提出的改進的隨機森林回歸模型的有效性,最后通過實驗評估本文提取的云平臺任務CPU使用特征的重要性.
4.1.1 實驗環(huán)境
實驗采用4核CPU(CPU的型號為I5-4590),內(nèi)存容量為8G(DDR3)的win7操作系統(tǒng).實驗數(shù)據(jù)集使用2012年發(fā)布的Google云平臺跟蹤數(shù)據(jù)集,本文只使用該數(shù)據(jù)集中的Google云平臺任務資源使用數(shù)據(jù)表和任務事件表.
4.1.2 Google云平臺任務數(shù)據(jù)集
鑒于監(jiān)控Google云平臺資源使用的系統(tǒng)初期不是很穩(wěn)定,本文選擇從第18天開始的監(jiān)視數(shù)據(jù)[14].Reiss C等人[16]表明預測云平臺任務的資源使用率時,調(diào)度程序可以安全地忽略運行時間短的作業(yè),因此本文選擇運行時間不少于18個小時的任務[14]進行實驗.最后得到了60963個任務的資源使用率數(shù)據(jù).
準確預測云平臺任務的資源使用情況對于提高云平臺資源使用率具有重要的作用.本節(jié)分別使用BP模型、LSTM模型[22]、隨機森林模型、改進的隨機森林模型和REPO-TASK方法預測Google云平臺任務的最大CPU使用率.實驗具體流程為:
①測試上述模型分別使用任務前多少個小時的資源使用率數(shù)據(jù)預測下一個小時的資源使用率時效果最佳.
②測試BP神經(jīng)網(wǎng)絡模型和LSTM模型的最佳學習率.
③使用步驟①得到的最佳參數(shù)在改進的隨機森林模型上進行實驗.
④使用REPO-TASK方法進行實驗.
⑤比較所有模型的最終結(jié)果,得到最佳模型.
⑥使用最佳模型測試不同的特征組合對任務最大CPU使用率預測性能的影響.
任務資源使用率預測的性能使用MAE(公式(9))和云平臺任務預測性能函數(shù)PEFOT(Performance Evaluation Function fOr Tasks,PEFOT)(公式(10))進行評估.其中,yi表示樣本i的目標真實值,Yi表示樣本i的目標預測值.m表示樣本總數(shù).
(9)
(10)
(11)
圖5(a)和圖5(b)分別描述了BP模型和LSTM模型使用任務前n個小時的資源使用率預測未來一個小時的最大CPU使用率時PEFOT和MAE值的變化情況(n取值情況同上).從這兩個圖可以看出,當n取6時,BP模型和LSTM模型的PEFOT值和MAE值均最小,分別為5.655,0.0066和4.8748,0.0052.
圖5 模型BP和LSTM預測時不同歷史時間段長度對預測結(jié)果的影響Fig.5 Effect of different historical duration on prediction results when predicting using BP and LSTM
圖6(a)和圖6(b)分別描述了隨機森林回歸模型(RF)使用任務前n個小時的資源使用率預測未來一個小時的最大CPU使用率時PEFOT和MAE值的變化情況,橫坐標代表小時數(shù).從這兩個圖可以看出,當n取6時,隨機森林回歸模型得到最小的PEFOT值和MAE值,分別為2.942和0.00078.
使用圖6得到的隨機森林模型的最佳歷史時間段長度,然后在改進的隨機森林回歸模型上進行實驗,得到PEFOT和MAE值分別為1.834和0.000589.
圖6 模型RF預測時不同歷史時間段長度對預測結(jié)果的影響Fig.6 Effect of different historical duration on prediction results when predicting using RF
最后使用本文提出的REPO-TASK方法進行實驗,結(jié)果如圖7、圖8和表2所示.從圖7可以看出將所有任務聚成4類時,實驗結(jié)果最好,PEFOT和MAE值分別為1.0394和0.000492.將本文提出的方法和其它方法進行對比,實驗結(jié)果如表2所示.從該表可以看出,REPO-TASK方法的預測效果最好.
圖7 REPO-TASK方法中聚類數(shù)量對預測性能的影響Fig.7 Effect of the number of classification on prediction performance when using REPO-TASK method
圖8(a)和圖8(b)分別描述了REPO-TASK方法使用不同的特征組合進行實驗時對應的PEFOT值和MAE值.圖中橫坐標代表三種不同的特征組合,特征組合1表示僅僅用任務的前6個小時的平均CPU/內(nèi)存使用率、最大CPU使用率和最大內(nèi)存使用率作為特征;特征組合2表示在特征組合1的基礎(chǔ)上添加了任務最大CPU/內(nèi)存的加權(quán)平均值和公平性指數(shù);特征組合3表示在特征組合2的基礎(chǔ)上添加了任務的優(yōu)先級特征.分析圖8(a)和圖8(b)可以得出,使用特征組合3預測任務未來一個小時最大CPU使用率效果最好.
表2 不同預測方法的PEFOT和MAE值
Table 2 Values of PEFOT and MAE when using
different prediction methods
模 型PEFOTMAEBP[14]5.6550.0066LSTM4.87480.0052隨機森林回歸模型[12]2.9420.00078改進的隨機森林回歸模型1.83440.000589REPO-TASK方法1.03940.000492
圖8 REPO-TASK方法中不同特征組合對預測性能的影響Fig.8 Effect of different feature combinations on prediction performance when using REPO-TASK
在云計算蓬勃發(fā)展的今天,云平臺任務的資源使用率預測逐漸成為提高云平臺資源使用率的重要手段.然而云環(huán)境的不確定性、動態(tài)性和突變型使云平臺的資源使用預測較為困難.
本文針對上述問題提出了云平臺任務未來的資源預測方法REPO-TASK,綜合了K-medoids無監(jiān)督聚類算法、稀疏自編碼模型和改進的隨機森林回歸模型.該方法的PEFOT值相對于其他已提出的模型平均降低了3.2591.根據(jù)云平臺任務的資源使用特征改進了隨機森林回歸模型,其PEFOT值相對于隨機森林回歸模型平均降低了1.1076.
未來準備結(jié)合本文的工作,研究將工作負載分配給計算機和CPU的算法,為不同配置的計算機和CPU分配和重新調(diào)整工作負載,以實現(xiàn)更好的資源利用和可接受的資源爭用.