李明東,房愛東,盧 彪,姜 飛
現(xiàn)代處理器一般只內(nèi)置了少數(shù)的性能計數(shù)器,但是實際使用時往往需要捕捉大量的微體系結(jié)構(gòu)硬件事件.本文借助性能計數(shù)器及性能監(jiān)測工具,對大量硬件事件的表現(xiàn)進行語義分析,尋找事件模式,從而有效地度量和理解云平臺上的性能大數(shù)據(jù).此外,結(jié)合機器學(xué)習(xí)理論,研究基于機器學(xué)習(xí)的方法對時間進行重要性的量化,用迭代排序的方法不斷約簡事件空間[1].通過對比硬件事件之間的相關(guān)性,探測硬件數(shù)據(jù)分析系統(tǒng)內(nèi)部各組件潛在的相互聯(lián)系.
硬件數(shù)據(jù)分析系統(tǒng)是性能計數(shù)單元收集的性能信息的數(shù)據(jù)挖掘工具.圖1給出了硬件數(shù)據(jù)分析系統(tǒng)的系統(tǒng)框架,主要由三部分組成:數(shù)據(jù)集成模塊、重要排序模塊和階段關(guān)閉排序模塊,具體硬件數(shù)據(jù)分析框架結(jié)構(gòu)關(guān)系圖如圖1所示.
圖1 硬件數(shù)據(jù)分析框架
在大數(shù)據(jù)計算框架中,數(shù)據(jù)負載運行時,硬件數(shù)據(jù)分析系統(tǒng)使用perf_event[2]工具批量監(jiān)控性能計算單元中的性能事件,生成原始時間數(shù)據(jù).數(shù)據(jù)集成模塊對這些源數(shù)據(jù)進行數(shù)據(jù)集成.集成后的數(shù)據(jù)發(fā)送至重要性排序模塊,然后利用該模塊基于機器學(xué)習(xí)特征對影響程序運行的因素進行量化和排序.
實驗環(huán)境為3臺Linux服務(wù)器,其中一臺命名為master,其余服務(wù)器為slave服務(wù)器.
定義硬件事件集合M0為用戶操作人員,并且開始進行M次實驗,實驗開始到實驗結(jié)束,設(shè)置T為在每個實驗中的時間參數(shù),用戶根據(jù)自己的需求選擇部分實驗Si進行監(jiān)測.定義Si中包含的硬件發(fā)生事件數(shù)量為EI=card(Si).則用戶選擇監(jiān)測空間為S=(S1∪S2∪S3∪S4…).
圖2 進程通訊序列變化圖
每個實驗中,加載程序的運行時長為隨機值,上下波動在一定的值上.圖2顯示了K均值聚類算法以及Hadoop中的Wordcount兩個系統(tǒng)程序在相同條件中運行時間的變化.由圖2可得K均值聚類算法平均運行時間為265.42 s,而Wordcount的平均運行時間為195.92 s.每次實驗中進程間通訊序列變化值不相同但趨勢一致,即每個用戶選擇監(jiān)視事件存在相同部分.這些部分會導(dǎo)致數(shù)據(jù)錯位.因此,n次測試中獲取數(shù)據(jù)需要重新整合.
圖3 重疊事件狀態(tài)圖
圖3為3個獨立實驗生成的數(shù)據(jù),水平為事件集合,豎直為時間數(shù)據(jù)的長度,反映了重疊事件的典型情況.從上述檢測結(jié)果中得知,標號為1的部分代表硬件事件S1產(chǎn)生的時間序列,標號為2的部分表示硬件事件S2生成的時間序列.
硬件數(shù)據(jù)分析系統(tǒng)選擇一個進程間通訊陰影事件[3]的最大子集進行排序.將此過程與特征工程問題進行比較,即每個特征工程問題硬件事件被視為一個特性,將進程間的通訊作為目標,組建符合進程間通訊的模型,同時對每個實驗特性的重要性進行評測.選取梯度增強回歸樹模型作為事件選擇的基本模型,該模型算法實現(xiàn)的最終結(jié)果是生成多棵樹,以避免單顆決策樹帶來的問題.
重要排序模型是為了分析事件的重要程度,量化硬件程序影響最大的因素,同時構(gòu)建以進程間通訊為目標的機器學(xué)習(xí)模型.將程序運行的序列值輸入可以用公式(1)表示.
其中,IPC是負載程序運行期間以1 s為采樣頻率采集到的每時鐘周期機器指令數(shù),si表示的是第i個硬件事件,n是硬件事件的數(shù)目.
梯度提升回歸樹算法是任何可微損失函數(shù)[4]的典型優(yōu)化模型,提升樹模型可以表示為基于決策樹的相加模型,決策樹是樹的線性.梯度提升回歸樹算法支持各種不同的回歸損失函數(shù).默認回歸損失函數(shù)為最小二乘損失函數(shù),其計算公式如公式(2)所示.
其中x為真值,f(y)為模型預(yù)測值.
對于積分模型中的單個回歸樹T,使用來衡量每個參數(shù)變量s對目標變量的影
i響程度的測量.將()T理解為選取si被選中作為樹的節(jié)點進行分裂的次數(shù),再根據(jù)對分裂結(jié)果的影響程度的平方來加權(quán),具體計算如公式(3)所示.
其中nt為si被選中作為樹的節(jié)點進行分裂的次數(shù),p2(k)是第k次分裂后對樹模型的性能提升的平方值.通常情況下,設(shè)p()k為相對IPC誤差值.那么對全部回歸樹本身來說,si的重要性可以表示為公式(4)所示.
其中R為組合模型中的樹的數(shù)量,( )Tm為第m棵中si對進程間通訊的影響程度的大小.
在模型訓(xùn)練性能階段,IBTM構(gòu)建了事件和Spark參數(shù)的混合量,如公式(5)所示.其中xi為事件集,pi為Spark參數(shù).將混合量放入機器學(xué)習(xí)模型中進行訓(xùn)練,執(zhí)行時間作為模型的目標變量[5].混合參數(shù)EX()p的計算公式如下:
在模型訓(xùn)練期間,Spark參數(shù)pi與xi在相關(guān)事件和參數(shù)對中具有相關(guān)性,此參數(shù)可作為優(yōu)化后的參數(shù).
多數(shù)時間事件的測量是基于特征工程[6].在特征工程過程中進行數(shù)據(jù)轉(zhuǎn)換后,更高效地反映時間事件特征,減小空間測量復(fù)雜度.因此在硬件數(shù)據(jù)分析系統(tǒng)中,經(jīng)過重要排序組件篩選之后,得到最優(yōu)先事件子集.使用DTW法計算兩個事件關(guān)聯(lián)性,得到DTW距離進行排序結(jié)果如圖4所示.
圖4 事件子集排序圖
對每一個重要的事件構(gòu)建樹性回歸模型[7].取兩個事件的時間序列值,并且將模型中其余事件的值設(shè)置為其相應(yīng)的平均值.重復(fù)執(zhí)行此過程,同時記錄模型剩余r.r的計算公式如公式(6)所示.
其中,模型估計值為pi,混合參數(shù)值為EX(p),n為樣本數(shù).
圖5 硬件事件關(guān)聯(lián)圖
圖5給出了4個基準下硬件事件間關(guān)聯(lián)強度的結(jié)果[8].其中,Y軸表示相關(guān)性,X軸是兩個事件名.選擇的3大硬件事件重要性排名如上所述,產(chǎn)生3×9=27套硬件事件對.由于排序結(jié)束時硬件事件對的相關(guān)度為0,所以統(tǒng)一選擇前10對,這10對包含強度不為0的所有硬件事件.
歐式距離通過時間序列提取新的特征,使得不同長度的兩條時間序列擁有等長的特征向量.通過距離度量的方式計算距離在數(shù)值上的相關(guān)性,在算法實現(xiàn)上,利用一系列事件構(gòu)造線性回歸模型,計算對線性模型的差值結(jié)果作為事件間的相關(guān)性強度.采用線性模型在訓(xùn)練時,選取諸多事件中的值相對均衡的序列,并設(shè)定對應(yīng)事件的值作為其對應(yīng)的均值,模型殘差m由公式(7)計算得出.
其中,ki表示模型預(yù)測值,k表示為觀測值,n為樣本總數(shù).
對上述模型計算的結(jié)果,還需要后期的歸一化處理,之后可以從歸一化的結(jié)果中,更加直觀的得出時間相關(guān)性中相關(guān)程度的大小關(guān)系.
本文實現(xiàn)了基于機器學(xué)習(xí)的硬件數(shù)據(jù)分析系統(tǒng),充分利用數(shù)據(jù)集成模塊、重要排序模塊、階段關(guān)閉排序模塊構(gòu)建基于機器學(xué)習(xí)的硬件數(shù)據(jù)分析系統(tǒng)框架,并對硬件事件進行量化和排序.其次,利用硬件數(shù)據(jù)分析系統(tǒng)對進程進行排序,對排序的結(jié)果進行模塊化集成處理,從而得到硬件事件的重要程度,幫助用戶理解復(fù)雜情況下的硬件事件結(jié)果.本系統(tǒng)迭代地使用回歸樹算法構(gòu)建的性能模型,對分析云環(huán)境下負載程序的性能事件重要性和事件間的相關(guān)性具有指導(dǎo)意義.接下來的工作可從數(shù)據(jù)集的角度分析性能數(shù)據(jù),挖掘出更多信息.