孫 斌,呂依蓉,王 晶,喻之斌,張偉功
1(首都師范大學(xué) 信息工程學(xué)院, 北京 100048)2(中科院深圳先進(jìn)技術(shù)研究院 云計(jì)算中心, 深圳 518055)
隨著云計(jì)算技術(shù)的發(fā)展,越來越多的應(yīng)用服務(wù)運(yùn)行在云平臺上.因此,數(shù)據(jù)中心的規(guī)模和數(shù)量正以前所未有的速度增長.例如,倉庫級計(jì)算機(jī)(Warehouse Scale Computer)越來越普遍.然而,大規(guī)模的云計(jì)算基礎(chǔ)設(shè)施對運(yùn)維造成了嚴(yán)峻挑戰(zhàn),需要新的監(jiān)控與運(yùn)維技術(shù)[1].當(dāng)前數(shù)據(jù)中心所呈現(xiàn)出應(yīng)用多樣化和硬件平臺異構(gòu)[2]兩個(gè)特點(diǎn)加大了性能監(jiān)控和優(yōu)化的難度,使得云環(huán)境下的性能監(jiān)控變得尤為重要.和系統(tǒng)層的性能監(jiān)控相比[3,4],如利用CPU利用率、內(nèi)存利用率、以及磁盤利用率等,PMU(Performance Monitoring Unit)下硬件性能事件的計(jì)數(shù)結(jié)果能夠更細(xì)粒度、更直接地反映機(jī)器的實(shí)際運(yùn)行狀況[2,5].
現(xiàn)代處理器中一般有2~8個(gè)性能計(jì)數(shù)器(寄存器),用來記錄處理器在運(yùn)行時(shí)發(fā)生的硬件事件,如內(nèi)存訪問次數(shù)、高速緩存的缺失次數(shù)等[6,7].為了節(jié)約芯片面積乃至成本,處理器中不能設(shè)計(jì)更多的性能計(jì)數(shù)器.為了深入理解程序的運(yùn)行行為和優(yōu)化性能,需要監(jiān)測的事件數(shù)目卻遠(yuǎn)遠(yuǎn)大于性能計(jì)數(shù)器的數(shù)目,而且仍在呈增長趨勢[6,7].
由于數(shù)據(jù)中心中微量的性能提升都可以轉(zhuǎn)化成巨大的成本節(jié)約,許多研究人員在研究如何利用PMU的監(jiān)測結(jié)果來優(yōu)化性能[2,5,8,9].從需要監(jiān)測的性能事件到性能計(jì)數(shù)器之間的映射有兩種方式:
1) 監(jiān)測的性能事件數(shù)目小于或等于計(jì)數(shù)器個(gè)數(shù);
2) 監(jiān)測的性能事件數(shù)目多于計(jì)數(shù)器個(gè)數(shù).
第一種方式可獲得準(zhǔn)確的監(jiān)測結(jié)果[10],但受限于性能技術(shù)器的個(gè)數(shù)以及實(shí)際需求,需要進(jìn)行多次重復(fù)實(shí)驗(yàn)才能得到所需全部事件的結(jié)果,因此,這種方式效率很低.此外,如圖1所示,在云環(huán)境下同一程序多次運(yùn)行的執(zhí)行時(shí)間會(huì)有較大波動(dòng),得到不等長的時(shí)間序列結(jié)果,大大提高了后續(xù)分析難度.第二
圖1 相同程序多次采集結(jié)果時(shí)間序列比較Fig.1 Compare the multi-result of sampling
種方式可以極大地提升監(jiān)測效率,在一般需求下[2,5]可避免重復(fù)監(jiān)測工作.然而,此方法會(huì)降低監(jiān)測數(shù)據(jù)的測數(shù)據(jù)質(zhì)量,如數(shù)據(jù)缺失,表現(xiàn)為未能有效監(jiān)測到已發(fā)生事件而產(chǎn)生的零值,再如數(shù)據(jù)異常,表現(xiàn)為時(shí)序中存在突然數(shù)據(jù)增大的時(shí)刻,與同組中其他數(shù)據(jù)的偏差超過多倍標(biāo)準(zhǔn)差.而且監(jiān)測事件數(shù)目越多數(shù)據(jù)質(zhì)量越低[10,11-13].為了既能提高監(jiān)測效率,又能提高監(jiān)測數(shù)據(jù)的質(zhì)量,對第二種方式中所存在的問題進(jìn)行改進(jìn)刻不容緩.考慮到服務(wù)器中處理器架構(gòu)的不同,軟件計(jì)算框架的差異以及應(yīng)用本身的不同,本文提出基于知識庫的數(shù)據(jù)預(yù)處理方法,來應(yīng)對不同情況下的缺失值和異常值.
圖2 Perf_events 子系統(tǒng)架構(gòu)圖Fig.2 Perf_events architecture
對于缺失值,根據(jù)知識庫內(nèi)相似監(jiān)測任務(wù)下的數(shù)據(jù),即對相同的運(yùn)行環(huán)境,相同計(jì)算框架下應(yīng)用的監(jiān)測任務(wù),監(jiān)測事件可以不同但要包含缺失值所對應(yīng)的事件,并結(jié)合當(dāng)前監(jiān)測數(shù)據(jù)中的未缺失項(xiàng),構(gòu)建回歸模型,補(bǔ)全缺失數(shù)據(jù).
對于異常值,根據(jù)知識庫內(nèi)的相似監(jiān)測任務(wù)的監(jiān)測數(shù)據(jù),配置局部濾波器參數(shù),使得濾波器可以自適應(yīng)的檢測不同事件結(jié)果中的異常值,并對其處理.
本文所提出的數(shù)據(jù)預(yù)處理方法,可以在提升2-5倍監(jiān)測效率的同時(shí)極大地提升數(shù)據(jù)質(zhì)量.
現(xiàn)代處理器中一般都配有性能監(jiān)測單元(PMU),它由兩部分組成:硬件性能事件和性能計(jì)數(shù)器.性能計(jì)數(shù)器用來測量微體系結(jié)構(gòu)中如程序執(zhí)行所消耗的時(shí)鐘周期數(shù),指令數(shù)和高速緩存缺失數(shù)等硬件性能事件[6,7],其結(jié)果可直接反應(yīng)程序執(zhí)行過程中硬件的執(zhí)行情況,從而可分析程序?qū)τ布Y源的使用情況.PMU的監(jiān)測結(jié)果具有廣泛的應(yīng)用場景,如科學(xué)應(yīng)用程序的性能建模[14,15]、生產(chǎn)環(huán)境中程序行為的異常檢測以及診斷[9,16,17]、安全漏洞監(jiān)測、編譯過程中的配置優(yōu)化、以及功耗優(yōu)化模型.此外,它對未來的硬件設(shè)計(jì)工作也有極大的幫助,比如在監(jiān)測Google數(shù)據(jù)中心應(yīng)用過程中發(fā)現(xiàn)指令地址轉(zhuǎn)換檢測緩沖缺失(iTLB MISS)比較大[2],則未來可以考慮為云環(huán)境下的硬件設(shè)計(jì)增加iTLB的大小.
2.1.1 PMU的硬件結(jié)構(gòu)
現(xiàn)代處理器中一般有2~8個(gè)性能計(jì)數(shù)器(寄存器).如Intel Xeon E5 v3系列處理器是基于Haswell-E的微體系結(jié)構(gòu)生產(chǎn)的,它配備2個(gè)專用的性能計(jì)數(shù)器和4個(gè)通用的性能計(jì)數(shù)器,可監(jiān)測事件超過200個(gè)[6].其中專用的性能計(jì)數(shù)器只能分別監(jiān)測未被停頓的時(shí)鐘周期數(shù)(Unhalted Cycles)和成功被執(zhí)行的指令數(shù)(Instruction Retired)這兩個(gè)事件,通用計(jì)數(shù)器可配置監(jiān)測其余所有事件.性能計(jì) 數(shù)器本質(zhì)上是一個(gè)特殊寄存器(MSR),用來記錄某事件的發(fā)生次數(shù).不同系列的處理器所擁有的性能計(jì)數(shù)器個(gè)數(shù)是不同的,而且所能支持監(jiān)測的硬件事件種類也不盡相同,但共同點(diǎn)在于所有的處理器結(jié)構(gòu)中性能計(jì)數(shù)器個(gè)數(shù)要遠(yuǎn)小于可監(jiān)測的事件數(shù).
圖3 結(jié)果中缺失值(a)和異常值(b)的示意圖
Fig.3 Pattern of missing values(a) and outliers (b)
圖4 監(jiān)測ICACHE.MISSES缺失部分與參考值的比較
Fig.4 Compare the missing part and reference data of the sampling data of the ICACHE.MISSES
2.1.2 應(yīng)用PMU
在Linux操作系統(tǒng)中,Perf_events1內(nèi)核接口作為一個(gè)通用、高層級的接口來驅(qū)使性能計(jì)數(shù)器完成監(jiān)測任務(wù),而且在Linux 2.6.31之后便被添加到了官方的內(nèi)核之中.監(jiān)測系統(tǒng)架構(gòu)如圖2所示,Perf_event_open( )是一個(gè)系統(tǒng)調(diào)用,sysfs是一個(gè)文件系統(tǒng),用來簡化事件命名以及工具配置,中間層則包括通用的核心計(jì)算邏輯設(shè)計(jì)以及應(yīng)對不同處理器架構(gòu)的通用接口層設(shè)計(jì).
目前,Perf1和Oprofile2是較為流行的性能監(jiān)測工具,都調(diào)用了Perf_events (接口).在應(yīng)用中只需提前傳遞待測事件即可.事件的調(diào)度貫穿整個(gè)監(jiān)測過程,包括綁定計(jì)數(shù)器和通過觸發(fā)機(jī)制輸出記錄結(jié)果,當(dāng)待測事件數(shù)量多于實(shí)際計(jì)數(shù)器數(shù)量時(shí),內(nèi)核通過時(shí)分復(fù)用計(jì)數(shù)器來保證每一個(gè)待測事件都有機(jī)會(huì)被監(jiān)測到.在復(fù)用過程中會(huì)采取輪詢的方式并假設(shè)事件的發(fā)生速率是相同的.事件結(jié)果的計(jì)算方式如公式(1),按照事件被分配到的比例以及計(jì)數(shù)值推測整個(gè)時(shí)間段內(nèi)的計(jì)數(shù)結(jié)果.
(1)
事件調(diào)度能保證最大限度地利用計(jì)數(shù)器,盡量減少復(fù)用帶來的開銷,但不能保證監(jiān)測結(jié)果的準(zhǔn)確性.而且部分事件有特定的計(jì)數(shù)器限制,容易造成事件調(diào)度過程中的事件沖突[6],加劇了監(jiān)測結(jié)果種的不準(zhǔn)確性.
表1 參考記錄和復(fù)用PMU時(shí)記錄的數(shù)據(jù)比較Table 1 comparing reference data and the data sampling with multiplex PMU
如在2.1中所提到的,性能監(jiān)測單元為程序特征描述所帶來的作用無可替代.許多性能優(yōu)化工作以此為根據(jù),在云環(huán)境下的程序特征描述和性能優(yōu)化工作中都取得了明顯的效果[2,5,8,17].然而這些工作在應(yīng)用基于PMU的監(jiān)測工具時(shí),受到性能計(jì)數(shù)器個(gè)數(shù)的限制,為保證監(jiān)測結(jié)果的準(zhǔn)確率都采用了相對保守的監(jiān)測手段,即每一次監(jiān)測事件時(shí)保證所監(jiān)測的事件數(shù)不大于性能計(jì)數(shù)器個(gè)數(shù).這種方式雖然能保證監(jiān)測結(jié)果的準(zhǔn)確性[10],但需要通過重復(fù)運(yùn)行的方式來獲得更多的監(jiān)測結(jié)果,大大降低了監(jiān)測效率.
硬件性能事件結(jié)果與性能之間的語義鴻溝一直是研究的難點(diǎn),尤其要在繁多的事件中有針對地選擇出一部分參與監(jiān)測更是極具挑戰(zhàn)[16],極端情況下需要所有事件的監(jiān)測結(jié)果,這只能通過重復(fù)運(yùn)行的方式遍歷監(jiān)測所有事件.如果實(shí)驗(yàn)環(huán)境中的處理器是上述的Intel Xeon E5 v3系列,需要以4個(gè)性能計(jì)數(shù)器、2個(gè)專用計(jì)數(shù)器來應(yīng)對超過200個(gè)事件,則重復(fù)運(yùn)行次數(shù)超過50次.而且在重復(fù)運(yùn)行監(jiān)測的結(jié)果中還會(huì)遇到相同程序不同次運(yùn)行執(zhí)行時(shí)間不等長的問題.例如,在云環(huán)境下同時(shí)分發(fā)多個(gè)任務(wù),執(zhí)行時(shí)間取決于最后一個(gè)執(zhí)行完的任務(wù).圖1是對相同程序重復(fù)監(jiān)測下多個(gè)不等長的時(shí)間序列的示意圖,而且本文實(shí)驗(yàn)的基準(zhǔn)測試程序HiBench[18]中的同一應(yīng)用程序的執(zhí)行時(shí)間表現(xiàn)出了3.3%-16.4%的波動(dòng).
一些學(xué)者的工作聚焦于提升復(fù)用性能計(jì)數(shù)器復(fù)用(multiplexing)情況下的監(jiān)測準(zhǔn)確率.比如通過量化錯(cuò)誤來改進(jìn)公式1,以獲得較高的準(zhǔn)確率[12].也有學(xué)者通過事件的變化率來改進(jìn)公式1[13]以及通過改進(jìn)調(diào)度方式來提高準(zhǔn)確率[11]等.這些研究確實(shí)緩解了PMU在應(yīng)用中的問題,然而在實(shí)際應(yīng)用中仍有監(jiān)測結(jié)果過調(diào)節(jié)(異常值)以及缺失監(jiān)測結(jié)果的現(xiàn)象存在,圖3(a)和圖3(b)分別是時(shí)間序列中異常值和缺失值得示意圖.實(shí)驗(yàn)結(jié)果表明,雖然異常值與缺失值的數(shù)量在全部數(shù)據(jù)中不超過1%,但它們對時(shí)間序列的特征描述造成了很大影響.例如,對時(shí)間序列正則化和方差計(jì)算帶來巨大的偏差,而且由于硬件事件的計(jì)數(shù)結(jié)果一般沒有嚴(yán)格的值域范圍,難以界定缺失異常的閾值.通過反復(fù)監(jiān)測Wordcount運(yùn)行時(shí)ICACHE.MISSES事件的表現(xiàn),在復(fù)用和不要復(fù)用硬件計(jì)數(shù)器的情況下,監(jiān)測結(jié)果得出了不同的數(shù)據(jù)描述,如表1中Reference(1-4)是在不復(fù)用性能計(jì)數(shù)器時(shí)的數(shù)據(jù)描述,Test則是在復(fù)用性能計(jì)數(shù)器是而得到的數(shù)據(jù)描述,圖4是對ICACHE.MISSES這個(gè)事件在復(fù)用性能計(jì)數(shù)器和不復(fù)用性能計(jì)數(shù)器下的時(shí)間序列(這里只比較了缺失部分的數(shù)據(jù))比較.而且根據(jù)表1可知,借助參考記錄可判別0值數(shù)據(jù)即為缺失記錄.
為了提高PMU的監(jiān)測效率,并保證監(jiān)測數(shù)據(jù)的質(zhì)量,提出一種基于知識庫的預(yù)處理方法,如圖5所示.每一次的監(jiān)測結(jié)果都會(huì)結(jié)合歷史監(jiān)測數(shù)據(jù)來完成異常值和缺失值檢測,并以他們?yōu)閰⒖紒硖鎿Q異常值以及補(bǔ)充缺失值.這里所提到的歷史監(jiān)測數(shù)據(jù)主要指利用相同事件監(jiān)測同一應(yīng)用所產(chǎn)生的監(jiān)測數(shù)據(jù).對于異常值:本文設(shè)計(jì)了一個(gè)自適應(yīng)的局部濾波器,自動(dòng)判斷異常值并對其進(jìn)行處理.對于缺失值:將結(jié)合歷史數(shù)據(jù)以及當(dāng)前數(shù)據(jù)中未缺失部分構(gòu)建回歸模型,并利用該模型補(bǔ)充缺失值.
圖5 預(yù)處理方法示意圖Fig.5 Schematic of preprocessing method
如上文所述,由于硬件事件的監(jiān)測結(jié)果一般沒有確定的值域,使得對異常值和缺失值的判斷極其困難.而且監(jiān)測數(shù)據(jù)表明異常值和缺失的出現(xiàn)并沒有確定的模式,相同事件在不同應(yīng)用下的監(jiān)測結(jié)果也有區(qū)別,這與程序表現(xiàn)密切相關(guān).本文通過比較不等長序列間的相似性,計(jì)算經(jīng)過動(dòng)態(tài)時(shí)間歸準(zhǔn)(DTW)之后的曲線間的距離來判斷事件監(jiān)測結(jié)果的相似性.DTW是一種通過彎曲時(shí)間軸來更好地對時(shí)間序列形態(tài)進(jìn)行匹配的相似性度量方法,被Bernd和Clliford用于度量時(shí)間序列的相似性[19].本文以歷史數(shù)據(jù)的結(jié)果作為參考來判斷異常和缺失現(xiàn)象.對比相同程序在不同輸入數(shù)據(jù)下的監(jiān)測結(jié)果,得到監(jiān)測結(jié)果具有較高的相似性.
如圖6所示,HiBench中的大數(shù)據(jù)應(yīng)用程序在不同的輸入數(shù)據(jù)集下,執(zhí)行時(shí)間和平均水平相比有50%到350%的變化.然而在遍歷所有服務(wù)器所支持的硬件事件之后,相同事件在不同輸入數(shù)據(jù)集下,多次監(jiān)測結(jié)果與參考結(jié)果之間的平均DTW距離不超過0.07,說明事件監(jiān)測結(jié)果的趨勢、幅度沒有受輸入數(shù)據(jù)集的變化而產(chǎn)生巨大變化,應(yīng)用歷史數(shù)據(jù)是可以信賴的.
下面分別介紹知識庫的構(gòu)建方法,局部濾波器設(shè)計(jì)以及回歸模型的建立方法.
圖6 不同應(yīng)用在不同輸入下監(jiān)測事件結(jié)果的相似性變化Fig.6 Similarity of results in different input data size among different applications
據(jù)記錄表的描述,包含事件名,應(yīng)用名,記錄時(shí)長,記錄最大值,最小值以及平均值,同時(shí)記錄其他事件以及記錄所有二級數(shù)據(jù)記錄表的名字.
圖7 兩級表設(shè)計(jì)Fig.7 2 level sheet in the design of knowledge base
知識庫將隨著監(jiān)測任務(wù)的進(jìn)行不斷更新,包括對有完全相同監(jiān)測事件的監(jiān)測結(jié)果進(jìn)行替換,以及對新監(jiān)測事件的監(jiān)測結(jié)果進(jìn)行添加.
對歷史記錄的查詢,以被監(jiān)測程序和問題事件為查詢條件,返回具有相似監(jiān)測任務(wù)的記錄.從一級主表中查找事件的描述信息,再根據(jù)具體需要二次查找特定記錄和當(dāng)前記錄中的歷史數(shù)據(jù),用于下一步的模型訓(xùn)練.
局部濾波器設(shè)計(jì)包括針對兩種情形的設(shè)計(jì):
1) 歷史記錄事件:指相同監(jiān)測應(yīng)用下事件已被記錄.此時(shí)利用一級主表中的數(shù)據(jù)描述信息,以其記錄最大值的2倍,作為本地閾值作為判斷異常值的依據(jù),其數(shù)值源自于實(shí)驗(yàn)過程中的經(jīng)驗(yàn)數(shù)值.
2) 初始記錄事件:從觀察監(jiān)測數(shù)據(jù)的分布可知,數(shù)據(jù)分布曲線類似高斯分布,但不是嚴(yán)格的高斯分布.借用高 斯分布的特性,根據(jù)對數(shù)據(jù)的觀察以公式2作為閾值的計(jì)算方法,
以均值和n倍標(biāo)準(zhǔn)差的和作為閾值.
List.threshold=List.mean+n*List.std
(2)
表2統(tǒng)計(jì)了n取不同值時(shí)的所有數(shù)據(jù),n取5時(shí)可保證99%以上的數(shù)據(jù)都在閾值范圍內(nèi).將檢測到的異常值利用局部中位值替換的方式進(jìn)行替換.
2.2 危險(xiǎn)因素分析 單因素分析顯示:3~6周歲幼兒近視與平均1天看電視時(shí)間有關(guān)聯(lián);遠(yuǎn)視與母親視力、父親視力、幼兒營養(yǎng)狀況有關(guān)聯(lián);散光與父親視力、幼兒營養(yǎng)狀況有關(guān)聯(lián);多因素Logistic逐步回歸分析:父親視力是3~6周歲幼兒近視與散光的獨(dú)立影響因素,是3~6周歲幼兒遠(yuǎn)視的危險(xiǎn)因素。父親視力異常則3~6周歲幼兒近視、散光的概率小。幼兒營養(yǎng)狀態(tài)、母親視力是3~6周歲幼兒遠(yuǎn)視的保護(hù)因素。3~6周歲幼兒營養(yǎng)狀態(tài)越好則遠(yuǎn)視的概率越小,父親遠(yuǎn)視、散光,增加3~6周歲幼兒遠(yuǎn)視的危險(xiǎn)。見表2。
表2 n的不同取值所能涵蓋的數(shù)據(jù)范圍Table 2 Compare the scale of threshold with different n
對于缺失值的判斷極具挑戰(zhàn),如圖6所示,監(jiān)測結(jié)果的差異度并沒有隨著輸入數(shù)據(jù)集的變化而發(fā)生巨大變化,同時(shí)結(jié)合圖4和表1的結(jié)果表明歷史數(shù)據(jù)可作為缺失值補(bǔ)充的依據(jù).然而歷史記錄中的序列長度與當(dāng)前缺失項(xiàng)的記錄時(shí)長未必相同,難以通過位置信息來補(bǔ)全缺失值,如圖4中的參考數(shù)據(jù)所示.然而利用事件之間的關(guān)聯(lián)可快速構(gòu)造出回歸模型,利用回歸模型對數(shù)據(jù)進(jìn)行補(bǔ)充則不存在錯(cuò)位的問題.本文利用知識庫內(nèi)相似監(jiān)測事件的數(shù)據(jù),即對相同的運(yùn)行環(huán)境,相同計(jì)算框架下應(yīng)用程序的監(jiān)測任務(wù),監(jiān)測事件可以不完全相同,但必須包含缺失值的事件.以當(dāng)前結(jié)果中的監(jiān)測數(shù)據(jù)事件集的交集得出公共事件集作為訓(xùn)練數(shù)據(jù),構(gòu)建回歸模型,回歸模型采用KNN回歸3的方式實(shí)現(xiàn):
假設(shè)對含有缺失項(xiàng)的監(jiān)測事件(a,b,c,d)的結(jié)果R1,只有事件a有缺失項(xiàng) ,查找含有事件a,而且監(jiān)測相同程序的記錄結(jié)果R2.R2之中含有(a,b,c,e,f)的監(jiān)測記錄.
1.相同監(jiān)測事件:
R1∩R2 = (a,b,c)
選取缺失項(xiàng)a為目標(biāo)結(jié)果,b, c為特征事件.
2.整合數(shù)據(jù):
結(jié)合R2之中事件a,b,c的監(jiān)測結(jié)果和R1之中未缺失部分為模型訓(xùn)練集Ts1,缺失部分為Ls1.
3.應(yīng)用KNN算法,以K個(gè)距離最相近數(shù)據(jù)的為一類,建立分類模型.
4.根據(jù)(b,c)預(yù)測a的從屬分類,以類內(nèi)所有a的平均值為缺失部分的最終預(yù)測值.
實(shí)驗(yàn)集群由4臺Dell服務(wù)器組成,其中一臺作為主節(jié)點(diǎn),其他三臺作為計(jì)算子節(jié)點(diǎn).每臺服務(wù)器配備有16核Intel至強(qiáng)E5-2630 v3 @2.4GHz處理器,服務(wù)器內(nèi)存大小為64GB,操作系統(tǒng)為Ubuntu 14.04.
集群管理系統(tǒng)為Mesos 1.0并應(yīng)用Hadoop 2.7為計(jì)算框架,同時(shí)挑選了4類8個(gè)來自于Hibench中的典型云應(yīng)用程序作為被監(jiān)測程序,分別是:網(wǎng)絡(luò)分析算法(Pagerank),分布式數(shù)據(jù)庫應(yīng)用(Aggregation,Scan),機(jī)器學(xué)習(xí)算法(Bayes,Kmeans)以及微基準(zhǔn)程序(Sort,Wordcount).
由實(shí)驗(yàn)觀察可知,即使是在相同的系統(tǒng)環(huán)境中,反復(fù)監(jiān)測同一程序只能得到具有極高相似度的實(shí)驗(yàn)結(jié)果,而不可能得到完全相同的實(shí)驗(yàn)結(jié)果,如表1之中Reference1到Refernce4的數(shù)據(jù)描述,以及圖4之中對應(yīng)的部分比較也可以證實(shí)這一點(diǎn).所以本文對數(shù)據(jù)質(zhì)量的評價(jià)是以數(shù)據(jù)結(jié)果與參考值的相似度作為數(shù)據(jù)清理效果的評價(jià)標(biāo)準(zhǔn).并通過計(jì)算監(jiān)測數(shù)據(jù)與參考值的DTW,評估結(jié)果的相似性,并以此比較數(shù)據(jù)清理前后的差異度Diff(%)來表現(xiàn)處理的效果,如公式(3).
Distancetest=DTW(datatest,dataref1)
Distanceref=DTW(dataref1,dataref2)
(3)
由第一章可知,采用復(fù)用時(shí)系統(tǒng)會(huì)通過時(shí)分復(fù)用PMU實(shí)現(xiàn)多個(gè)事件的同時(shí)監(jiān)測.以監(jiān)測HiBench中的WordCount程序?yàn)槔? 觀察同時(shí)監(jiān)測事件數(shù)量變化時(shí)的精度變化,結(jié)果如圖8所示.縱坐標(biāo)為不同監(jiān)測結(jié)果與參考數(shù)據(jù)的差異度,橫坐標(biāo)為同時(shí)監(jiān)測的事件數(shù)目.比較相同事件在不同的PMU配置下處理前后監(jiān)測數(shù)據(jù)與參考數(shù)據(jù)之件的差異度,在同時(shí)監(jiān)測的事件數(shù)量增多時(shí)差異度逐漸增加.預(yù)處理之后差異度明顯減少,預(yù)處理之后差異度不超過參考值的42%,較處理前最低都在50%以上的偏差來比較極大地提升了監(jiān)測結(jié)果的質(zhì)量,而且在同時(shí)監(jiān)測的事件數(shù)量上少于24個(gè)時(shí),DTW距離的差異度不超過20%,而這20%中還包括監(jiān)測程序因頻繁的調(diào)度事件對程序所產(chǎn)生的影響.可監(jiān)測的事件數(shù)量最大可提升到方式一的5倍,監(jiān)測效率最大可提升5倍,確保數(shù)據(jù)依舊可保持較高的質(zhì)量.
圖8 同時(shí)監(jiān)測多個(gè)事件,數(shù)據(jù)質(zhì)量比較Fig.8 Compare of data quality when sampling with more events
注:KBDP,基于知識庫的數(shù)據(jù)與處理方法;GDP,對當(dāng)前缺失異常情況采取以當(dāng)前均值直接替換的方法.三條直線(從上到下)分別代表經(jīng)過預(yù)處理之前,GDP處理之后,KBDP處理之后的平均情況.
圖9 針對多種應(yīng)用采取不同預(yù)處理方法比較.
Fig.9 Data quality promotion when it applied to different application
同時(shí)對Hibench之中的其他應(yīng)用進(jìn)行了驗(yàn)證,并與針對缺失值和異常值直接以當(dāng)前均值替換的方法[20](在本文中把這種方法定義成一般性的預(yù)處理方法方法-General Data Preprocessing approach,GDP)進(jìn)行了比較,如圖9所示.在監(jiān)測10個(gè)硬件事件時(shí),基于數(shù)據(jù)庫的預(yù)處理方法(KBDP)與GDP相比極大的提高了與參考結(jié)果的相似性,總體的平均差異度由處理前的52.7%減低到8.7%,也就意味著平均91.3%的相似度.
本文提出的基于知識庫的預(yù)處理方法有效解決了在云環(huán)境下應(yīng)用PMU時(shí)的問題,即通過配置的事件數(shù)少于性能計(jì)數(shù)器個(gè)數(shù)來完成數(shù)據(jù)收集的工作才能獲得可靠數(shù)據(jù)的限制.通過對復(fù)用PMU后監(jiān)測結(jié)果的預(yù)處理工作處理了異常值,補(bǔ)全了缺失值,提高數(shù)據(jù)質(zhì)量,使得監(jiān)測數(shù)據(jù)可直接應(yīng)用到后續(xù)的分析工作中,大大提升了工作效率.