建瀾濤,任秀江,張禎,石嵩,黃益明,張春林
(1.江南計(jì)算技術(shù)研究所,江蘇 無錫 214083;2.國家并行計(jì)算機(jī)工程技術(shù)研究中心,北京 100190)
高性能計(jì)算在國民經(jīng)濟(jì)建設(shè)和社會(huì)發(fā)展中發(fā)揮著不可替代的作用。2021 年底,基于傳統(tǒng)高性能計(jì)算的量子模擬技術(shù)打破Google 量子壟斷[1-2],意味著在未來一段時(shí)間內(nèi),傳統(tǒng)超級(jí)計(jì)算機(jī)仍將是高性能計(jì)算的主要形式。目前,傳統(tǒng)高性能計(jì)算已進(jìn)入E 級(jí)時(shí)代,更強(qiáng)的算力意味著更大的規(guī)模、更多的部件與更為復(fù)雜的子系統(tǒng)。E 級(jí)高性能計(jì)算系統(tǒng)由數(shù)百萬個(gè)部件組成,系統(tǒng)平均無故障時(shí)間從小時(shí)級(jí)降到分鐘級(jí)[3-4],系統(tǒng)的實(shí)時(shí)監(jiān)控與故障診斷變得越來越重要。
維護(hù)故障診斷系統(tǒng)是高性能計(jì)算機(jī)維護(hù)系統(tǒng)的核心,負(fù)責(zé)全機(jī)硬件系統(tǒng)的異常檢測(cè)(包括故障檢測(cè),下文同)、故障診斷及故障預(yù)測(cè)。本文聚焦異常檢測(cè)、故障診斷、故障預(yù)測(cè)3 個(gè)方向的關(guān)鍵技術(shù),結(jié)合實(shí)際工程需要設(shè)計(jì)一種支撐數(shù)E 級(jí)規(guī)模的高性能計(jì)算機(jī)維護(hù)故障診斷系統(tǒng),并部署在神威E 級(jí)原型機(jī)系統(tǒng)上對(duì)關(guān)鍵設(shè)計(jì)進(jìn)行實(shí)驗(yàn)驗(yàn)證,同時(shí)將實(shí)驗(yàn)結(jié)果與神威·太湖之光的故障診斷系統(tǒng)進(jìn)行對(duì)比分析。
高性能計(jì)算系統(tǒng)維護(hù)故障診斷技術(shù)主要包括異常檢測(cè)、故障診斷及故障預(yù)測(cè)3 個(gè)方向。本節(jié)對(duì)3 個(gè)方向的關(guān)鍵技術(shù)進(jìn)行研究,以高性能計(jì)算系統(tǒng)對(duì)維護(hù)故障診斷系統(tǒng)的需求為目標(biāo),對(duì)相應(yīng)算法進(jìn)行適用性分析,最后確定在工程實(shí)踐中能夠取得實(shí)效的研發(fā)設(shè)計(jì)方法。
異常檢測(cè)的基本原理是定義數(shù)據(jù)所代表的物理意義在當(dāng)前場(chǎng)景下所應(yīng)該表現(xiàn)出來的特征,用算法分析當(dāng)前數(shù)據(jù)是否有不滿足正常特征之處,若有即為異常。
在對(duì)信息進(jìn)行分析時(shí)容易發(fā)現(xiàn)多次采集的待分析數(shù)據(jù)信息匯集到一起具有時(shí)間序列特征,對(duì)時(shí)間序列數(shù)據(jù)的異常檢測(cè)是數(shù)據(jù)挖掘領(lǐng)域的一個(gè)重要分支,其相關(guān)算法的思想可用于故障檢測(cè)的設(shè)計(jì)。
目前,國內(nèi)外學(xué)者對(duì)時(shí)間序列的異常檢測(cè)方法的研究成果非常豐富,主要有基于統(tǒng)計(jì)[5]、基于聚類[6]、基于偏差[7-8]、基于距離[9]、基于密度[10]、基于神經(jīng)網(wǎng)絡(luò)[11-13]等算法。除深度學(xué)習(xí)靠樣本訓(xùn)練外,其他算法均利用統(tǒng)計(jì)學(xué)知識(shí)計(jì)算特征值,只是針對(duì)不同的應(yīng)用場(chǎng)景精度不同。各類算法判斷異常的原理及適用性如表1 所示。
表1 不同時(shí)序數(shù)據(jù)算法分類對(duì)比Table 1 Comparison of different time series data algorithms categories
在實(shí)際工程化應(yīng)用中,使用最多的是基于統(tǒng)計(jì)學(xué)的算法。騰訊織云metis 在數(shù)據(jù)異常檢測(cè)時(shí)就大量運(yùn)用各種統(tǒng)計(jì)學(xué)算法,如3sigma 算法、移動(dòng)平均算法、帶權(quán)重的移動(dòng)平均算法、1/2/3 次指數(shù)移動(dòng)平均算法、奇異值分解算法、自回歸算法等。百度運(yùn)維針對(duì)不同數(shù)據(jù)業(yè)務(wù)場(chǎng)景設(shè)計(jì)數(shù)據(jù)檢測(cè)算法時(shí),也從數(shù)據(jù)的統(tǒng)計(jì)特征出發(fā)尋求解決之道,如將原始數(shù)據(jù)轉(zhuǎn)換到相鄰窗口均值變化比例空間,在該比例空間上設(shè)置閾值進(jìn)而檢測(cè)數(shù)據(jù)是否有突升突降。
在智能檢測(cè)領(lǐng)域,騰訊織云采用取代傳統(tǒng)閾值檢測(cè)方式的無閾值智能監(jiān)控學(xué)件,基于統(tǒng)計(jì)判斷機(jī)制,用無監(jiān)督和有監(jiān)督學(xué)習(xí)聯(lián)合檢測(cè)時(shí)間序列,經(jīng)海量樣本訓(xùn)練出通用模型。
本文討論的故障診斷系統(tǒng)運(yùn)行環(huán)境是嵌入式系統(tǒng),無論從資源占用角度還是效率角度,設(shè)計(jì)算法不宜過于復(fù)雜。基于統(tǒng)計(jì)的算法簡(jiǎn)單有效、執(zhí)行迅速,對(duì)近似滿足正態(tài)分布的一些指標(biāo)是最好的選擇;對(duì)系統(tǒng)內(nèi)具有相似場(chǎng)景的指標(biāo)數(shù)據(jù),可以采用基于相似度的算法,但其計(jì)算量較大并且效率不高,應(yīng)考慮利用統(tǒng)計(jì)學(xué)特征做差分,結(jié)合閾值進(jìn)行檢測(cè);對(duì)于樣本足夠且可以用來訓(xùn)練模型的數(shù)據(jù),在外部用神經(jīng)網(wǎng)絡(luò)訓(xùn)練好模型,放至嵌入式系統(tǒng)以提高效率。
故障診斷的核心功能是根因分析,需要在異常檢測(cè)的基礎(chǔ)上進(jìn)一步明確故障類型、故障部位、故障原因,并把故障定位到實(shí)施修理時(shí)的可更換單元。
根因分析也是故障診斷的難點(diǎn),國內(nèi)外在該領(lǐng)域已經(jīng)取得了許多有價(jià)值的研究成果,有基于圖論的符號(hào)有向圖(Signed Directed Graph,SDG)[14-16]和故障樹分析(Fault Tree Analysis,F(xiàn)TA)[17-19]、基于專家系統(tǒng)[20]、基于機(jī)器學(xué)習(xí)[21]、基于模糊理論[22]等。在此基礎(chǔ)上,一些研究工作通過聯(lián)合多種方式取得了更好的診斷效果,如文獻(xiàn)[23]用專家系統(tǒng)和神經(jīng)網(wǎng)絡(luò)聯(lián)合診斷,文獻(xiàn)[24-25]用模糊petri 網(wǎng)模型和故障樹聯(lián)合診斷等。表2 列出近年來使用最多、研究熱度較高的3 類方法的優(yōu)缺點(diǎn)。
表2 不同根因分析算法分類比較Table 2 Comparison of different root cause analysis algorithms categories
從實(shí)際應(yīng)用情況看,基于故障樹及專家系統(tǒng)的根因分析普遍取得很好的效果。利用機(jī)器學(xué)習(xí)獲取異常事件之間關(guān)聯(lián)關(guān)系進(jìn)行故障診斷的方法,大都仍停留在實(shí)驗(yàn)研究層面。文獻(xiàn)[27]介紹了某E 級(jí)系統(tǒng)中使用機(jī)器學(xué)習(xí)方式支持故障診斷,但并未給出具體應(yīng)用情況及實(shí)質(zhì)性成果。智慧運(yùn)維領(lǐng)域的云智慧研究院算法團(tuán)隊(duì)通過實(shí)驗(yàn)研究認(rèn)為,在針對(duì)根因分析的各種機(jī)器學(xué)習(xí)模型中,由于各層信息的物理意義不明確,盲目運(yùn)用到運(yùn)維領(lǐng)域造成了診斷結(jié)果不可解釋,認(rèn)為脫離系統(tǒng)知識(shí)的機(jī)器學(xué)習(xí)方法學(xué)到的是事件的相關(guān)性而非因果性。文獻(xiàn)[28-29]介紹了當(dāng)前的機(jī)器學(xué)習(xí)學(xué)到的是事件相關(guān)性而非因果性,而相關(guān)性和因果性之間尚存在一定的鴻溝[30-32],主要原因在于當(dāng)前的機(jī)器學(xué)習(xí)尚不具備邏輯性[33-34]。云智慧研究院算法團(tuán)隊(duì)主張切忌以“智能”算法為基礎(chǔ)進(jìn)行根因分析方法的設(shè)計(jì),對(duì)根因分析算法產(chǎn)品的設(shè)計(jì)思路要用運(yùn)維的邏輯做支撐,抽象運(yùn)維經(jīng)驗(yàn),將運(yùn)維的排除故障經(jīng)驗(yàn)自動(dòng)化。
本文討論的故障診斷系統(tǒng)處于維護(hù)系統(tǒng)內(nèi)部,待分析的數(shù)據(jù)均為硬件信息及硬件配置參數(shù),和系統(tǒng)軟件應(yīng)用相關(guān)的只有節(jié)點(diǎn)所處的作業(yè)隊(duì)列信息,故障診斷關(guān)注的核心是關(guān)鍵芯片及器件的硬件問題。芯片器件大多歷經(jīng)幾代研發(fā)改進(jìn),一些故障發(fā)生的根因已經(jīng)經(jīng)過芯片設(shè)計(jì)者、系統(tǒng)管理者及應(yīng)用開發(fā)者聯(lián)合診斷確認(rèn),所以根因分析最有效的手段首選基于專家經(jīng)驗(yàn),研發(fā)主體基于專家知識(shí),以系統(tǒng)知識(shí)和運(yùn)維知識(shí)為基礎(chǔ),充分學(xué)習(xí)領(lǐng)域?qū)<以趩栴}求解過程中所用到的結(jié)構(gòu)知識(shí)、因果知識(shí)、行為知識(shí),建立包含這些知識(shí)規(guī)則的較為完備的知識(shí)圖譜。在某些特定問題上,通過對(duì)大量故障實(shí)例的機(jī)器學(xué)習(xí),協(xié)助專家提取知識(shí)。針對(duì)診斷結(jié)論由反饋機(jī)制進(jìn)行確認(rèn),而后通過特征提取生成樣本,在樣本累積到一定程度后用BP 神經(jīng)網(wǎng)絡(luò)對(duì)該知識(shí)進(jìn)行學(xué)習(xí)。
故障預(yù)測(cè)是根據(jù)系統(tǒng)內(nèi)發(fā)生故障時(shí)的大量歷史數(shù)據(jù)特征,結(jié)合當(dāng)前數(shù)據(jù)狀態(tài)對(duì)未來一段時(shí)間出現(xiàn)故障的可能性進(jìn)行預(yù)測(cè)。
故障預(yù)測(cè)的方法目前主要有基于模型、基于知識(shí)和基于數(shù)據(jù)驅(qū)動(dòng)3 種類型?;谀P偷墓收项A(yù)測(cè)方法原理是將系統(tǒng)實(shí)際執(zhí)行行為與模型描述的預(yù)期行為進(jìn)行比較,通過發(fā)現(xiàn)明顯行為差異來預(yù)測(cè)系統(tǒng)故障[34]。基于知識(shí)的故障預(yù)測(cè)方法原理主要依據(jù)專家經(jīng)驗(yàn)和知識(shí)進(jìn)行定性推理,比如系統(tǒng)中某個(gè)異常故障的發(fā)生就預(yù)示不久的將來大概率會(huì)發(fā)生另一個(gè)更為嚴(yán)重的故障?;跀?shù)據(jù)驅(qū)動(dòng)的預(yù)測(cè)方法利用系統(tǒng)大量離線數(shù)據(jù)對(duì)當(dāng)前采樣的在線數(shù)據(jù)進(jìn)行分析處理,對(duì)未來一段時(shí)間的數(shù)據(jù)趨勢(shì)進(jìn)行預(yù)測(cè)或識(shí)別潛在故障。
模型、知識(shí)和數(shù)據(jù)驅(qū)動(dòng)可以結(jié)合起來進(jìn)行預(yù)測(cè)。文獻(xiàn)[35-36]介紹了通過挖掘事件之間的關(guān)聯(lián),將故障預(yù)測(cè)過程轉(zhuǎn)換為查找故障間是否存在關(guān)聯(lián)規(guī)則的過程,用事件關(guān)聯(lián)圖來表示事件規(guī)則并預(yù)測(cè)故障事件。
基于以上3 種方法的故障預(yù)測(cè)算法有灰色模型預(yù)測(cè)、隱馬爾科夫模型預(yù)測(cè)、神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)和支持向量機(jī)預(yù)測(cè),這些算法可以混合使用,也可以為每種算法賦予不同權(quán)重后組合使用[35]。在故障檢測(cè)中用到的一些算法也可以用于故障預(yù)測(cè),如對(duì)時(shí)間序列的分析算法結(jié)合滑動(dòng)窗口進(jìn)行預(yù)測(cè)。
在對(duì)故障預(yù)測(cè)的研究中發(fā)現(xiàn),國內(nèi)外研究文獻(xiàn)對(duì)超級(jí)計(jì)算機(jī)系統(tǒng)傾向于使用各種日志進(jìn)行預(yù)測(cè),比如對(duì)基于日志記錄中故障事件的時(shí)間與故障事件之間的關(guān)聯(lián)性[35]進(jìn)行故障預(yù)測(cè),或是根據(jù)日志記錄中各類事件(包括故障事件和非故障事件)的分布特點(diǎn)進(jìn)行故障預(yù)測(cè)[37]。本文討論的故障預(yù)測(cè)模塊位于高性能計(jì)算維護(hù)系統(tǒng)內(nèi),本就處于底層,系統(tǒng)內(nèi)有關(guān)硬件的日志信息來自維護(hù)本身,故障檢測(cè)模塊已經(jīng)能夠提供幾乎所有信息,無須對(duì)日志進(jìn)行重復(fù)挖掘。
文獻(xiàn)[38]介紹了一種用于高性能計(jì)算機(jī)系統(tǒng)的故障預(yù)測(cè)方法。利用雙數(shù)據(jù)源(環(huán)境狀態(tài)數(shù)據(jù)和系統(tǒng)運(yùn)行狀態(tài)數(shù)據(jù))通過計(jì)算互信息和距離來度量屬性和類別之間的相關(guān)性,用SVM 分類器確定最佳屬性子集,用基于SVM 集成數(shù)據(jù)流挖掘方法建立故障預(yù)測(cè)模型,最后基于實(shí)時(shí)狀態(tài)樣本預(yù)測(cè)結(jié)果,結(jié)合移動(dòng)窗口判定預(yù)測(cè)節(jié)點(diǎn)運(yùn)行狀態(tài)。該方法用于本文討論的環(huán)境中會(huì)有3 個(gè)問題:1)屬性和類別之間的相關(guān)性如果缺乏專家知識(shí)做指引會(huì)帶來大量不必要的計(jì)算;2)故障預(yù)測(cè)模型的建立需要足夠多的故障節(jié)點(diǎn)數(shù)據(jù);3)預(yù)測(cè)模塊運(yùn)行在插件級(jí)平臺(tái)上,數(shù)量達(dá)數(shù)萬之多,如果預(yù)測(cè)模型準(zhǔn)確率不夠高,難免會(huì)報(bào)出大量無效信息,使得后續(xù)維護(hù)處理陷入無意義的消耗,甚至影響系統(tǒng)正常維護(hù)運(yùn)行。
綜上所述,為使故障預(yù)測(cè)在工程化應(yīng)用中取得實(shí)效,本文聯(lián)合運(yùn)用基于模型、知識(shí)以及數(shù)據(jù)驅(qū)動(dòng)的方式,采用以下兩種實(shí)現(xiàn)方法:一是充分利用領(lǐng)域?qū)<乙阎念A(yù)測(cè)知識(shí)建立模型或規(guī)則;二是以場(chǎng)景為導(dǎo)向,針對(duì)不同應(yīng)用場(chǎng)景,對(duì)系統(tǒng)或部件大量信息數(shù)據(jù)表現(xiàn)出來的確定性行為規(guī)律進(jìn)行知識(shí)提取,建立適用不同特定場(chǎng)景的多種模型。預(yù)測(cè)時(shí)間域的設(shè)置也要合理,過小過大都無意義,太小來不及后續(xù)處理,太大則期間可能發(fā)生其他因素的變化,會(huì)對(duì)預(yù)測(cè)結(jié)果產(chǎn)生偏離影響,要根據(jù)系統(tǒng)自身特征表現(xiàn)適當(dāng)設(shè)置。
針對(duì)高性能計(jì)算機(jī)的維護(hù)故障診斷系統(tǒng),要具備較好的可擴(kuò)展性,能夠高效采集大規(guī)模系統(tǒng)中各種關(guān)鍵器件的運(yùn)行狀態(tài)、環(huán)境參數(shù)狀態(tài),全面檢測(cè)并準(zhǔn)確識(shí)別系統(tǒng)中的異?,F(xiàn)象和故障,給出相對(duì)精準(zhǔn)的診斷結(jié)論,輔助人工高效排查并解決問題,對(duì)系統(tǒng)中潛在故障能夠及時(shí)準(zhǔn)確預(yù)報(bào)。本文提出一種維護(hù)故障邊緣診斷系統(tǒng)來滿足數(shù)E 級(jí)高性能計(jì)算機(jī)系統(tǒng)的以上需求。
維護(hù)故障診斷系統(tǒng)以軟件開發(fā)為主,智能化只能在一定程度上促進(jìn)局部高效性,硬件系統(tǒng)部件眾多、結(jié)構(gòu)復(fù)雜,診斷系統(tǒng)要實(shí)現(xiàn)異常故障的實(shí)時(shí)檢測(cè)、診斷及預(yù)測(cè),需要從總體架構(gòu)開始進(jìn)行系統(tǒng)級(jí)優(yōu)化,結(jié)合全機(jī)維護(hù)系統(tǒng)硬件結(jié)構(gòu)進(jìn)行合理設(shè)計(jì)。
設(shè)計(jì)實(shí)現(xiàn)高效、高可擴(kuò)展性的診斷系統(tǒng)總體框架,將其各功能模塊的各個(gè)部分合理分布在維護(hù)系統(tǒng)內(nèi),分級(jí)管理是高性能計(jì)算系統(tǒng)中最為簡(jiǎn)潔有效的通用管理思想。
基于組裝結(jié)構(gòu)的維護(hù)系統(tǒng)整體硬件架構(gòu)如圖1所示。左半部分為神威E 級(jí)原型機(jī)系統(tǒng)的組裝結(jié)構(gòu)。眾多節(jié)點(diǎn)位于不同的物理層次上,若干節(jié)點(diǎn)組成插件,若干插件組成超節(jié)點(diǎn),若干超節(jié)點(diǎn)最后組成了系統(tǒng)。右半部分分級(jí)的維護(hù)系統(tǒng)依據(jù)組裝結(jié)構(gòu)分別在插件級(jí)、超節(jié)點(diǎn)級(jí)以及系統(tǒng)級(jí)實(shí)現(xiàn)硬件分級(jí)管理,發(fā)揮“超級(jí)管家”的功能。一級(jí)維護(hù)是插件級(jí)維護(hù),向下直接面向多種底層關(guān)鍵芯片及器件,通過各種硬件協(xié)議獲取底層硬件信息;二級(jí)維護(hù)為超節(jié)點(diǎn)級(jí)維護(hù),是數(shù)據(jù)的匯集地及分散地,向下與若干插件之間進(jìn)行高效數(shù)據(jù)交換,向上與三級(jí)維護(hù)進(jìn)行數(shù)據(jù)交換;三級(jí)維護(hù)為系統(tǒng)級(jí)維護(hù),是系統(tǒng)管理員及用戶獲取系統(tǒng)信息的接口,向下與二級(jí)維護(hù)之間進(jìn)行數(shù)據(jù)交換。耦合硬件系統(tǒng)的這種分級(jí)架構(gòu)實(shí)現(xiàn)層次化的維護(hù)架構(gòu),有利于支撐軟件實(shí)現(xiàn)信息數(shù)據(jù)的高效傳輸,包括向上匯集以及向下分發(fā)。
圖1 組裝結(jié)構(gòu)及維護(hù)系統(tǒng)硬件架構(gòu)Fig.1 Assembly structure and maintenance system hardware architecture
基于以上三級(jí)維護(hù)硬件架構(gòu)的特點(diǎn),本文提出邊緣診斷架構(gòu)設(shè)計(jì),將檢測(cè)、診斷及預(yù)測(cè)的行為本地化,部署在獲取相應(yīng)硬件信息最近的地方。各功能模塊按照?qǐng)?zhí)行效率及執(zhí)行范圍分布到各級(jí)維護(hù)的嵌入式系統(tǒng)上。對(duì)硬件數(shù)據(jù)的采集、插件級(jí)異常檢測(cè)、插件級(jí)故障診斷及預(yù)測(cè)放在離節(jié)點(diǎn)最近的一級(jí)維護(hù)嵌入式系統(tǒng)上運(yùn)行,超節(jié)點(diǎn)級(jí)異常檢測(cè)、故障診斷及預(yù)測(cè)運(yùn)行在二級(jí)維護(hù)嵌入式系統(tǒng)上,系統(tǒng)級(jí)跨超節(jié)點(diǎn)的檢測(cè)、診斷、預(yù)測(cè)、系統(tǒng)級(jí)數(shù)據(jù)的應(yīng)用以及用戶接口均運(yùn)行在三級(jí)維護(hù)嵌入式系統(tǒng)上,每一級(jí)維護(hù)嵌入式系統(tǒng)上都有各自的數(shù)據(jù)庫,前兩級(jí)維護(hù)中的數(shù)據(jù)同時(shí)匯入上一級(jí)數(shù)據(jù)庫。維護(hù)故障診斷系統(tǒng)框架如圖2 所示。
圖2 維護(hù)故障診斷系統(tǒng)框架Fig.2 Framework of maintenance fault diagnosis system
維護(hù)故障診斷系統(tǒng)框架的運(yùn)行情況總體來看是一級(jí)維護(hù)層并行采集系統(tǒng)硬件信息,經(jīng)過計(jì)算分析處理后,將各自結(jié)果并行發(fā)往各自的二級(jí)維護(hù),二級(jí)維護(hù)層在完成本級(jí)分析匯總后將結(jié)果并行發(fā)往三級(jí)維護(hù),三級(jí)維護(hù)層完成系統(tǒng)級(jí)分析后,綜合一二級(jí)維護(hù)層的結(jié)果信息入庫,最上層的管理員及用戶可以隨時(shí)從該數(shù)據(jù)庫中獲取整個(gè)系統(tǒng)的故障檢測(cè)診斷及預(yù)測(cè)情況。理論上,用戶獲取整個(gè)系統(tǒng)信息的時(shí)間基本等同于直接訪問第三級(jí)數(shù)據(jù)庫的時(shí)間,系統(tǒng)運(yùn)行效率與規(guī)模無關(guān),具有較高的可擴(kuò)展性。
維護(hù)故障診斷系統(tǒng)總體結(jié)構(gòu)及流程如圖3所示。
圖3 維護(hù)故障診斷系統(tǒng)功能結(jié)構(gòu)及流程Fig.3 Maintenance fault diagnosis system functional structure and procedure
一級(jí)維護(hù)以10 s 為周期進(jìn)行采集操作,數(shù)據(jù)信息進(jìn)入異常檢測(cè)模塊后,將可明確反映出異常及故障的數(shù)據(jù)交由異常檢測(cè)規(guī)則庫進(jìn)行處理,規(guī)則庫結(jié)合歷史信息及系統(tǒng)配置信息輸出明確的異常及故障信息;需要經(jīng)過數(shù)據(jù)挖掘處理的關(guān)鍵異常信息,則由異常檢測(cè)算法庫調(diào)用相應(yīng)算法進(jìn)行異常及故障信息的檢測(cè),算法輸出的異常及故障均為疑似異常和疑似故障。
確定性異常和疑似異常均需要經(jīng)過異常過濾接口才能進(jìn)入待診斷狀態(tài)。異常過濾接口的作用是過濾掉不需要被診斷的異常,包含兩種情況:一種是通過外部打標(biāo)接口確認(rèn)不需要關(guān)注的異常;另一種是已經(jīng)被診斷過但因未被處理仍然在報(bào)的異常。
過濾后的待診斷信息進(jìn)入故障診斷模塊,故障診斷模塊由故障診斷規(guī)則庫、故障診斷推導(dǎo)樹及專用神經(jīng)網(wǎng)絡(luò)故障診斷模型組成。
規(guī)則庫和推導(dǎo)樹均基于領(lǐng)域內(nèi)專家知識(shí)圖譜建立,規(guī)則庫里故障及根因有比較明確的對(duì)應(yīng)關(guān)系或經(jīng)簡(jiǎn)單推理即可,推導(dǎo)樹的邏輯比規(guī)則庫復(fù)雜,要結(jié)合多種數(shù)據(jù)信息多次聯(lián)合推導(dǎo),診斷模塊中會(huì)有若干故障推導(dǎo)樹。
用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練診斷模型的樣本,部分來源于系統(tǒng)在模擬驗(yàn)證階段的故障信息,其他則基于專家知識(shí)模擬,該模型在三級(jí)維護(hù)系統(tǒng)上訓(xùn)練,在一級(jí)維護(hù)系統(tǒng)上運(yùn)行,系統(tǒng)內(nèi)可以有多個(gè)診斷模型。
待診斷信息在經(jīng)過規(guī)則庫后,或者直接獲取故障根因,或者根據(jù)規(guī)則庫中的標(biāo)記進(jìn)入推導(dǎo)樹或調(diào)用診斷模型。獲取到故障根因后進(jìn)入故障定位,故障定位的功能有3 個(gè):明確故障發(fā)生部件;根據(jù)對(duì)系統(tǒng)及應(yīng)用的影響程度確定故障等級(jí);結(jié)合根因結(jié)果定位可替換故障單元。
異常檢測(cè)及故障診斷算法除了分布在一級(jí)維護(hù)上,還分布在二級(jí)和三級(jí)維護(hù)上。二級(jí)和三級(jí)維護(hù)系統(tǒng)上駐留的算法是利用各級(jí)結(jié)構(gòu)知識(shí)和系統(tǒng)配置信息,分別進(jìn)行中板級(jí)和系統(tǒng)級(jí)數(shù)據(jù)的對(duì)比檢測(cè)、診斷。
故障預(yù)測(cè)算法駐留在一級(jí)維護(hù)系統(tǒng)中,針對(duì)幾種場(chǎng)景設(shè)計(jì),每隔1 min 對(duì)庫中當(dāng)前時(shí)刻前3 min 內(nèi)相關(guān)數(shù)據(jù)進(jìn)行計(jì)算。
結(jié)構(gòu)信息、配置信息、采集信息、檢測(cè)信息、診斷信息、預(yù)測(cè)信息均記入相應(yīng)層級(jí)的數(shù)據(jù)庫中,一級(jí)數(shù)據(jù)庫中的信息會(huì)同時(shí)記入二級(jí)數(shù)據(jù)庫,一級(jí)數(shù)據(jù)庫保留兩周內(nèi)插件級(jí)的信息,二級(jí)數(shù)據(jù)庫會(huì)同時(shí)記入三級(jí)數(shù)據(jù)庫,二級(jí)數(shù)據(jù)庫保留兩周內(nèi)中板級(jí)信息,三級(jí)數(shù)據(jù)庫保留整個(gè)系統(tǒng)至少三個(gè)月內(nèi)的信息。
1.2 節(jié)中研究表明,通過機(jī)器學(xué)習(xí)進(jìn)行故障診斷的方法目前大都仍處于實(shí)驗(yàn)研究階段,本次維護(hù)故障診斷系統(tǒng)的設(shè)計(jì)目標(biāo)要求設(shè)計(jì)內(nèi)容在工程中取得較好實(shí)際效果,所以,通過機(jī)器學(xué)習(xí)建立模型的方式不是本次設(shè)計(jì)的主要選用技術(shù),但因其具有較大的應(yīng)用前景,本文系統(tǒng)中也做了一些設(shè)計(jì)為后續(xù)該技術(shù)的使用做準(zhǔn)備,具體包括:1)以存儲(chǔ)顆粒故障診斷為切入點(diǎn),用神經(jīng)網(wǎng)絡(luò)進(jìn)行模型訓(xùn)練;2)在系統(tǒng)級(jí)的三級(jí)維護(hù)數(shù)據(jù)庫中,為探索神經(jīng)網(wǎng)絡(luò)方式進(jìn)行異常檢測(cè)及故障診斷保存積累樣本,設(shè)計(jì)打標(biāo)接口對(duì)樣本故障根因進(jìn)行反饋標(biāo)注。
異常檢測(cè)模塊對(duì)高性能計(jì)算機(jī)維護(hù)系統(tǒng)管理的所有芯片、部件的各種運(yùn)行狀態(tài)、環(huán)境參數(shù)進(jìn)行周期性采集,運(yùn)用規(guī)則算法對(duì)數(shù)據(jù)進(jìn)行全面的異常及故障檢測(cè),過濾噪點(diǎn)及誤報(bào)信息,提取比較確定的異常及故障信息。
在故障檢測(cè)模塊中設(shè)計(jì)若干異常檢測(cè)算法,在調(diào)用算法前根據(jù)數(shù)據(jù)指標(biāo)特征設(shè)計(jì)算法選擇器,最后將得到的疑似異常進(jìn)行過濾后提供給故障診斷子系統(tǒng)。過濾的方式初期主要依賴三級(jí)管理上的相應(yīng)接口,該接口接受專業(yè)人員對(duì)異常進(jìn)行確認(rèn)標(biāo)記,然后將標(biāo)記發(fā)往一級(jí)維護(hù),中后期對(duì)積累的帶標(biāo)數(shù)據(jù)建立規(guī)則或進(jìn)行神經(jīng)網(wǎng)絡(luò)模型的學(xué)習(xí),定期將過濾規(guī)則及模型更新至一級(jí)維護(hù)。
具體到異常檢測(cè)算法設(shè)計(jì),雖然異常數(shù)據(jù)檢測(cè)有各種理論支撐的多種技術(shù)手段,但在高性能計(jì)算硬件系統(tǒng)異常檢測(cè)領(lǐng)域,執(zhí)行效率尤為重要,需考慮龐大的處理信息,以及對(duì)維護(hù)系統(tǒng)計(jì)算資源的消耗,算法的設(shè)計(jì)不宜復(fù)雜。所以,本文設(shè)計(jì)中仍圍繞被實(shí)踐證明落地有效、執(zhí)行效率最高的專家知識(shí)設(shè)計(jì),以及用各種理論支撐的算法輔助實(shí)現(xiàn)專家知識(shí)算法化、智能化。
異常檢測(cè)的首要工作是確定被采集的指標(biāo)向量。例如環(huán)境參數(shù)指標(biāo)向量應(yīng)包括各級(jí)溫度、電壓、電流、板級(jí)漏水等,針對(duì)關(guān)鍵芯片器件的指標(biāo)向量應(yīng)包含各種反映其運(yùn)行情況的寄存器信息,針對(duì)系統(tǒng)內(nèi)一些嵌入式系統(tǒng)的指標(biāo)向量應(yīng)包含其關(guān)鍵服務(wù)的運(yùn)行狀態(tài)、服務(wù)響應(yīng)時(shí)間、CPU 使用率、內(nèi)存占用率、日志增長(zhǎng)速度、磁盤占用率等。由于硬件信號(hào)質(zhì)量問題及錯(cuò)誤狀態(tài)瞬時(shí)性特點(diǎn),異常很難被采集到,軟件手段的檢測(cè)只能不斷接近,永遠(yuǎn)無法做到真正意義的全面檢測(cè),這是異常檢測(cè)的難點(diǎn)。
為提升檢測(cè)的全面性及準(zhǔn)確性,與上一代故障診斷系統(tǒng)相比,主要增加的設(shè)計(jì)方法有以下5 點(diǎn):
1)通過硬件設(shè)計(jì)實(shí)現(xiàn)密集數(shù)據(jù)采集。增加信息采集次數(shù)能夠獲取更多的信息,是提升檢測(cè)全面性及準(zhǔn)確性最直接的手段。目前系統(tǒng)內(nèi)采集周期為10 s,不宜再通過軟件的手段直接縮短采集周期,原因主要有:采集程序所在嵌入式平臺(tái)上運(yùn)行的服務(wù)較多,采集程序頻繁采集數(shù)據(jù)會(huì)影響關(guān)鍵服務(wù)的服務(wù)能力;后續(xù)的檢測(cè)診斷等信息要在采集周期內(nèi)完成,需要留足夠的時(shí)間。本文設(shè)計(jì)提出由底層硬件進(jìn)行適當(dāng)?shù)木彌_設(shè)計(jì),硬件每隔1~2 s 將自身關(guān)鍵信息進(jìn)行自動(dòng)保存,在軟件采集時(shí),一次性將軟件采集周期內(nèi)緩存的若干數(shù)據(jù)送出。
2)濾除毛刺,提升檢測(cè)準(zhǔn)確率。為追求簡(jiǎn)單和效率,高性能計(jì)算系統(tǒng)內(nèi)通常用恒定閾值的方式檢測(cè)異常,硬件信號(hào)噪點(diǎn)或毛刺也會(huì)引起單點(diǎn)閾值異常。為解決上一代檢測(cè)系統(tǒng)出現(xiàn)的誤報(bào)問題,設(shè)計(jì)以下2 種方式:
(1)多指標(biāo)聯(lián)合判斷。認(rèn)為系統(tǒng)中一個(gè)真正的異常及故障必然會(huì)引發(fā)或伴隨其他與之相關(guān)的異常,對(duì)檢測(cè)出的某異常指標(biāo),結(jié)合必然受其影響的指標(biāo)或與其有較強(qiáng)相關(guān)性的指標(biāo)校驗(yàn)結(jié)果,如果該指標(biāo)異常是唯一異常,即認(rèn)為本次數(shù)據(jù)為誤報(bào)。
(2)推遲判斷。在前面周期內(nèi)檢測(cè)到異常時(shí)先打標(biāo)記,若后續(xù)若干周期內(nèi)檢測(cè)到異常的次數(shù)超過n,則記為異常,否則忽略掉。
上述兩種方式按照指標(biāo)誤報(bào)的特點(diǎn)可單獨(dú)使用,在某些情況下,必須結(jié)合起來使用才更準(zhǔn)確全面。比如,在檢測(cè)出某芯片電壓數(shù)據(jù)單點(diǎn)超閾值后,用第1 種方式等待芯片其他指標(biāo)的異常檢測(cè)算法調(diào)用完畢后聯(lián)合判斷,如果其他指標(biāo)均正常,那么判斷該單點(diǎn)電壓異常就被忽略掉,因?yàn)樵撾妷翰]有引發(fā)任何芯片異常,芯片依然在正常運(yùn)行中,隨后的周期內(nèi)第1 種方式均做出忽略該異常的判斷。但同時(shí)第2 種方式也在隨后周期內(nèi)檢測(cè)到電壓數(shù)據(jù)異常次數(shù)超過n,那么這個(gè)頻頻誤報(bào)的電壓異?,F(xiàn)象就不應(yīng)該被忽略,因?yàn)楹芸赡芤馕吨娫葱酒写嬖趩栴},其流程如圖4 所示。
圖4 消除誤報(bào)數(shù)據(jù)的算法流程Fig.4 The algorithm procedure of eliminating false positive data
3)建立關(guān)鍵部件的故障樹。故障樹是專家知識(shí)最集中的體現(xiàn),主要由負(fù)責(zé)硬件設(shè)計(jì)專家及運(yùn)維專家共同構(gòu)建。系統(tǒng)為所有待檢測(cè)部件按類構(gòu)建各自的故障樹。故障樹的根是該硬件的總體狀態(tài),節(jié)點(diǎn)由該硬件配置參數(shù)、反映該硬件各級(jí)部件的記錄故障情況和運(yùn)行狀態(tài)情況寄存器組成。故障樹能實(shí)現(xiàn)對(duì)硬件器件的快速異常檢測(cè),從器件總狀態(tài)到具體部件狀態(tài),再到部件內(nèi)某類異常甚至某子類異常。與上一代僅對(duì)處理器芯片建立故障樹相比,減少了其他器件大量冗余信息的采集,提高了處理效率,檢測(cè)系統(tǒng)的邏輯結(jié)構(gòu)也更為清晰。故障樹異常檢測(cè)算法在定義好樹根之下各節(jié)點(diǎn)之間的關(guān)系后,則樹形查找的算法本身非常簡(jiǎn)潔。
4)利用系統(tǒng)結(jié)構(gòu)信息和配置信息帶來的數(shù)據(jù)關(guān)聯(lián)性進(jìn)行異常檢測(cè)。這也是本文設(shè)計(jì)與上一代診斷系統(tǒng)相比新增加的設(shè)計(jì)。在高性能計(jì)算機(jī)系統(tǒng)中,每個(gè)部件都有大量同類,本文提出如下異常檢測(cè)理論:如果數(shù)據(jù)來自生存環(huán)境類似或者使用場(chǎng)景類似的同類部件,那么反映這些部件相應(yīng)特征向量的數(shù)據(jù)具有近似性。例如,位于同一冷板下并運(yùn)行同一個(gè)作業(yè)的CPU 芯片的溫度值和功耗值理論上應(yīng)該接近,如果某個(gè)芯片溫度或功耗明顯較高,就被檢測(cè)認(rèn)為疑似異常。
除了對(duì)相同系統(tǒng)結(jié)構(gòu)以及相同配置下的數(shù)據(jù)進(jìn)行類比檢測(cè)外,系統(tǒng)中還對(duì)具有明確預(yù)期的場(chǎng)景,保存其正常狀態(tài)數(shù)據(jù)建模,用于與實(shí)際相同場(chǎng)景下的數(shù)據(jù)進(jìn)行類比,比如保存某特定類型課題跑題時(shí)的特征觀測(cè)向量的數(shù)據(jù),在系統(tǒng)中再次運(yùn)行該類型課題時(shí),采集到的相應(yīng)數(shù)據(jù)應(yīng)該與保存的數(shù)據(jù)具有近似性。
該類算法設(shè)計(jì)也非常簡(jiǎn)潔,只要計(jì)算待檢測(cè)數(shù)據(jù)與同類該數(shù)據(jù)的期望之差,對(duì)差值調(diào)用閾值判定即可。
5)維護(hù)嵌入式系統(tǒng)的異常檢測(cè)。維護(hù)嵌入式系統(tǒng)是整個(gè)維護(hù)軟件系統(tǒng)運(yùn)行的主要平臺(tái),該平臺(tái)主要有負(fù)責(zé)系統(tǒng)開工及實(shí)現(xiàn)各硬件維護(hù)接口的維護(hù)服務(wù)、故障檢測(cè)、診斷、預(yù)測(cè)、各種驅(qū)動(dòng)及固件、數(shù)據(jù)庫、文件更新引擎以及各種守護(hù)進(jìn)程,平臺(tái)的異常和故障對(duì)系統(tǒng)影響重大,所以在這一代故障診斷系統(tǒng)中加入對(duì)維護(hù)嵌入式系統(tǒng)的異常檢測(cè)設(shè)計(jì)。維護(hù)嵌入式系統(tǒng)的異常檢測(cè)指標(biāo)依據(jù)實(shí)際需求設(shè)定,包括關(guān)鍵服務(wù)程序及文件的版本檢查、各程序的響應(yīng)速率、各種日志增長(zhǎng)速度、系統(tǒng)網(wǎng)絡(luò)通信狀況、CPU 及內(nèi)存使用率、磁盤占用率等。
維護(hù)嵌入式系統(tǒng)主要用到兩類異常檢測(cè)算法:
(1)響應(yīng)速率類指標(biāo)的異常檢測(cè)算法。先計(jì)算周期性采集信息中發(fā)出命令包和收到返回包之間的時(shí)間間隔,然后按平穩(wěn)性數(shù)據(jù)異常檢測(cè)算法即多次均值超閾值來上報(bào)異常,算法流程如圖5 所示。對(duì)連續(xù)三次掃描的響應(yīng)時(shí)間取均值,將響應(yīng)時(shí)間從T空間轉(zhuǎn)換到E空間,q為閾值,E空間值大于q,上報(bào)響應(yīng)速率異常。
圖5 響應(yīng)速率異常檢測(cè)算法流程Fig.5 Procedure of response rate anomaly detection algorithm
(2)增長(zhǎng)速度類指標(biāo)的異常檢測(cè)算法。將每次取得的數(shù)值與前一次求差值,將其轉(zhuǎn)換到新的空間,然后在該空間用平穩(wěn)性數(shù)據(jù)異常檢測(cè)算法上報(bào)異常。
異常故障檢測(cè)子系統(tǒng)報(bào)出的所有非確定性異常需要再次經(jīng)專家打標(biāo)過濾確認(rèn)后,才能提供給故障診斷模塊。
故障診斷模塊對(duì)故障檢測(cè)模塊中輸出的確定性異常及故障進(jìn)行定位、根因分析、確定故障等級(jí)。故障定位明確出異常和故障發(fā)生的部件位置,根因分析挖掘異常和故障的根本原因,故障等級(jí)對(duì)異常故障在部件或系統(tǒng)中造成影響的輕重程度進(jìn)行定性。本文討論的故障診斷系統(tǒng)仍屬于在線診斷范疇,對(duì)于一些需要借助萬用表、示波器等儀器進(jìn)行信號(hào)質(zhì)量測(cè)量和需要交叉定位的故障,僅能根據(jù)數(shù)據(jù)現(xiàn)象給出中間性診斷結(jié)論。
故障定位的信息一般情況下已經(jīng)包含在故障檢測(cè)信息中,異常和故障是從哪里采集并檢測(cè)到的,診斷系統(tǒng)僅需提取相應(yīng)位置即可。
確定故障等級(jí)可以從多角度劃分,高性能計(jì)算領(lǐng)域一般傾向于按照對(duì)作業(yè)的影響程度劃分。上一代故障診斷系統(tǒng)分為三類故障:不影響作業(yè)運(yùn)行為一級(jí)故障,影響部分作業(yè)運(yùn)行為二級(jí)故障,所有作業(yè)均不能運(yùn)行為三級(jí)故障。在實(shí)際使用中,專業(yè)人員希望從故障等級(jí)上更直觀地獲取信息,本文設(shè)計(jì)中將故障等級(jí)分為六級(jí):一級(jí)故障,作業(yè)運(yùn)行過程中發(fā)生的各種異常告警;二級(jí)故障,作業(yè)運(yùn)行過程中發(fā)生的可糾錯(cuò);三級(jí)故障,作業(yè)運(yùn)行中的偶發(fā)錯(cuò),作業(yè)再次運(yùn)行后故障有可能不會(huì)再現(xiàn);四級(jí)故障,影響個(gè)別作業(yè),一般是芯片的某部件故障,只有用到該部件的作業(yè)會(huì)被影響,其他作業(yè)不受影響;五級(jí)故障,影響經(jīng)過該故障單點(diǎn)的所有作業(yè);六級(jí)故障,影響面較大,發(fā)生后,如果不立即處理,會(huì)影響其他點(diǎn)正常運(yùn)行,甚至所有作業(yè)都無法進(jìn)行,如漏水、掉電、堵網(wǎng)以及導(dǎo)致本級(jí)維護(hù)系統(tǒng)掛死等。這種劃分方式專業(yè)度較高,需要對(duì)故障本身有深入的認(rèn)識(shí)。
在上一代基礎(chǔ)上,根因分析功能增加了故障推導(dǎo)樹,主要有以下3 類:
1)以原因比較復(fù)雜的故障現(xiàn)象為根,如堵網(wǎng)故障推導(dǎo)樹等。
2)以部件為根,如某核心芯片故障推導(dǎo)樹、某器件故障推導(dǎo)樹、某板級(jí)故障推導(dǎo)樹。
3)以指定診斷角度為根,如性能異常推導(dǎo)樹、物理環(huán)境異常推導(dǎo)樹、系統(tǒng)級(jí)異常推導(dǎo)樹等。
故障推導(dǎo)樹可以自動(dòng)診斷分支較多、原因復(fù)雜的故障,并接受外部打標(biāo)的帶目的性的診斷請(qǐng)求。
一級(jí)、二級(jí)、三級(jí)管理中均增加了結(jié)合系統(tǒng)結(jié)構(gòu)及系統(tǒng)配置信息的故障診斷設(shè)計(jì),其流程如圖6 所示。算法思想是:如果在對(duì)結(jié)構(gòu)信息及配置信息數(shù)據(jù)進(jìn)行聚類后的結(jié)果中,某配置信息聚類結(jié)果與某指標(biāo)對(duì)故障點(diǎn)和正常點(diǎn)的分類一致,那么該配置項(xiàng)大概率就是該指標(biāo)異常的根因。例如在全機(jī)范圍內(nèi)檢測(cè)到多個(gè)點(diǎn)的某同一指標(biāo)異常,通過算法結(jié)合配置信息后,發(fā)現(xiàn)這些異常屬同一個(gè)器件的同一個(gè)生產(chǎn)批次,那么診斷意見就是該批次器件質(zhì)量問題;再如,異?,F(xiàn)象為系統(tǒng)中若干網(wǎng)絡(luò)端口的某寄存器均發(fā)生溢出,算法結(jié)合系統(tǒng)結(jié)構(gòu)信息,發(fā)現(xiàn)這些網(wǎng)絡(luò)端口均與網(wǎng)絡(luò)中某異常網(wǎng)絡(luò)插件相連,那么這些網(wǎng)絡(luò)端口異常的診斷意見就是由該網(wǎng)絡(luò)插件的異常所導(dǎo)致等。
圖6 診斷算法流程Fig.6 Procedure of diagnostic algorithm
本次故障診斷設(shè)計(jì)中增加了神經(jīng)網(wǎng)絡(luò)的診斷方式,考慮到系統(tǒng)內(nèi)存儲(chǔ)顆粒因?yàn)槠鋽?shù)量巨大,相對(duì)而言在系統(tǒng)中的故障率不算低,影響也比較大,設(shè)計(jì)使用神經(jīng)網(wǎng)絡(luò)的方式對(duì)存儲(chǔ)顆粒故障進(jìn)行診斷具有實(shí)踐價(jià)值。系統(tǒng)內(nèi)節(jié)點(diǎn)眾多,每個(gè)節(jié)點(diǎn)均有數(shù)十存儲(chǔ)顆粒,顆粒上的故障根因有可能是計(jì)算節(jié)點(diǎn)的問題,也有可能是顆粒本身的問題,或者是顆粒附近參考電壓的問題,具體是哪路參考電壓則和顆粒的位置相關(guān)。在該問題上維修反饋的信息顯示,專家診斷結(jié)果的準(zhǔn)確率約為75%,故設(shè)計(jì)使用神經(jīng)網(wǎng)絡(luò)的方式,理論上結(jié)合正確標(biāo)簽樣本的訓(xùn)練模型能提高對(duì)存儲(chǔ)顆粒故障診斷的準(zhǔn)確率。設(shè)計(jì)中依據(jù)專家診斷存儲(chǔ)顆粒根因的經(jīng)驗(yàn)知識(shí),選取相關(guān)寄存器及顆粒位置形成若干輸入特征向量,結(jié)合幾種可能的根因標(biāo)簽補(bǔ)充樣本,再加入返修打標(biāo)的實(shí)際故障樣本(返修會(huì)按有效返修手段標(biāo)注根因,該根因有可能和返修前的診斷意見并不一致)進(jìn)行分類器模型訓(xùn)練,訓(xùn)練好的模型可以直接用于顆粒故障診斷。
故障預(yù)測(cè)模塊在系統(tǒng)正常運(yùn)行的情況下,通過對(duì)來自檢測(cè)模塊的歷史數(shù)據(jù)進(jìn)行持續(xù)分析,對(duì)未來一段時(shí)間內(nèi)系統(tǒng)發(fā)生故障的可能性和發(fā)生故障的類型進(jìn)行預(yù)判。其現(xiàn)實(shí)意義是在系統(tǒng)發(fā)生故障前,通過提前調(diào)度等預(yù)防措施,避免故障的發(fā)生或者降低故障發(fā)生帶來的系統(tǒng)資源損失。
故障預(yù)測(cè)是維護(hù)故障診斷系統(tǒng)中新加入的功能。根據(jù)第2 節(jié)研究結(jié)果,設(shè)計(jì)了尋找指標(biāo)數(shù)據(jù)周期性及趨勢(shì)性的算法,利用周期性及趨勢(shì)性對(duì)指標(biāo)進(jìn)行預(yù)測(cè)。提高預(yù)測(cè)準(zhǔn)確率是該故障診斷系統(tǒng)的首要設(shè)計(jì)目標(biāo)。預(yù)測(cè)子系統(tǒng)的主體部分是針對(duì)一些專家已知的預(yù)測(cè)知識(shí)建立規(guī)則,對(duì)常用的場(chǎng)景建立預(yù)測(cè)模型。例如系統(tǒng)在進(jìn)行專業(yè)測(cè)試時(shí),對(duì)不同規(guī)模資源的正常功耗曲線進(jìn)行建模,利用獲取的數(shù)據(jù)計(jì)算實(shí)時(shí)功耗,進(jìn)行曲線擬合,發(fā)現(xiàn)異常即進(jìn)行預(yù)測(cè)報(bào)警。
為使故障預(yù)測(cè)取得更多更好的實(shí)際效果,主要設(shè)計(jì)了2 種預(yù)測(cè)算法:
1)基于數(shù)據(jù)的趨勢(shì)性進(jìn)行預(yù)測(cè)。算法持續(xù)對(duì)時(shí)間間隔t內(nèi)采集到的數(shù)據(jù)計(jì)算均值、…,檢測(cè)到均值的增長(zhǎng)趨勢(shì)后,開始計(jì)算增長(zhǎng)速度,然后計(jì)算在該速度下超報(bào)警閾值的時(shí)間。
2)基于已知的故障模型進(jìn)行預(yù)測(cè)。如圖7 所示,該算法針對(duì)某場(chǎng)景預(yù)測(cè)s時(shí)間后將發(fā)生某故障,算法首先要對(duì)該場(chǎng)景的故障現(xiàn)場(chǎng)進(jìn)行建模,如果故障時(shí)間為f時(shí)刻,建模選取f-s時(shí)刻前的一段t時(shí)間內(nèi)的數(shù)據(jù),保存其變化曲線。在預(yù)測(cè)時(shí),將實(shí)際運(yùn)行中t時(shí)間內(nèi)數(shù)據(jù)的變化曲線與保存的變化曲線進(jìn)行相似度對(duì)比,在發(fā)現(xiàn)較高相似度的周期中,預(yù)報(bào)s時(shí)間后會(huì)發(fā)生故障。
圖7 基于已知故障預(yù)測(cè)模型Fig.7 Prediction model based on known faults
本文實(shí)驗(yàn)部分用到兩個(gè)環(huán)境,分別為神威·太湖之光及神威E 級(jí)原型機(jī),其中神威E 級(jí)原型機(jī)為主要實(shí)驗(yàn)環(huán)境。在該E 級(jí)原型機(jī)上,對(duì)上一節(jié)給出的邊緣診斷系統(tǒng)進(jìn)行了實(shí)驗(yàn)和驗(yàn)證測(cè)試,并與神威·太湖之光維護(hù)故障診斷系統(tǒng)進(jìn)行了比較。
神威·太湖之光(下文簡(jiǎn)稱太湖之光)超級(jí)計(jì)算機(jī)是由國家并行計(jì)算機(jī)工程技術(shù)研究中心研制,安裝在國家超級(jí)計(jì)算無錫中心的超級(jí)計(jì)算機(jī)。太湖之光超級(jí)計(jì)算機(jī)峰值性能達(dá)到125.436 PFLOPS,系統(tǒng)內(nèi)有160 個(gè)運(yùn)算超節(jié)點(diǎn),每個(gè)超節(jié)點(diǎn)有32 塊插件,每個(gè)插件上有8 個(gè)運(yùn)算節(jié)點(diǎn),系統(tǒng)由40 960 個(gè)運(yùn)算節(jié)點(diǎn)構(gòu)成。插件上BMC 系統(tǒng)僅提供基礎(chǔ)維護(hù)服務(wù)及數(shù)據(jù)采集,診斷系統(tǒng)駐留在維護(hù)管理服務(wù)器上,由維護(hù)管理服務(wù)器發(fā)起對(duì)指定目標(biāo)的診斷流程。
神威E 級(jí)原型機(jī)(下文簡(jiǎn)稱E 級(jí)原型機(jī))部署在國家超級(jí)計(jì)算(神威)中心,是繼神威藍(lán)光、太湖之光之后神威家族的第三代計(jì)算機(jī),該計(jì)算機(jī)作為一臺(tái)E 級(jí)計(jì)算機(jī)的原型機(jī),峰值性能為3.13 PFLOPS。系統(tǒng)由512個(gè)運(yùn)算節(jié)點(diǎn)構(gòu)成,運(yùn)算節(jié)點(diǎn)為雙節(jié)點(diǎn)結(jié)構(gòu)。E 級(jí)原型機(jī)采用層次化的組裝結(jié)構(gòu),維護(hù)故障診斷系統(tǒng)按照本文設(shè)計(jì)的架構(gòu)部署。一級(jí)維護(hù)分布在256 塊插件上,每個(gè)插件負(fù)責(zé)2 個(gè)運(yùn)算節(jié)點(diǎn),二級(jí)維護(hù)由4 個(gè)超節(jié)點(diǎn)維護(hù)板組成,每個(gè)超節(jié)點(diǎn)維護(hù)板負(fù)責(zé)64 個(gè)插件,三級(jí)維護(hù)是一臺(tái)2.2 GHz、40核、256 GB 內(nèi)存、千兆以太網(wǎng)48T 磁盤的維護(hù)管理服務(wù)器,與4 個(gè)二級(jí)維護(hù)交互信息。
在E 級(jí)原型機(jī)系統(tǒng)及太湖之光上,設(shè)計(jì)如下兩個(gè)實(shí)驗(yàn):
1)實(shí)驗(yàn)1 目的是觀察該維護(hù)診斷架構(gòu)在E 級(jí)原型機(jī)上的執(zhí)行效率。
在E 級(jí)原型機(jī)系統(tǒng)上,針對(duì)系統(tǒng)中256 個(gè)一級(jí)維護(hù),在每個(gè)一級(jí)維護(hù)所負(fù)責(zé)的4 個(gè)運(yùn)算節(jié)點(diǎn)上隨機(jī)挑選兩個(gè)節(jié)點(diǎn),進(jìn)行人為造錯(cuò),在三級(jí)維護(hù)上觀察并記錄異常檢測(cè)及故障診斷的耗時(shí)為0.83 s。
在太湖之光系統(tǒng)中選取同樣結(jié)構(gòu)的1 024 個(gè)運(yùn)算節(jié)點(diǎn),用同樣方法造錯(cuò),結(jié)果顯示耗時(shí)為21.4 s。
造成以上響應(yīng)時(shí)間差異的根本原因在于:太湖之光的檢測(cè)及診斷信息是從第三級(jí)管理服務(wù)器上逐級(jí)向下分發(fā)多線程,對(duì)每個(gè)節(jié)點(diǎn)執(zhí)行檢測(cè)及診斷流程。在診斷流程的執(zhí)行過程中,底層的維護(hù)服務(wù)會(huì)因?yàn)橛布收系拇嬖趯?dǎo)致響應(yīng)時(shí)間過長(zhǎng),甚至只能等到超時(shí)返回,這些時(shí)間也都直接反映到了三級(jí)維護(hù)對(duì)故障診斷的響應(yīng)時(shí)間上。除了流程耗時(shí)外,信息通過網(wǎng)絡(luò)傳輸也需要耗時(shí)。而第3 節(jié)的總體架構(gòu)設(shè)計(jì)將最耗時(shí)的故障診斷功能分散在最接近底層的一級(jí)維護(hù)系統(tǒng)內(nèi),一級(jí)維護(hù)并發(fā)進(jìn)行周期性及時(shí)診斷,將數(shù)據(jù)及時(shí)發(fā)往二級(jí)和三級(jí)維護(hù)數(shù)據(jù)庫從而保證在任何時(shí)刻,三級(jí)維護(hù)數(shù)據(jù)庫中均為系統(tǒng)最近一個(gè)周期內(nèi)的信息。用戶或管理員直接從第三級(jí)數(shù)據(jù)庫中即可迅速獲取系統(tǒng)最新信息。
2)實(shí)驗(yàn)2 目的是評(píng)估該維護(hù)診斷架構(gòu)在十萬節(jié)點(diǎn)系統(tǒng)上的執(zhí)行效率。
根據(jù)E 級(jí)原型機(jī)的結(jié)構(gòu)組成,如果系統(tǒng)中有十萬個(gè)節(jié)點(diǎn),按照每個(gè)一級(jí)維護(hù)負(fù)責(zé)4 個(gè)節(jié)點(diǎn),每個(gè)二級(jí)維護(hù)對(duì)應(yīng)64 個(gè)一級(jí)維護(hù)來計(jì)算,系統(tǒng)中將會(huì)有大約25 000 個(gè)一級(jí)維護(hù),約400 個(gè)二級(jí)維護(hù)。
十萬節(jié)點(diǎn)系統(tǒng)與E級(jí)原型機(jī)系統(tǒng)關(guān)系如圖8所示。
圖8 兩種系統(tǒng)結(jié)構(gòu)的關(guān)系Fig.8 Relation of two system structures
從圖8 可以看出,從一級(jí)維護(hù)開始執(zhí)行檢測(cè)及診斷行為到結(jié)果送至三級(jí)維護(hù)數(shù)據(jù)庫,十萬節(jié)點(diǎn)系統(tǒng)與E 級(jí)原型機(jī)系統(tǒng)的主要差別在于t3時(shí)段,t1和t2時(shí)段均為并發(fā)執(zhí)行,幾乎與規(guī)模擴(kuò)展無關(guān)。
本文設(shè)計(jì)以下實(shí)驗(yàn)對(duì)比4 個(gè)二級(jí)維護(hù)與400 個(gè)二級(jí)維護(hù)t3的時(shí)間差異。
因E 級(jí)原型機(jī)與太湖之光均不具備400 個(gè)二級(jí)維護(hù)的條件,選擇模擬實(shí)驗(yàn)在太湖之光環(huán)境中選取400 個(gè)插件,將二級(jí)維護(hù)服務(wù)程序下沉到一級(jí)維護(hù)的嵌入式系統(tǒng)內(nèi),由400個(gè)一級(jí)維護(hù)模擬二級(jí)維護(hù),各自將256條二級(jí)維護(hù)信息發(fā)往三級(jí)維護(hù),記錄耗時(shí)為4.26 s。
同樣實(shí)驗(yàn)環(huán)境,依次模擬4、64、128、256以及512 個(gè)二級(jí)維護(hù),耗時(shí)分別為1.93、2.19、2.57、3.11 及5.07 s。
不同二級(jí)維護(hù)規(guī)模診斷信息匯入三級(jí)維護(hù)數(shù)據(jù)庫的時(shí)間變化趨勢(shì)如圖9 所示,據(jù)此可推測(cè)該架構(gòu)應(yīng)用于數(shù)E 量級(jí)的系統(tǒng),檢測(cè)診斷時(shí)間應(yīng)小于10 s,說明該架構(gòu)具有較好可擴(kuò)展性。
圖9 不同二級(jí)維護(hù)規(guī)模信息匯入三級(jí)數(shù)據(jù)庫的時(shí)間變化趨勢(shì)示意圖Fig.9 Schematic diagram of time change trend of different level II maintenance scale information entering level III database
實(shí)驗(yàn)數(shù)據(jù)顯示,十萬個(gè)節(jié)點(diǎn)(對(duì)應(yīng)400個(gè)二級(jí)維護(hù))系統(tǒng)中t3值僅比1 024 個(gè)節(jié)點(diǎn)(對(duì)應(yīng)4 個(gè)二級(jí)維護(hù))的系統(tǒng)多耗時(shí)數(shù)秒。對(duì)十萬個(gè)節(jié)點(diǎn)系統(tǒng)進(jìn)行檢測(cè)及診斷的執(zhí)行效率做如下估計(jì):因?yàn)閠1和t2與規(guī)模擴(kuò)展無關(guān),借用實(shí)驗(yàn)1 的數(shù)據(jù)0.83 s,得出t=t1+t2+t3=0.83+4.26=5.09 s,說明在一個(gè)執(zhí)行周期(10 s)內(nèi),十萬個(gè)節(jié)點(diǎn)信息完全能夠在三級(jí)維護(hù)數(shù)據(jù)庫中更新完成。而用戶通過訪問三級(jí)維護(hù)數(shù)據(jù)庫獲取這些信息的時(shí)間遠(yuǎn)小于t。據(jù)此推論,該架構(gòu)如果應(yīng)用于十萬個(gè)節(jié)點(diǎn)系統(tǒng)中,獲取最新檢測(cè)及診斷信息的時(shí)間在10 s 內(nèi)。
在太湖之光上對(duì)上萬節(jié)點(diǎn)(大約50 個(gè)二級(jí)維護(hù))系統(tǒng)維護(hù)耗時(shí)達(dá)數(shù)分鐘,新的架構(gòu)將該性能提升了數(shù)百倍。
本節(jié)算法實(shí)驗(yàn)環(huán)境均為E 級(jí)原型機(jī)系統(tǒng)。
1)過濾誤報(bào)算法
實(shí)驗(yàn)選用一塊電源芯片,固件更換為在調(diào)試驗(yàn)證階段發(fā)現(xiàn)有bug 的版本,對(duì)由其供電的節(jié)點(diǎn)進(jìn)行開工跑題,分別使用無過濾誤報(bào)算法及有過濾誤報(bào)算法進(jìn)行異常檢測(cè),觀察24 h 內(nèi)的電壓數(shù)據(jù)的變化。實(shí)驗(yàn)結(jié)果如下:無過濾誤報(bào)算法異常數(shù)據(jù)為107,有過濾誤報(bào)算法異常數(shù)據(jù)為0。實(shí)驗(yàn)結(jié)果表明,設(shè)計(jì)的分段均值異常檢測(cè)算法對(duì)此類誤報(bào)數(shù)據(jù)的特征具有很好的識(shí)別性。
在太湖之光環(huán)境中統(tǒng)計(jì)調(diào)試驗(yàn)證階段半年內(nèi)信息結(jié)果顯示,在檢測(cè)記錄的異常信息中,電源類誤報(bào)信息占3.3%。從實(shí)驗(yàn)結(jié)果可以推測(cè),過濾誤報(bào)算法幾乎可以消除全部該類誤報(bào)信息,認(rèn)為該類誤報(bào)率幾乎為0。
2)維護(hù)嵌入式系統(tǒng)異常檢測(cè)算法
實(shí)驗(yàn)在E 級(jí)原型機(jī)所有板級(jí)維護(hù)嵌入式系統(tǒng)上部署該算法,觀察期為1 個(gè)月。實(shí)驗(yàn)結(jié)果如表3 所示。
表3 維護(hù)嵌入式系統(tǒng)異常檢測(cè)算法實(shí)驗(yàn)結(jié)果Table 3 Experimental results of maintaining embedded system anomaly detection algorithm
實(shí)驗(yàn)結(jié)果表明,維護(hù)嵌入式系統(tǒng)異常檢測(cè)算法能夠及時(shí)發(fā)現(xiàn)維護(hù)嵌入式系統(tǒng)的各類常見問題,并準(zhǔn)確定位根因,問題的主動(dòng)發(fā)現(xiàn)及解決成功避免了因維護(hù)系統(tǒng)自身的問題導(dǎo)致的維護(hù)信息損失。實(shí)驗(yàn)結(jié)果同時(shí)表明,應(yīng)將該維護(hù)嵌入式系統(tǒng)的故障等級(jí)升至最高級(jí)別,促使運(yùn)維人員及時(shí)對(duì)其進(jìn)行處理。
該算法對(duì)硬件故障診斷覆蓋率的貢獻(xiàn)如下:對(duì)太湖之光半年內(nèi)的診斷信息進(jìn)行統(tǒng)計(jì),由維護(hù)嵌入式系統(tǒng)引起的故障占硬件總故障的4.2%,該算法將硬件系統(tǒng)故障診斷覆蓋率提升約4%,同時(shí)統(tǒng)計(jì)顯示維護(hù)嵌入式系統(tǒng)的故障在全部硬件故障中占比為5.9%,該算法亦將硬件系統(tǒng)故障檢測(cè)覆蓋率提升約6%。
3)類比故障診斷算法
實(shí)驗(yàn)在一級(jí)、二級(jí)和三級(jí)管理上部署類比故障診斷算法,在近六周的時(shí)間內(nèi),記錄主要有3 例,如表4 所示。
表4 類比故障診斷算法實(shí)驗(yàn)結(jié)果Table 4 Experimental Results of Analog Fault Diagnosis Algorithm
實(shí)驗(yàn)結(jié)果表明,類比故障算法有效解決了和系統(tǒng)結(jié)構(gòu)及配置信息相關(guān)的問題,提升了系統(tǒng)診斷效率。
該算法對(duì)硬件系統(tǒng)故障診斷覆蓋率的貢獻(xiàn)如下:對(duì)太湖之光半年內(nèi)的故障信息進(jìn)行統(tǒng)計(jì)分析,太湖之光維護(hù)故障診斷系統(tǒng)硬件系統(tǒng)故障診斷覆蓋率為71%。針對(duì)未能給出診斷結(jié)論的部分,通過同類對(duì)比可以得出診斷結(jié)論的占比超過65%。據(jù)此認(rèn)為,類比故障診斷算法可以將硬件故障診斷覆蓋率提升約19%。
4)專用模型對(duì)比預(yù)測(cè)算法
實(shí)驗(yàn)中的預(yù)測(cè)算法專用場(chǎng)景介紹:針對(duì)在運(yùn)行某特定課題時(shí),系統(tǒng)中某一組指標(biāo)F{f1,f2,f3}出現(xiàn)特定變化趨勢(shì)后,大約3 min 后會(huì)發(fā)生節(jié)點(diǎn)故障,進(jìn)而導(dǎo)致正在運(yùn)行的應(yīng)用課題被中斷。
算法記錄三項(xiàng)指標(biāo)f1、f2、f3在故障發(fā)生3 min 前的18個(gè)掃描周期內(nèi)的數(shù)據(jù)信息M1{d0,d1,…,d17},
在實(shí)驗(yàn)環(huán)境中選取64 個(gè)節(jié)點(diǎn)運(yùn)行該課題,如圖7 所示,每經(jīng)過18 個(gè)掃描周期,用相應(yīng)的數(shù)據(jù)與M1、M2、M3計(jì)算差值,并在差值空間計(jì)算方差。3 個(gè)指標(biāo)方差均小于閾值就報(bào)在3 min 后即將發(fā)生某故障,否則無信息入庫。
以上實(shí)驗(yàn)運(yùn)行5 次,實(shí)驗(yàn)部分結(jié)果如表5 所示。
表5 專用模型對(duì)比預(yù)測(cè)算法實(shí)驗(yàn)結(jié)果Table 5 Experimental results of special model comparison prediction algorithm
該預(yù)測(cè)算法具有很強(qiáng)的針對(duì)性,通過多次實(shí)驗(yàn)找到了能準(zhǔn)確預(yù)報(bào)故障的閾值,證明了該算法的有效性。及時(shí)預(yù)測(cè)使得課題能夠遷移相關(guān)作業(yè),避免了課題運(yùn)行中斷。
5)趨勢(shì)判斷算法
在實(shí)驗(yàn)環(huán)境中選取10 個(gè)節(jié)點(diǎn),運(yùn)行專門編寫的高功耗課題引起關(guān)鍵芯片溫度持續(xù)升高,部署趨勢(shì)判斷算法對(duì)溫度趨勢(shì)進(jìn)行計(jì)算,并調(diào)用預(yù)測(cè)知識(shí)規(guī)則,當(dāng)判斷芯片溫度在30 s 后超預(yù)警值時(shí)做出預(yù)警。
實(shí)際溫度超閾值時(shí)間如圖10 所示。
圖10 溫度超閾值的實(shí)際時(shí)間示意圖Fig.10 Schematic diagram of actual time of temperature exceeding threshold
6)機(jī)器學(xué)習(xí)有關(guān)實(shí)驗(yàn)
實(shí)驗(yàn)環(huán)境為E 級(jí)原型機(jī)系統(tǒng),實(shí)驗(yàn)根據(jù)E 級(jí)原型機(jī)系統(tǒng)中的顆粒故障根因的分類設(shè)置7 個(gè)根因標(biāo)簽,依據(jù)專家診斷存儲(chǔ)顆粒根因的經(jīng)驗(yàn)知識(shí),選取相關(guān)寄存器及顆粒位置形成11 個(gè)輸入特征向量,創(chuàng)造大約二十萬個(gè)樣本,再加入返修打標(biāo)的實(shí)際故障樣本進(jìn)行兩層中間層的分類器模型訓(xùn)練。
實(shí)驗(yàn)結(jié)果顯示,訓(xùn)練出的模型在測(cè)試樣本上取得了99.2%的準(zhǔn)確率,尤其是能被專家知識(shí)準(zhǔn)確診斷的樣本均完全正確。由于實(shí)際故障樣本本身數(shù)量不大,利用專家知識(shí)創(chuàng)造樣本的程序借用算法優(yōu)勢(shì)輕松地窮舉出了專家知識(shí)能覆蓋的樣本集合,因此模型可能存在過擬合問題。同時(shí),如果專家規(guī)則并不算太復(fù)雜,系統(tǒng)中該類故障也并不多,在該具體的點(diǎn)上很難證明利用機(jī)器學(xué)習(xí)比用專家規(guī)則高效多少。
7)總體效果評(píng)價(jià)
從E 級(jí)原型機(jī)上的驗(yàn)證結(jié)果可以看出,基于專家知識(shí)的檢測(cè)、診斷、預(yù)測(cè)算法均取得預(yù)期效果。
本文設(shè)計(jì)的故障診斷系統(tǒng)與太湖之光系統(tǒng)相比提升情況如表6 所示。
在表6 中,太湖之光的故障檢測(cè)誤報(bào)率、硬件系統(tǒng)故障檢測(cè)覆蓋率及診斷覆蓋率均為半年內(nèi)歷史數(shù)據(jù)的統(tǒng)計(jì)結(jié)果,本文設(shè)計(jì)的故障診斷系統(tǒng)中以上3 項(xiàng)指標(biāo)值均為估算值。
表6 兩種診斷系統(tǒng)總體效果對(duì)比Table 6 Comparison of overall effect of the two diagnosis systems
異常檢測(cè)覆蓋率及故障診斷覆蓋率的提升得益于設(shè)計(jì)中加入的關(guān)聯(lián)性分析及對(duì)維護(hù)嵌入式系統(tǒng)自身的檢測(cè)及診斷。覆蓋率的提高直接提升了系統(tǒng)的檢測(cè)效率及診斷效率,故障診斷的過程也解放了人工分析,進(jìn)一步提升了診斷效率,故障預(yù)測(cè)也能夠比較準(zhǔn)確地預(yù)報(bào)重點(diǎn)監(jiān)測(cè)的指標(biāo)及幾種關(guān)注的場(chǎng)景。
維護(hù)故障診斷系統(tǒng)是高性能計(jì)算機(jī)系統(tǒng)的重要組成部分,高能性計(jì)算即將進(jìn)入后E 時(shí)代,維護(hù)故障診斷系統(tǒng)的作用越來越突出,傳統(tǒng)機(jī)制的執(zhí)行效率及準(zhǔn)確率和覆蓋率需要進(jìn)一步提升以滿足需求。本文面向E 量級(jí)高性能計(jì)算系統(tǒng)需求,對(duì)可擴(kuò)展的高效維護(hù)故障診斷系統(tǒng)進(jìn)行研究及設(shè)計(jì)。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的維護(hù)故障診斷系統(tǒng)在運(yùn)行性能上可滿足十萬節(jié)點(diǎn)規(guī)模系統(tǒng),在功能實(shí)現(xiàn)上,設(shè)計(jì)的融合系統(tǒng)結(jié)構(gòu)及專家知識(shí)的檢測(cè)、診斷及預(yù)測(cè)算法均達(dá)到了預(yù)期效果,執(zhí)行效率、準(zhǔn)確率及覆蓋率均取得較大提升。近年來,AIOps 作為更高效的工具逐漸成為運(yùn)維領(lǐng)域的首要選擇[39],高性能計(jì)算機(jī)硬件的維護(hù)故障診斷也將趨向人工智能化。后續(xù)將研究智能手段與專家知識(shí)深度融合的技術(shù),找到更好更多的融合切入點(diǎn),進(jìn)一步提升維護(hù)故障診斷系統(tǒng)的準(zhǔn)確率及覆蓋率,并在故障診斷的基礎(chǔ)上實(shí)現(xiàn)部分故障自愈功能,提高維護(hù)故障診斷系統(tǒng)的智能化程度。