姜 勇 韋朝奧 陳紹輝 陳 亮 馬 力
(云南電網(wǎng)有限責任公司大理供電局,云南大理671000)
實際生產(chǎn)過程對計算能力的需求在不斷增長,基于此情況,很多機構(gòu)在生產(chǎn)設(shè)施中設(shè)計以及部署了擁有數(shù)十萬堆核心的大型并行HPC系統(tǒng)[1]。然而,系統(tǒng)中增加的組件數(shù)量使得系統(tǒng)范圍內(nèi)的MTBF(平均故障間隔時間)在一定范圍內(nèi)呈現(xiàn)減少趨勢,從而影響了生產(chǎn)設(shè)施的可靠性[2]。目前大多數(shù)大型應(yīng)用程序皆是根據(jù)檢查點重啟技術(shù)來恢復(fù)修正錯誤信息,且組件中所使用應(yīng)用程序的每一個錯誤都可能在最后一個檢查點的應(yīng)用程序重新啟動過程中結(jié)束。因此最新研究認為這種方法不能擴展到未來的Exascale系統(tǒng)使用過程中[3]。另外,近年來,相關(guān)研究的重點主要是對系統(tǒng)行為進行表征,從而采取主動監(jiān)測措施來對錯誤信息進行恢復(fù)修改。為此,監(jiān)測系統(tǒng)需要一個可靠的預(yù)測系統(tǒng)來提供系統(tǒng)的生產(chǎn)信息和位置信息。然而,如何快速準確地預(yù)測給定時間內(nèi)系統(tǒng)的各項事件數(shù)據(jù)仍是當前系統(tǒng)應(yīng)用所面臨的一個問題。
為了解決這個問題,本文提出了一種生成事件信息的新方法。此方法的目的是通過提取經(jīng)常發(fā)生的事件序列來對正常事件行為及異常事件行為進行預(yù)測。而且這個方法也可以通過使用不同的時間窗口來分析不同事件之間的時間間隔,從而對每個事件的日志段進行分析。同時認為,系統(tǒng)運行時的序列更新對任何給定時刻事件的行為反映與訓(xùn)練階段中序列的初始提取都是重要的,這個結(jié)果將在實驗部分進行驗證。
目前在研究過程中大多使用一種預(yù)先確定的時間窗口來對規(guī)則進行研究和提取[4]。然而,對于所有的事件類型以及整個系統(tǒng)的生命周期來說,只有一個固定的時間間隔是不現(xiàn)實的。基于這種情況,本文提出了一種基于動態(tài)時間窗口的異常數(shù)據(jù)周期分析模型。此模型根據(jù)系統(tǒng)每個事件的行為來調(diào)整分析系統(tǒng)運行的時間間隔,而且也研究每個事件類型中相鄰事件之間所生成的所有事件,從而預(yù)測具有很強相關(guān)性的事件。
近幾年主要是通過使用統(tǒng)計及數(shù)據(jù)挖掘來對大型系統(tǒng)生成的日志文件進行分析。當然,并不是所有的研究都依賴于日志文件,有的研究則主要考慮系統(tǒng)除日志文件以外的不同特性。例如,在文獻[5]中對系統(tǒng)性能指標進行檢查,然后使用概率方法建立事件之間的相關(guān)性。在文獻[6]中,通過一種方法來預(yù)測不同類別的系統(tǒng)事件故障,這種方法能夠預(yù)測80%的內(nèi)存和網(wǎng)絡(luò)故障及47%的應(yīng)用程序故障。然而其將這些故障分為五類,通過對預(yù)測系統(tǒng)進行了解,我們發(fā)現(xiàn)這五個類別不足以概括所有類型的故障,如預(yù)測的內(nèi)存錯誤類型也是常見的故障類型。
除此之外,有關(guān)事件預(yù)測的其他方法主要是使用數(shù)據(jù)挖掘算法來提取導(dǎo)致失敗的事件序列,并使用允許事件預(yù)測的不同方法來對其進行存儲。例如,文獻[7]中使用了一種改進的Apriori方法和基于PCA的算法[8],這兩種方法皆被用于Hadoop,而且其每個生成的消息都具有一個任務(wù)以及一條工作信息。我們將會證明這個方法對于HPC系統(tǒng)日志是不實用的,因為沒有很多消息共享通用的參數(shù)。
分析日志在事件預(yù)測過程中最為常用,其中一種常見方法就是通過對以往異常事件和致命事件之間的相關(guān)性進行檢查,進而了解未來失敗預(yù)測的模式[9]。文獻[9]中依據(jù)固定時間窗口來對規(guī)則進行提取,而且其只對致命事件提供預(yù)測。當然,分析日志也會在致命事件和非致命事件之間產(chǎn)生關(guān)聯(lián)規(guī)則,從而使得預(yù)測窗口大到足以采取主動措施。然而對BlueGene/P系統(tǒng)的分析表明,這種方法僅能捕獲大約15%的故障,而誤報率大約為60%。
另一個常用方法是使用故障日志[10],因為在故障日志中可以對過去以及未來的故障信息進行合理有效的累積分析。同時,基于這些特性,可以應(yīng)用不同的決策樹分類器來預(yù)測故障和固定時間窗口。但這種方法不是很普遍,因為不是所有的系統(tǒng)都有故障日志。然而其預(yù)測結(jié)果非常好,可以達到大約70%的精度。
結(jié)合以上事件預(yù)測的相關(guān)研究可以發(fā)現(xiàn),所有分析系統(tǒng)日志文件的方法都會利用一個預(yù)處理步驟來對系統(tǒng)時間和空間中的事件進行過濾分析,而且主要使用固定時間窗口來對事件相關(guān)性進行搜索。但在預(yù)測過程中這些研究方法只考慮少量的故障類別,并且需要一個最新的故障日志,同時在對系統(tǒng)事件進行預(yù)測時必須由系統(tǒng)管理員輸入工作信息。
我們的系統(tǒng)分析模型主要由兩部分組成,即在預(yù)處理條件下提取頻繁事件初始序列的訓(xùn)練方法和提供預(yù)測的在線模塊。該模型主要從日志文件中收集數(shù)據(jù),然后對其解析并進行預(yù)處理,當提取出故障類別并過濾重復(fù)事件后,便可通過挖掘模塊對數(shù)據(jù)進行分析,最終生成不同事件之間的相關(guān)鏈。而這項任務(wù)如果想要有效進行,則需在系統(tǒng)模型能夠快速提取序列和收集多少信息之間找到一個平衡,以便使得相關(guān)鏈具有較高的精確度。
本節(jié)將分別對系統(tǒng)分析模型中涉及的事件預(yù)處理、提取頻繁事件序列以及在線模塊進行介紹,從而展示基于動態(tài)時間窗口的異常數(shù)據(jù)周期分析模型的運行特點。
首先,對事件預(yù)處理作簡要介紹。在預(yù)處理過程中,系統(tǒng)優(yōu)先對原始格式的日志進行解析,從而生成一個模板列表。隨后使用分層事件日志管理器[11]從本質(zhì)上提取系統(tǒng)生成的所有事件類型,包括異常和正常的事件信息,繼而通過提供不同類型的網(wǎng)絡(luò)事件來生成具有更細粒度的模板。我們知道組件的故障可能導(dǎo)致存儲大量事件信息的日志記錄遭到破壞,因為從以往的研究中發(fā)現(xiàn)內(nèi)存和處理器緩存失敗通常會導(dǎo)致相關(guān)組件在不到一天的時間內(nèi)生成成百上千條消息[12]。
為了在預(yù)處理過程中優(yōu)化空間濾波,分析研究了不同傳播位置所對應(yīng)的事件信息。分析后,對日志記錄進行二次預(yù)測,并提取出每個模板的傳播序列,隨后將傳播序列定義為不同位置上傳播消息的次數(shù)與特定模板出現(xiàn)總次數(shù)之間的比率。但具有傳播序列的模板更有可能出現(xiàn)在多個位置,并在分析過程中不易被過濾。
其次,對頻繁事件序列的提取過程進行敘述。頻繁事件序列通常在具有不同關(guān)聯(lián)的系統(tǒng)事件中被提取出來,例如在非故障事件和故障事件之間由不同組件生成的安裝信息,又如故障事件中警告消息鏈的產(chǎn)生。而且在序列提取的過程中可以發(fā)現(xiàn)兩個相關(guān)事件之間的時間總會延遲幾秒到幾小時不等,延遲的時間可以是常數(shù),也可以呈現(xiàn)變化趨勢。例如“工作開始”和“工作結(jié)束”在某些情況下可能會同時發(fā)生,也可能在相隔幾分鐘之后才陸續(xù)發(fā)生?;诖朔N情況,分析系統(tǒng)在頻繁事件序列提取過程中主要利用如下算法進行分析研究(表1)。
該算法將會生成頻繁的k-length項集,即表示k種不同事件的頻繁序列。同時對于每個事件類型,都會將所對應(yīng)的時間間隔定義為對應(yīng)模板的相鄰事件之間的時間窗口。而且可以發(fā)現(xiàn)該算法的輸出由一組頻繁的序列表示,這樣輸出的好處在于可使HPC系統(tǒng)不必使用中央時鐘來同步節(jié)點。
表1 算法偽代碼
最后,對在線模塊的預(yù)測進行說明。在對在線模塊進行預(yù)測時需要使用前一階段提取的頻繁事件序列,然后將其存儲在一個簡單的列表結(jié)構(gòu)中,這個列表結(jié)構(gòu)中也保存有系統(tǒng)的內(nèi)存信息。同時根據(jù)列表中所有過去事件的信息對在線模塊中每個事件元素進行預(yù)測。即使存在較低的時間標準偏差,也能夠?qū)υ诰€模塊進行有效預(yù)測。
本節(jié)將建立實驗,并對實驗的設(shè)計預(yù)測思路進行介紹,最后通過實驗所得的合成記錄來驗證基于動態(tài)時間窗口的系統(tǒng)分析模型在預(yù)測過程中的優(yōu)點。
將分析模型中的預(yù)測精確度定義為修正的預(yù)測事件總數(shù)與預(yù)測事件的總數(shù)之比,而精確度的確定則基本上表示了所生成序列是可信的。但如果這個事件是由系統(tǒng)生成的,那便需要構(gòu)建一個正確的預(yù)測事件,而且這個預(yù)測事件需要考慮到標準偏差。為此,通過兩個定義來對相關(guān)誤差進行一定范圍內(nèi)的修正,第一個定義是修正預(yù)測事件的數(shù)量超過現(xiàn)有日志和事件的總數(shù);第二個定義為通過計算修正后的預(yù)計數(shù)量來對總數(shù)、類型以及比率相同的多個事件進行分析。為了使預(yù)測結(jié)果合理且具有說明性,從而滿足驗證要求,在實驗進行過程中通過選擇參數(shù)來創(chuàng)建不同的測試集,繼而使事件總數(shù)和生成的行列總數(shù)滿足實驗要求的比率關(guān)系。
基于以上情況分析,主要進行了兩種實驗。在第一個實驗中,對三個真實系統(tǒng)的日志文件進行分析,然而在實驗過程中發(fā)現(xiàn)很難對系統(tǒng)事件進行有效預(yù)測,因為系統(tǒng)中某些序列所包含的事件總列表是未知的。為改善這個問題,進行了第二種實驗,其主要是在合成原木上利用HPC系統(tǒng)隨機生成的特征來進行。我們據(jù)此構(gòu)建了一個日志生成器,其可將事件的數(shù)量、事件序列的數(shù)量、每個序列中事件的最小和最大數(shù)量以及每個序列的最小和最大重復(fù)次數(shù)作為輸入項,從而將序列隨機地繪制在不同的時間段中。
由于在實驗過程中創(chuàng)建了不同的測試集,且利用日志生成器生成了針對系統(tǒng)的消息日志,所以在最后的合成記錄中便發(fā)現(xiàn)不同系統(tǒng)之間的精確度差異是由許多因素決定的。例如因為多次執(zhí)行正常的行為序列使得在序列中引入了錯誤事件類型,也就是說當系統(tǒng)生成的事件類型增多,那么所提取的事件序列的精度便不再準確。而且,合成記錄顯示系統(tǒng)日志想要有效,就必須具有消息共享時所應(yīng)具備的參數(shù),但基于Apriori方法和基于PCA的算法只具有一個任務(wù)和一條工作信息,所以這兩種方法并不適用于HPC系統(tǒng)日志分析。同時由于序列更新有利于HPC系統(tǒng)日志分析,所以系統(tǒng)運行時的序列更新對任何給定時刻事件的行為反映與訓(xùn)練階段中序列的初始提取都是重要的。除此之外發(fā)現(xiàn),當系統(tǒng)分析過程中所擁有的事件序列由2~3個事件類型組成時,其預(yù)測精度相對較高,最終所得結(jié)果也最合理,且之后的預(yù)測值也可以得到平衡。
本文提出了一種基于動態(tài)時間窗口且可利用大型HPC系統(tǒng)生成不同事件類型的系統(tǒng)分析模型,這種模型能夠在不考慮時間延遲的條件下提取事件之間的相關(guān)性,而且可對序列進行更新。同時在此系統(tǒng)模型中對事件進行分析的粒度比其他相關(guān)研究都要精細,所以不會影響預(yù)測的準確性。最后通過分析實驗所得的合成記錄了解系統(tǒng)中影響序列精度的相關(guān)特性,并且驗證了分析系統(tǒng)在基于動態(tài)時間窗口的條件下能夠預(yù)測絕大多數(shù)的事件,而且在較低的事件粒度上同樣有著較高的預(yù)測精度。
[1]The TOP500 Supercomputer List[EB/OL].https://www.top500.org/lists/2017/11/.
[2]KERBYSON D J,HOISIE A,WASSERMAN H J.Use of Predictive Performance Modeling During Large-scale System Installation[J].Parallel Processing Letters,2005,15(04):387-395.
[3]ELNOZAHYE,PLANKJS.Checkpointingforpeta-scale systems:a look into the future of practical rollbackrecovery [J].IEEE Transactions on Dependable and Secure Computing,2004,1(2):97-108.
[4]CHUAH E,KUO S H,HIEW P,et al.Diagnosing the Root-Causes of Failures from Cluster Log Files[C]//International Conference on High Performance Computing,2010:1-10.
[5]SAHOO R K,OLINER A J,RISH I,et al.Critical Event Prediction for Proactive Management in Large-scale ComputerClusters[C]//International conference on Knowledge discovery and data mining,2003:426-435.
[6]LIANGY,ZHANGY,JETTEM,etal.BlueGene/LFailure Analysis and Prediction Models[C]//Proceedings of the International Conference on Dependable Systems and Networks,2006:425-434.
[7]LOUJG,FUQ,WANGY,etal.MiningDependencyin Distributed Systems through Unstructured Logs Analysis[J].Acm Sigops Operating Systems Review,2010,44(1):91-96.
[8]XU W,HUANG L,FOX A,et al.Online System Problem Detection by Mining Patterns of Console Logs[C]//IEEE International Conference on Data Mining,2009:588-597.
[9]ZHENGZ,LANZ,GUPTAR,etal.APracticalFailure Prediction with Location and Lead Time for Blue Gene/P[C]//InternationalConference on Dependable Systems and Networks Workshops,2010:15-22.
[10]NAKKA N,AGRAWAL A,CHOUDHARY A.Predicting Node Failure in High Performance Computing Systems from Failure and Usage Logs [C]// IEEE International Symposium on Parallel & Distributed processing workshop&phd forum,2011:1557-1566.
[11]GAINARU A,CAPPELLO F,TRAUSAN-MATU S,et al.Event log mining tool for large scale HPC systems[C]//International Conference on Parallel Processing,2011:52-64.
[12]HEIEN E,KONDO D,GAINARU A,et al.Modeling and Tolerating Heterogeneous Failures in Large Parallel Systems[C]//High Performance Computing,Networking,Storage&Analysis,2011:1-11.