姜 勇 韋朝奧 陳紹輝 陳 亮 馬 力
(云南電網(wǎng)有限責(zé)任公司大理供電局,云南大理671000)
實(shí)際生產(chǎn)過程對計(jì)算能力的需求在不斷增長,基于此情況,很多機(jī)構(gòu)在生產(chǎn)設(shè)施中設(shè)計(jì)以及部署了擁有數(shù)十萬堆核心的大型并行HPC系統(tǒng)[1]。然而,系統(tǒng)中增加的組件數(shù)量使得系統(tǒng)范圍內(nèi)的MTBF(平均故障間隔時(shí)間)在一定范圍內(nèi)呈現(xiàn)減少趨勢,從而影響了生產(chǎn)設(shè)施的可靠性[2]。目前大多數(shù)大型應(yīng)用程序皆是根據(jù)檢查點(diǎn)重啟技術(shù)來恢復(fù)修正錯(cuò)誤信息,且組件中所使用應(yīng)用程序的每一個(gè)錯(cuò)誤都可能在最后一個(gè)檢查點(diǎn)的應(yīng)用程序重新啟動(dòng)過程中結(jié)束。因此最新研究認(rèn)為這種方法不能擴(kuò)展到未來的Exascale系統(tǒng)使用過程中[3]。另外,近年來,相關(guān)研究的重點(diǎn)主要是對系統(tǒng)行為進(jìn)行表征,從而采取主動(dòng)監(jiān)測措施來對錯(cuò)誤信息進(jìn)行恢復(fù)修改。為此,監(jiān)測系統(tǒng)需要一個(gè)可靠的預(yù)測系統(tǒng)來提供系統(tǒng)的生產(chǎn)信息和位置信息。然而,如何快速準(zhǔn)確地預(yù)測給定時(shí)間內(nèi)系統(tǒng)的各項(xiàng)事件數(shù)據(jù)仍是當(dāng)前系統(tǒng)應(yīng)用所面臨的一個(gè)問題。
為了解決這個(gè)問題,本文提出了一種生成事件信息的新方法。此方法的目的是通過提取經(jīng)常發(fā)生的事件序列來對正常事件行為及異常事件行為進(jìn)行預(yù)測。而且這個(gè)方法也可以通過使用不同的時(shí)間窗口來分析不同事件之間的時(shí)間間隔,從而對每個(gè)事件的日志段進(jìn)行分析。同時(shí)認(rèn)為,系統(tǒng)運(yùn)行時(shí)的序列更新對任何給定時(shí)刻事件的行為反映與訓(xùn)練階段中序列的初始提取都是重要的,這個(gè)結(jié)果將在實(shí)驗(yàn)部分進(jìn)行驗(yàn)證。
目前在研究過程中大多使用一種預(yù)先確定的時(shí)間窗口來對規(guī)則進(jìn)行研究和提取[4]。然而,對于所有的事件類型以及整個(gè)系統(tǒng)的生命周期來說,只有一個(gè)固定的時(shí)間間隔是不現(xiàn)實(shí)的?;谶@種情況,本文提出了一種基于動(dòng)態(tài)時(shí)間窗口的異常數(shù)據(jù)周期分析模型。此模型根據(jù)系統(tǒng)每個(gè)事件的行為來調(diào)整分析系統(tǒng)運(yùn)行的時(shí)間間隔,而且也研究每個(gè)事件類型中相鄰事件之間所生成的所有事件,從而預(yù)測具有很強(qiáng)相關(guān)性的事件。
近幾年主要是通過使用統(tǒng)計(jì)及數(shù)據(jù)挖掘來對大型系統(tǒng)生成的日志文件進(jìn)行分析。當(dāng)然,并不是所有的研究都依賴于日志文件,有的研究則主要考慮系統(tǒng)除日志文件以外的不同特性。例如,在文獻(xiàn)[5]中對系統(tǒng)性能指標(biāo)進(jìn)行檢查,然后使用概率方法建立事件之間的相關(guān)性。在文獻(xiàn)[6]中,通過一種方法來預(yù)測不同類別的系統(tǒng)事件故障,這種方法能夠預(yù)測80%的內(nèi)存和網(wǎng)絡(luò)故障及47%的應(yīng)用程序故障。然而其將這些故障分為五類,通過對預(yù)測系統(tǒng)進(jìn)行了解,我們發(fā)現(xiàn)這五個(gè)類別不足以概括所有類型的故障,如預(yù)測的內(nèi)存錯(cuò)誤類型也是常見的故障類型。
除此之外,有關(guān)事件預(yù)測的其他方法主要是使用數(shù)據(jù)挖掘算法來提取導(dǎo)致失敗的事件序列,并使用允許事件預(yù)測的不同方法來對其進(jìn)行存儲(chǔ)。例如,文獻(xiàn)[7]中使用了一種改進(jìn)的Apriori方法和基于PCA的算法[8],這兩種方法皆被用于Hadoop,而且其每個(gè)生成的消息都具有一個(gè)任務(wù)以及一條工作信息。我們將會(huì)證明這個(gè)方法對于HPC系統(tǒng)日志是不實(shí)用的,因?yàn)闆]有很多消息共享通用的參數(shù)。
分析日志在事件預(yù)測過程中最為常用,其中一種常見方法就是通過對以往異常事件和致命事件之間的相關(guān)性進(jìn)行檢查,進(jìn)而了解未來失敗預(yù)測的模式[9]。文獻(xiàn)[9]中依據(jù)固定時(shí)間窗口來對規(guī)則進(jìn)行提取,而且其只對致命事件提供預(yù)測。當(dāng)然,分析日志也會(huì)在致命事件和非致命事件之間產(chǎn)生關(guān)聯(lián)規(guī)則,從而使得預(yù)測窗口大到足以采取主動(dòng)措施。然而對BlueGene/P系統(tǒng)的分析表明,這種方法僅能捕獲大約15%的故障,而誤報(bào)率大約為60%。
另一個(gè)常用方法是使用故障日志[10],因?yàn)樵诠收先罩局锌梢詫^去以及未來的故障信息進(jìn)行合理有效的累積分析。同時(shí),基于這些特性,可以應(yīng)用不同的決策樹分類器來預(yù)測故障和固定時(shí)間窗口。但這種方法不是很普遍,因?yàn)椴皇撬械南到y(tǒng)都有故障日志。然而其預(yù)測結(jié)果非常好,可以達(dá)到大約70%的精度。
結(jié)合以上事件預(yù)測的相關(guān)研究可以發(fā)現(xiàn),所有分析系統(tǒng)日志文件的方法都會(huì)利用一個(gè)預(yù)處理步驟來對系統(tǒng)時(shí)間和空間中的事件進(jìn)行過濾分析,而且主要使用固定時(shí)間窗口來對事件相關(guān)性進(jìn)行搜索。但在預(yù)測過程中這些研究方法只考慮少量的故障類別,并且需要一個(gè)最新的故障日志,同時(shí)在對系統(tǒng)事件進(jìn)行預(yù)測時(shí)必須由系統(tǒng)管理員輸入工作信息。
我們的系統(tǒng)分析模型主要由兩部分組成,即在預(yù)處理?xiàng)l件下提取頻繁事件初始序列的訓(xùn)練方法和提供預(yù)測的在線模塊。該模型主要從日志文件中收集數(shù)據(jù),然后對其解析并進(jìn)行預(yù)處理,當(dāng)提取出故障類別并過濾重復(fù)事件后,便可通過挖掘模塊對數(shù)據(jù)進(jìn)行分析,最終生成不同事件之間的相關(guān)鏈。而這項(xiàng)任務(wù)如果想要有效進(jìn)行,則需在系統(tǒng)模型能夠快速提取序列和收集多少信息之間找到一個(gè)平衡,以便使得相關(guān)鏈具有較高的精確度。
本節(jié)將分別對系統(tǒng)分析模型中涉及的事件預(yù)處理、提取頻繁事件序列以及在線模塊進(jìn)行介紹,從而展示基于動(dòng)態(tài)時(shí)間窗口的異常數(shù)據(jù)周期分析模型的運(yùn)行特點(diǎn)。
首先,對事件預(yù)處理作簡要介紹。在預(yù)處理過程中,系統(tǒng)優(yōu)先對原始格式的日志進(jìn)行解析,從而生成一個(gè)模板列表。隨后使用分層事件日志管理器[11]從本質(zhì)上提取系統(tǒng)生成的所有事件類型,包括異常和正常的事件信息,繼而通過提供不同類型的網(wǎng)絡(luò)事件來生成具有更細(xì)粒度的模板。我們知道組件的故障可能導(dǎo)致存儲(chǔ)大量事件信息的日志記錄遭到破壞,因?yàn)閺囊酝难芯恐邪l(fā)現(xiàn)內(nèi)存和處理器緩存失敗通常會(huì)導(dǎo)致相關(guān)組件在不到一天的時(shí)間內(nèi)生成成百上千條消息[12]。
為了在預(yù)處理過程中優(yōu)化空間濾波,分析研究了不同傳播位置所對應(yīng)的事件信息。分析后,對日志記錄進(jìn)行二次預(yù)測,并提取出每個(gè)模板的傳播序列,隨后將傳播序列定義為不同位置上傳播消息的次數(shù)與特定模板出現(xiàn)總次數(shù)之間的比率。但具有傳播序列的模板更有可能出現(xiàn)在多個(gè)位置,并在分析過程中不易被過濾。
其次,對頻繁事件序列的提取過程進(jìn)行敘述。頻繁事件序列通常在具有不同關(guān)聯(lián)的系統(tǒng)事件中被提取出來,例如在非故障事件和故障事件之間由不同組件生成的安裝信息,又如故障事件中警告消息鏈的產(chǎn)生。而且在序列提取的過程中可以發(fā)現(xiàn)兩個(gè)相關(guān)事件之間的時(shí)間總會(huì)延遲幾秒到幾小時(shí)不等,延遲的時(shí)間可以是常數(shù),也可以呈現(xiàn)變化趨勢。例如“工作開始”和“工作結(jié)束”在某些情況下可能會(huì)同時(shí)發(fā)生,也可能在相隔幾分鐘之后才陸續(xù)發(fā)生?;诖朔N情況,分析系統(tǒng)在頻繁事件序列提取過程中主要利用如下算法進(jìn)行分析研究(表1)。
該算法將會(huì)生成頻繁的k-length項(xiàng)集,即表示k種不同事件的頻繁序列。同時(shí)對于每個(gè)事件類型,都會(huì)將所對應(yīng)的時(shí)間間隔定義為對應(yīng)模板的相鄰事件之間的時(shí)間窗口。而且可以發(fā)現(xiàn)該算法的輸出由一組頻繁的序列表示,這樣輸出的好處在于可使HPC系統(tǒng)不必使用中央時(shí)鐘來同步節(jié)點(diǎn)。
表1 算法偽代碼
最后,對在線模塊的預(yù)測進(jìn)行說明。在對在線模塊進(jìn)行預(yù)測時(shí)需要使用前一階段提取的頻繁事件序列,然后將其存儲(chǔ)在一個(gè)簡單的列表結(jié)構(gòu)中,這個(gè)列表結(jié)構(gòu)中也保存有系統(tǒng)的內(nèi)存信息。同時(shí)根據(jù)列表中所有過去事件的信息對在線模塊中每個(gè)事件元素進(jìn)行預(yù)測。即使存在較低的時(shí)間標(biāo)準(zhǔn)偏差,也能夠?qū)υ诰€模塊進(jìn)行有效預(yù)測。
本節(jié)將建立實(shí)驗(yàn),并對實(shí)驗(yàn)的設(shè)計(jì)預(yù)測思路進(jìn)行介紹,最后通過實(shí)驗(yàn)所得的合成記錄來驗(yàn)證基于動(dòng)態(tài)時(shí)間窗口的系統(tǒng)分析模型在預(yù)測過程中的優(yōu)點(diǎn)。
將分析模型中的預(yù)測精確度定義為修正的預(yù)測事件總數(shù)與預(yù)測事件的總數(shù)之比,而精確度的確定則基本上表示了所生成序列是可信的。但如果這個(gè)事件是由系統(tǒng)生成的,那便需要構(gòu)建一個(gè)正確的預(yù)測事件,而且這個(gè)預(yù)測事件需要考慮到標(biāo)準(zhǔn)偏差。為此,通過兩個(gè)定義來對相關(guān)誤差進(jìn)行一定范圍內(nèi)的修正,第一個(gè)定義是修正預(yù)測事件的數(shù)量超過現(xiàn)有日志和事件的總數(shù);第二個(gè)定義為通過計(jì)算修正后的預(yù)計(jì)數(shù)量來對總數(shù)、類型以及比率相同的多個(gè)事件進(jìn)行分析。為了使預(yù)測結(jié)果合理且具有說明性,從而滿足驗(yàn)證要求,在實(shí)驗(yàn)進(jìn)行過程中通過選擇參數(shù)來創(chuàng)建不同的測試集,繼而使事件總數(shù)和生成的行列總數(shù)滿足實(shí)驗(yàn)要求的比率關(guān)系。
基于以上情況分析,主要進(jìn)行了兩種實(shí)驗(yàn)。在第一個(gè)實(shí)驗(yàn)中,對三個(gè)真實(shí)系統(tǒng)的日志文件進(jìn)行分析,然而在實(shí)驗(yàn)過程中發(fā)現(xiàn)很難對系統(tǒng)事件進(jìn)行有效預(yù)測,因?yàn)橄到y(tǒng)中某些序列所包含的事件總列表是未知的。為改善這個(gè)問題,進(jìn)行了第二種實(shí)驗(yàn),其主要是在合成原木上利用HPC系統(tǒng)隨機(jī)生成的特征來進(jìn)行。我們據(jù)此構(gòu)建了一個(gè)日志生成器,其可將事件的數(shù)量、事件序列的數(shù)量、每個(gè)序列中事件的最小和最大數(shù)量以及每個(gè)序列的最小和最大重復(fù)次數(shù)作為輸入項(xiàng),從而將序列隨機(jī)地繪制在不同的時(shí)間段中。
由于在實(shí)驗(yàn)過程中創(chuàng)建了不同的測試集,且利用日志生成器生成了針對系統(tǒng)的消息日志,所以在最后的合成記錄中便發(fā)現(xiàn)不同系統(tǒng)之間的精確度差異是由許多因素決定的。例如因?yàn)槎啻螆?zhí)行正常的行為序列使得在序列中引入了錯(cuò)誤事件類型,也就是說當(dāng)系統(tǒng)生成的事件類型增多,那么所提取的事件序列的精度便不再準(zhǔn)確。而且,合成記錄顯示系統(tǒng)日志想要有效,就必須具有消息共享時(shí)所應(yīng)具備的參數(shù),但基于Apriori方法和基于PCA的算法只具有一個(gè)任務(wù)和一條工作信息,所以這兩種方法并不適用于HPC系統(tǒng)日志分析。同時(shí)由于序列更新有利于HPC系統(tǒng)日志分析,所以系統(tǒng)運(yùn)行時(shí)的序列更新對任何給定時(shí)刻事件的行為反映與訓(xùn)練階段中序列的初始提取都是重要的。除此之外發(fā)現(xiàn),當(dāng)系統(tǒng)分析過程中所擁有的事件序列由2~3個(gè)事件類型組成時(shí),其預(yù)測精度相對較高,最終所得結(jié)果也最合理,且之后的預(yù)測值也可以得到平衡。
本文提出了一種基于動(dòng)態(tài)時(shí)間窗口且可利用大型HPC系統(tǒng)生成不同事件類型的系統(tǒng)分析模型,這種模型能夠在不考慮時(shí)間延遲的條件下提取事件之間的相關(guān)性,而且可對序列進(jìn)行更新。同時(shí)在此系統(tǒng)模型中對事件進(jìn)行分析的粒度比其他相關(guān)研究都要精細(xì),所以不會(huì)影響預(yù)測的準(zhǔn)確性。最后通過分析實(shí)驗(yàn)所得的合成記錄了解系統(tǒng)中影響序列精度的相關(guān)特性,并且驗(yàn)證了分析系統(tǒng)在基于動(dòng)態(tài)時(shí)間窗口的條件下能夠預(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.