李明東,房愛東,盧 彪,姜 飛
現代處理器一般只內置了少數的性能計數器,但是實際使用時往往需要捕捉大量的微體系結構硬件事件.本文借助性能計數器及性能監測工具,對大量硬件事件的表現進行語義分析,尋找事件模式,從而有效地度量和理解云平臺上的性能大數據.此外,結合機器學習理論,研究基于機器學習的方法對時間進行重要性的量化,用迭代排序的方法不斷約簡事件空間[1].通過對比硬件事件之間的相關性,探測硬件數據分析系統內部各組件潛在的相互聯系.
硬件數據分析系統是性能計數單元收集的性能信息的數據挖掘工具.圖1給出了硬件數據分析系統的系統框架,主要由三部分組成:數據集成模塊、重要排序模塊和階段關閉排序模塊,具體硬件數據分析框架結構關系圖如圖1所示.

圖1 硬件數據分析框架
在大數據計算框架中,數據負載運行時,硬件數據分析系統使用perf_event[2]工具批量監控性能計算單元中的性能事件,生成原始時間數據.數據集成模塊對這些源數據進行數據集成.集成后的數據發送至重要性排序模塊,然后利用該模塊基于機器學習特征對影響程序運行的因素進行量化和排序.
實驗環境為3臺Linux服務器,其中一臺命名為master,其余服務器為slave服務器.
定義硬件事件集合M0為用戶操作人員,并且開始進行M次實驗,實驗開始到實驗結束,設置T為在每個實驗中的時間參數,用戶根據自己的需求選擇部分實驗Si進行監測.定義Si中包含的硬件發生事件數量為EI=card(Si).則用戶選擇監測空間為S=(S1∪S2∪S3∪S4…).

圖2 進程通訊序列變化圖
每個實驗中,加載程序的運行時長為隨機值,上下波動在一定的值上.圖2顯示了K均值聚類算法以及Hadoop中的Wordcount兩個系統程序在相同條件中運行時間的變化.由圖2可得K均值聚類算法平均運行時間為265.42 s,而Wordcount的平均運行時間為195.92 s.每次實驗中進程間通訊序列變化值不相同但趨勢一致,即每個用戶選擇監視事件存在相同部分.這些部分會導致數據錯位.因此,n次測試中獲取數據需要重新整合.

圖3 重疊事件狀態圖
圖3為3個獨立實驗生成的數據,水平為事件集合,豎直為時間數據的長度,反映了重疊事件的典型情況.從上述檢測結果中得知,標號為1的部分代表硬件事件S1產生的時間序列,標號為2的部分表示硬件事件S2生成的時間序列.
硬件數據分析系統選擇一個進程間通訊陰影事件[3]的最大子集進行排序.將此過程與特征工程問題進行比較,即每個特征工程問題硬件事件被視為一個特性,將進程間的通訊作為目標,組建符合進程間通訊的模型,同時對每個實驗特性的重要性進行評測.選取梯度增強回歸樹模型作為事件選擇的基本模型,該模型算法實現的最終結果是生成多棵樹,以避免單顆決策樹帶來的問題.
重要排序模型是為了分析事件的重要程度,量化硬件程序影響最大的因素,同時構建以進程間通訊為目標的機器學習模型.將程序運行的序列值輸入可以用公式(1)表示.

其中,IPC是負載程序運行期間以1 s為采樣頻率采集到的每時鐘周期機器指令數,si表示的是第i個硬件事件,n是硬件事件的數目.
梯度提升回歸樹算法是任何可微損失函數[4]的典型優化模型,提升樹模型可以表示為基于決策樹的相加模型,決策樹是樹的線性.梯度提升回歸樹算法支持各種不同的回歸損失函數.默認回歸損失函數為最小二乘損失函數,其計算公式如公式(2)所示.

其中x為真值,f(y)為模型預測值.
對于積分模型中的單個回歸樹T,使用來衡量每個參數變量s對目標變量的影
i響程度的測量.將()T理解為選取si被選中作為樹的節點進行分裂的次數,再根據對分裂結果的影響程度的平方來加權,具體計算如公式(3)所示.

其中nt為si被選中作為樹的節點進行分裂的次數,p2(k)是第k次分裂后對樹模型的性能提升的平方值.通常情況下,設p()k為相對IPC誤差值.那么對全部回歸樹本身來說,si的重要性可以表示為公式(4)所示.

其中R為組合模型中的樹的數量,( )Tm為第m棵中si對進程間通訊的影響程度的大小.
在模型訓練性能階段,IBTM構建了事件和Spark參數的混合量,如公式(5)所示.其中xi為事件集,pi為Spark參數.將混合量放入機器學習模型中進行訓練,執行時間作為模型的目標變量[5].混合參數EX()p的計算公式如下:

在模型訓練期間,Spark參數pi與xi在相關事件和參數對中具有相關性,此參數可作為優化后的參數.
多數時間事件的測量是基于特征工程[6].在特征工程過程中進行數據轉換后,更高效地反映時間事件特征,減小空間測量復雜度.因此在硬件數據分析系統中,經過重要排序組件篩選之后,得到最優先事件子集.使用DTW法計算兩個事件關聯性,得到DTW距離進行排序結果如圖4所示.

圖4 事件子集排序圖
對每一個重要的事件構建樹性回歸模型[7].取兩個事件的時間序列值,并且將模型中其余事件的值設置為其相應的平均值.重復執行此過程,同時記錄模型剩余r.r的計算公式如公式(6)所示.

其中,模型估計值為pi,混合參數值為EX(p),n為樣本數.

圖5 硬件事件關聯圖
圖5給出了4個基準下硬件事件間關聯強度的結果[8].其中,Y軸表示相關性,X軸是兩個事件名.選擇的3大硬件事件重要性排名如上所述,產生3×9=27套硬件事件對.由于排序結束時硬件事件對的相關度為0,所以統一選擇前10對,這10對包含強度不為0的所有硬件事件.
歐式距離通過時間序列提取新的特征,使得不同長度的兩條時間序列擁有等長的特征向量.通過距離度量的方式計算距離在數值上的相關性,在算法實現上,利用一系列事件構造線性回歸模型,計算對線性模型的差值結果作為事件間的相關性強度.采用線性模型在訓練時,選取諸多事件中的值相對均衡的序列,并設定對應事件的值作為其對應的均值,模型殘差m由公式(7)計算得出.

其中,ki表示模型預測值,k表示為觀測值,n為樣本總數.
對上述模型計算的結果,還需要后期的歸一化處理,之后可以從歸一化的結果中,更加直觀的得出時間相關性中相關程度的大小關系.
本文實現了基于機器學習的硬件數據分析系統,充分利用數據集成模塊、重要排序模塊、階段關閉排序模塊構建基于機器學習的硬件數據分析系統框架,并對硬件事件進行量化和排序.其次,利用硬件數據分析系統對進程進行排序,對排序的結果進行模塊化集成處理,從而得到硬件事件的重要程度,幫助用戶理解復雜情況下的硬件事件結果.本系統迭代地使用回歸樹算法構建的性能模型,對分析云環境下負載程序的性能事件重要性和事件間的相關性具有指導意義.接下來的工作可從數據集的角度分析性能數據,挖掘出更多信息.