徐佳慶,胡小弢,楊漢芝,王 強(qiáng),張 磊,唐付橋
(國防科技大學(xué) 計(jì)算機(jī)學(xué)院, 湖南 長沙 410073)
高性能計(jì)算機(jī)是指具有極快運(yùn)算速度、極大存儲容量、極高通信帶寬的一類計(jì)算機(jī),主要應(yīng)用于大科學(xué)、大工程以及產(chǎn)業(yè)升級等領(lǐng)域,對國家安全、經(jīng)濟(jì)和社會發(fā)展具有舉足輕重的意義,是國家科技發(fā)展水平和綜合國力的重要標(biāo)志。[1]為滿足科研和生產(chǎn)活動(dòng)對更高計(jì)算能力的需求,高性能計(jì)算機(jī)的性能發(fā)展遵循著“千倍定律”,即每過十年超級計(jì)算機(jī)的性能會提升一千倍。截至2022年6月,這類計(jì)算機(jī)最高運(yùn)算速度已達(dá)到每秒百億億次浮點(diǎn)運(yùn)算[2]。
高性能互連網(wǎng)絡(luò)[3-4](high performance interconnection networks)是高性能計(jì)算機(jī)中最重要的全局性基礎(chǔ)設(shè)施,相當(dāng)于高性能計(jì)算機(jī)的神經(jīng)系統(tǒng),是實(shí)現(xiàn)系統(tǒng)中各類結(jié)點(diǎn)高速協(xié)同并行計(jì)算的關(guān)鍵,直接影響著系統(tǒng)的性能。高性能互連網(wǎng)絡(luò)主要由高性能網(wǎng)卡(high performance adapter)、高階交換機(jī)(high-radix switch)和高速鏈路(high-speed link)構(gòu)成。盡管單個(gè)互連構(gòu)件的故障概率很低,但隨著系統(tǒng)規(guī)模的擴(kuò)大和鏈路速率的提升,高性能互連網(wǎng)絡(luò)的整體故障率將會不斷上升[5],給高性能互連網(wǎng)絡(luò)的日常運(yùn)維帶來了巨大的挑戰(zhàn),傳統(tǒng)的自動(dòng)化運(yùn)維將難以應(yīng)對。因此,需要引入機(jī)器學(xué)習(xí)算法自動(dòng)地從海量運(yùn)維數(shù)據(jù)中不斷地學(xué)習(xí),不斷地提煉并總結(jié)故障規(guī)律,加速互連故障的診斷與預(yù)測,從而提高運(yùn)維效率,提升整個(gè)高性能計(jì)算(high performance computing,HPC)系統(tǒng)的可用性。
在高性能互連網(wǎng)絡(luò)運(yùn)維中,由鏈路質(zhì)量惡化引發(fā)的網(wǎng)絡(luò)端口阻塞是一類故障定位復(fù)雜、故障影響范圍大的嚴(yán)重故障。一旦發(fā)生網(wǎng)絡(luò)端口阻塞:輕則會導(dǎo)致網(wǎng)絡(luò)中的丟包率增加,端對端延遲增加;重則會造成整個(gè)網(wǎng)絡(luò)癱瘓,嚴(yán)重影響整個(gè)系統(tǒng)的可靠性。當(dāng)發(fā)生了網(wǎng)絡(luò)端口阻塞故障時(shí),運(yùn)維人員通常需要將系統(tǒng)中正在運(yùn)行的作業(yè)掛起,利用測試程序確定當(dāng)前系統(tǒng)中不可達(dá)的結(jié)點(diǎn)對,然后通過路徑查詢工具獲取結(jié)點(diǎn)對之間的公共路徑,依次對這些公共路徑經(jīng)過的網(wǎng)絡(luò)端口進(jìn)行端口復(fù)位,從而確定發(fā)生故障的端口位置,最后往往通過更換故障光纖或光模塊的方法來有效消除網(wǎng)絡(luò)端口阻塞故障。整個(gè)故障定位的過程較為復(fù)雜,耗時(shí)較長,嚴(yán)重影響整個(gè)系統(tǒng)的可用性。若運(yùn)維工作人員能提前獲取網(wǎng)絡(luò)端口阻塞故障的預(yù)測結(jié)果,就可以從以下兩個(gè)方面提升HPC系統(tǒng)整體的可用性:
1)資源分配。在作業(yè)提交前,管理人員主動(dòng)將作業(yè)分配給所在鏈路更健康的結(jié)點(diǎn)區(qū)域,以防因?yàn)殒溌饭收隙鴮?dǎo)致作業(yè)運(yùn)行失敗。
2)故障規(guī)避。對于存在阻塞隱患的鏈路,管理人員可以主動(dòng)采取誤路由的方法,在不影響作業(yè)正常運(yùn)行的情況下提前對該隱患端口進(jìn)行排查和處理,從而確保系統(tǒng)中所有鏈路均健康可用。
智能運(yùn)維(artificial intelligence for IT operations, AIOps)的概念由Gartner于2016年首先提出的,是將人工智能應(yīng)用于運(yùn)維領(lǐng)域,基于已有的運(yùn)維數(shù)據(jù)(日志、監(jiān)控信息、應(yīng)用信息等),通過機(jī)器學(xué)習(xí)的方式設(shè)計(jì)故障預(yù)測模型尋找故障發(fā)生前的規(guī)律,推測出系統(tǒng)在未來一段時(shí)間的運(yùn)行狀況,在故障發(fā)生之前進(jìn)行預(yù)判,幫助運(yùn)維人員提前采取一些有效措施規(guī)避故障,提高系統(tǒng)的可靠性及穩(wěn)定性[6-13]。
數(shù)據(jù)中心(data center, DC)系統(tǒng)或HPC系統(tǒng)通常由計(jì)算、存儲、網(wǎng)絡(luò)三大部分構(gòu)成。近年來,許多研究人員分別開展了針對計(jì)算、存儲、網(wǎng)絡(luò)的故障預(yù)測研究,致力于提高系統(tǒng)的整體可用性。在計(jì)算故障預(yù)測方面,在文獻(xiàn)[14-18]中,研究人員建立了計(jì)算結(jié)點(diǎn)故障預(yù)測模型,雖然取得不錯(cuò)的效果,但都是基于軟件層面上對故障進(jìn)行分析預(yù)測,對基礎(chǔ)性硬件故障也無法提供實(shí)質(zhì)性指導(dǎo)。在文獻(xiàn)[19]中,孫勤以“天河一號”超級計(jì)算結(jié)點(diǎn)運(yùn)行狀態(tài)數(shù)據(jù)集為基礎(chǔ),采用改進(jìn)的 ReMAE 算法結(jié)點(diǎn)狀態(tài)數(shù)據(jù)進(jìn)行故障預(yù)測,召回率要高出其他集成式數(shù)據(jù)流挖掘算法37%~50%,提高了對即將故障狀態(tài)的預(yù)測的準(zhǔn)確率。劉睿濤[20]依托神威系統(tǒng),采用基于帶時(shí)間標(biāo)簽多序列的故障預(yù)測算法對結(jié)點(diǎn)CPU等部件故障進(jìn)行了預(yù)測分析,該方法雖然準(zhǔn)確率達(dá)到了60%~99%,但召回率偏低,在實(shí)際運(yùn)維過程中容易出現(xiàn)漏報(bào)的情況。在存儲故障預(yù)測方面,文獻(xiàn)[21-22]均采用了近似于分類和預(yù)測相結(jié)合的兩步模型對大數(shù)據(jù)中心磁盤故障進(jìn)行預(yù)測。其中分類模型通過對歷史故障數(shù)據(jù)的分析獲取磁盤狀態(tài)認(rèn)知,結(jié)合預(yù)測模型對未來數(shù)據(jù)進(jìn)行判定來表征磁盤是否存在故障。該方法更多地利用了數(shù)據(jù)的特性來避免標(biāo)準(zhǔn)有監(jiān)督學(xué)習(xí)中的混淆效應(yīng),有效地提高了磁盤狀態(tài)甄別的準(zhǔn)確率。在網(wǎng)絡(luò)故障預(yù)測方面,文獻(xiàn)[23]提出了基于日志文件的網(wǎng)絡(luò)故障預(yù)測方法,通過提取日志文件中的隱含序列對故障發(fā)生時(shí)間進(jìn)行預(yù)判。該種方法不僅可以對多種交換機(jī)進(jìn)行預(yù)測,還能增量學(xué)習(xí)新的特征,但基于日志文件的預(yù)測方式只能間接地反饋網(wǎng)絡(luò)狀態(tài),缺乏對網(wǎng)絡(luò)物理組件本身狀態(tài)的認(rèn)知。
本文針對網(wǎng)絡(luò)端口阻塞故障,提出了一種無監(jiān)督的分類算法K-means算法和時(shí)間序列算法二次指數(shù)平滑(double exponential smoothing,DES)算法相結(jié)合的預(yù)測模型,通過從交換機(jī)端口狀態(tài)寄存器的歷史信息中挖掘出征兆性規(guī)律并形成新的特征向量,應(yīng)用K-means聚類算法對特征向量進(jìn)行學(xué)習(xí)歸類。在預(yù)測時(shí),結(jié)合端口當(dāng)前狀態(tài),利用DES算法對未來一段時(shí)間的端口狀態(tài)進(jìn)行預(yù)測,將得到的新特征向量使用K-means算法預(yù)判是否會出現(xiàn)端口阻塞故障。
系統(tǒng)A、系統(tǒng)B和系統(tǒng)C是三個(gè)處于運(yùn)行狀態(tài)的超級計(jì)算機(jī),其在線運(yùn)行時(shí)間、互連網(wǎng)絡(luò)規(guī)模和鏈路速率分別如表1所示:其中系統(tǒng)A的服役時(shí)間最長;系統(tǒng)B的互連網(wǎng)絡(luò)規(guī)模最大;系統(tǒng)C的部署時(shí)間最晚。
表1 系統(tǒng)參數(shù)對比
根據(jù)故障的不同性質(zhì),可將互連網(wǎng)絡(luò)的故障分為軟件故障和硬件故障,其中硬件故障又可分為交換機(jī)故障、網(wǎng)卡故障及鏈路故障三類。由于各系統(tǒng)部署時(shí)間不同,運(yùn)維數(shù)據(jù)統(tǒng)計(jì)的時(shí)間跨度也有所不同。系統(tǒng)A統(tǒng)計(jì)了2015年12月至2018年5月的互連故障數(shù)據(jù);系統(tǒng)B統(tǒng)計(jì)了2017年1月至2018年5月的互連故障數(shù)據(jù);系統(tǒng)C則統(tǒng)計(jì)了2017年1月至2018年6月的互連故障數(shù)據(jù)。三個(gè)系統(tǒng)各類互連故障的比例情況如表2所示。硬件故障在三個(gè)系統(tǒng)中均占據(jù)互連故障的90%以上。其中網(wǎng)卡故障的比例較小,主要集中于交換機(jī)故障和鏈路故障。在系統(tǒng)A中,交換機(jī)故障達(dá)到了81.05%,而鏈路故障僅為10.53%,其原因是該系統(tǒng)使用了QDR光纖,隨著系統(tǒng)服役時(shí)間的增長,電子元器件的老化導(dǎo)致了交換機(jī)故障增多;而系統(tǒng)B和系統(tǒng)C則使用了FDR光纖和EDR光模塊,其鏈路故障的比例分別達(dá)到了76.61%和61.94%。從中不難發(fā)現(xiàn),隨著系統(tǒng)規(guī)模的增大以及鏈路速率的提升,鏈路故障已成為互連網(wǎng)絡(luò)中最主要的一類故障,給互連網(wǎng)絡(luò)的維護(hù)帶來了極大的挑戰(zhàn)。
表2 不同互連網(wǎng)絡(luò)故障比例
研究目標(biāo)是預(yù)測系統(tǒng)在正常運(yùn)行時(shí)在未來一段時(shí)間內(nèi)某個(gè)交換機(jī)端口是否出現(xiàn)網(wǎng)絡(luò)阻塞現(xiàn)象。對于發(fā)生在Th時(shí)刻的故障,期望能在Ts至Te這段時(shí)間內(nèi)預(yù)測出故障即將發(fā)生。Δτa是Te距離Th的間隔,為運(yùn)維人員用來處理故障的最短時(shí)間。
圖1 故障預(yù)測模型Fig.1 Model of failure prediction
在離線學(xué)習(xí)過程中,假設(shè)在Th出現(xiàn)故障,對于[Ts,Te]中的任何時(shí)刻Tx,[Tx-Δτm,Tx]中的消息序列被標(biāo)記為征兆性規(guī)律。Ty∈[Ts,Th]時(shí),[Ty-Δτm,Ty]中的消息序列被標(biāo)記為非征兆性規(guī)律,如圖1所示。希望通過捕捉交換機(jī)端口出現(xiàn)故障前的規(guī)律性變化來預(yù)測網(wǎng)絡(luò)阻塞是否發(fā)生。為此,將使用機(jī)器學(xué)習(xí)方法建立一個(gè)基于交換機(jī)端口網(wǎng)絡(luò)阻塞故障歷史數(shù)據(jù)集的預(yù)測模型,然后使用該模型來預(yù)測全系統(tǒng)交換機(jī)端口是否在未來會發(fā)生網(wǎng)絡(luò)阻塞故障。在預(yù)測模型的設(shè)計(jì)過程中需要面對以下技術(shù)挑戰(zhàn)。
1)數(shù)據(jù)不均衡。將以第1節(jié)中提及的系統(tǒng)C作為研究對象,該系統(tǒng)有近18 000個(gè)網(wǎng)絡(luò)端口。而統(tǒng)計(jì)數(shù)據(jù)表明,該系統(tǒng)日均發(fā)生網(wǎng)絡(luò)阻塞故障的端口不到2個(gè),如表3所示。這種極度分布不均衡的數(shù)據(jù)集,讓模型訓(xùn)練的難度大大增加。由于這種數(shù)據(jù)不平衡性的存在,預(yù)測模型大概率偏向于判斷網(wǎng)絡(luò)端口在未來一段時(shí)間處于健康狀態(tài)。雖然可使用數(shù)據(jù)再平衡技術(shù)(如欠采樣和過采樣技術(shù)等)來解決這一挑戰(zhàn),但這些方法在提高召回率的同時(shí)也可能引入大量的誤報(bào),從而大大降低預(yù)測的準(zhǔn)確性。
2)數(shù)據(jù)特征不明顯。不同于基于以太網(wǎng)的交換機(jī)、服務(wù)器等物理組件提供的日志文件,它本身并不涉及設(shè)備本身的物理狀態(tài),而采集的數(shù)據(jù)反映的卻是交換機(jī)本身底層的狀態(tài)。這也導(dǎo)致正常樣本和異常樣本在原始數(shù)據(jù)表征上沒有明顯差異。
表3 網(wǎng)絡(luò)阻塞故障示例
圖2展示了預(yù)測模型的基本框架。整體分為離線訓(xùn)練和在線預(yù)測兩大塊。在離線訓(xùn)練中:第一步是從歷史數(shù)據(jù)集中提取出有用特征向量序列作為新的訓(xùn)練集。第二步是利用訓(xùn)練集分別對聚類組件和預(yù)測組件進(jìn)行學(xué)習(xí)訓(xùn)練。聚類組件通過學(xué)習(xí)故障端口阻塞故障發(fā)生前2 d和正常端口任意2 d的狀態(tài)變化,找出網(wǎng)絡(luò)阻塞這一過程在不同階段狀態(tài)的差異,并進(jìn)行歸類。預(yù)測組件則對網(wǎng)絡(luò)阻塞端口從正常狀態(tài)到故障發(fā)生前一刻的不同特征值進(jìn)行學(xué)習(xí)訓(xùn)練,進(jìn)而預(yù)測出在未來某個(gè)時(shí)間節(jié)點(diǎn)Th網(wǎng)絡(luò)端口狀態(tài)。當(dāng)離線模型訓(xùn)練完成后,在線預(yù)測組件結(jié)合某個(gè)端口當(dāng)前的狀態(tài)Xt,利用離線模型中的預(yù)測組件對時(shí)間節(jié)點(diǎn)Th的狀態(tài)進(jìn)行預(yù)測,再依托聚類組件判斷該端口的狀態(tài),判斷是否會出現(xiàn)網(wǎng)絡(luò)阻塞,給運(yùn)維工作人員提供指導(dǎo)。
圖2 整體模型構(gòu)架Fig.2 Overall model framework
交換機(jī)端口發(fā)生網(wǎng)絡(luò)阻塞故障是一個(gè)漸變的惡化過程,但該過程如何演變尚未徹底弄清,而無監(jiān)督的聚類算法非常適合分析識別數(shù)據(jù)對象的內(nèi)在關(guān)系,可以輔助科研人員揭露數(shù)據(jù)的真實(shí)變化情況。
K-means算法是一種經(jīng)典的基于距離的聚類算法,采用距離作為相似性的評價(jià)指標(biāo),即認(rèn)為兩個(gè)對象的距離越近,其相似度就越大。而相似度是利用各聚類中對象的均值獲得一個(gè)“中心對象”(引力中心)來進(jìn)行計(jì)算。具體實(shí)現(xiàn)如下:首先從所有樣本對象中選擇出K個(gè)元素作為最開始的聚類目標(biāo)mi(i=1,2,…,K),結(jié)合式(1),計(jì)算數(shù)據(jù)集中每個(gè)樣本到K個(gè)聚類目標(biāo)的距離di,在找到樣本的最小距離di后,將該樣本歸入與mi相同的目標(biāo)類中。
(1)
式中:i=(xi1,xi2,…,xin)和j=(xj1,xj2,…,xjn)是兩個(gè)n維數(shù)據(jù)對象。遍歷完所有對象后,利用式(2)重新計(jì)算mi的值,作為新的聚類目標(biāo)。
(2)
式中:m′K為第K個(gè)聚類目標(biāo),N代表第K個(gè)簇中數(shù)據(jù)對象的個(gè)數(shù)。按照新的聚類目標(biāo)將整個(gè)數(shù)據(jù)集中的對象重新歸類。反復(fù)進(jìn)行這個(gè)過程直至平方誤差準(zhǔn)則最小。定義平方誤差準(zhǔn)則如下:
(3)
式中:E表示所有對象的平方誤差的總和,p代表訓(xùn)練集中的樣本,mi表示聚類目標(biāo)Ci的平均值。
如上所述,利用K-means聚類算法可以用于多分類問題??梢园呀粨Q機(jī)端口狀態(tài)的判斷看作是分類問題。也就是說,如果只想評估端口是否可用,可以將其簡化為一個(gè)分類問題。因此,K-means聚類算法可以在無監(jiān)督的情景下實(shí)現(xiàn)端口狀態(tài)的智能識別,并且該算法易于實(shí)現(xiàn),時(shí)效性高,非常適合本文場景。
如上所述,K-means算法提供了一種利用多個(gè)指標(biāo)評估設(shè)備狀態(tài)的有效方法,但不能獨(dú)立進(jìn)行預(yù)測。結(jié)合K-means算法的預(yù)測方法如圖3所示,提取了交換機(jī)端口從t-n時(shí)刻到t時(shí)刻的不同特征的狀態(tài)值,需要采用一種算法預(yù)測出t+T時(shí)刻的各個(gè)特征值,再結(jié)合K-means算法判斷t+T時(shí)刻的設(shè)備故障狀態(tài)。
圖3 結(jié)合K-means的預(yù)測方法Fig.3 Prediction method combine with K-means
使用的特征數(shù)據(jù)是網(wǎng)絡(luò)端口不同寄存器狀態(tài)值在不同區(qū)間內(nèi)的分布數(shù)量,它們的變化趨勢近似于一條連續(xù)的曲線,短期趨勢可以預(yù)測的。另一方面,當(dāng)一個(gè)交換機(jī)端口接近故障時(shí),其指標(biāo)相比于正常情況下波動(dòng)較大。因此,適合使用DES算法來完成這項(xiàng)工作。DES算法是一種時(shí)間序列預(yù)測算法,主要用于短時(shí)預(yù)測,主要針對的是存在變化趨勢但沒有季節(jié)性規(guī)律的序列,比較適合本文的討論場景。該算法是一種改進(jìn)的指數(shù)平滑算法,能更靈敏地識別數(shù)據(jù)的變化,適用于變化較大的時(shí)間序列。DES算法的主要特點(diǎn)是它對單個(gè)指數(shù)平滑結(jié)果進(jìn)行指數(shù)平滑,如式(4)和式(5)所示。
(4)
(5)
Yt+T=at+bt·T
(6)
(7)
(8)
選擇DES算法結(jié)合K-means聚類算法來進(jìn)行系統(tǒng)的網(wǎng)絡(luò)阻塞故障預(yù)測。在這種方法中,先使用DES算法來預(yù)測每個(gè)特征在t+T時(shí)刻的值Yt+T,再利用K-means算法來判斷t+T時(shí)刻的系統(tǒng)狀態(tài)。
系統(tǒng)C為本次實(shí)驗(yàn)的目標(biāo)系統(tǒng),該系統(tǒng)采用了6行×30列的二維胖樹(2D-Tree)拓?fù)浣Y(jié)構(gòu),系統(tǒng)中共有180臺葉交換機(jī)(ToR switch)和132臺根交換機(jī)(Spine switch),網(wǎng)絡(luò)拓?fù)淙鐖D4所示。葉交換機(jī)有72個(gè)網(wǎng)絡(luò)端口,根交換機(jī)有36個(gè)網(wǎng)絡(luò)端口。其中根交換機(jī)根據(jù)位置不同又可分為行根交換機(jī)(row spine switch, RSS)與列根交換機(jī)(column spine switch,CSS)。值得注意的是,在使用的數(shù)據(jù)集中,根交換機(jī)端口與葉交換機(jī)端口發(fā)生網(wǎng)絡(luò)阻塞故障的比例為1.6 ∶1,網(wǎng)絡(luò)阻塞故障更多集中出現(xiàn)在根交換機(jī)端口上。
圖4 互連網(wǎng)絡(luò)拓?fù)湎到y(tǒng)Fig.4 Interconnection networks topology system
涉及的數(shù)據(jù)是基于自研高性能互連網(wǎng)絡(luò)的帶內(nèi)管理機(jī)制對系統(tǒng)C進(jìn)行采集的,采集時(shí)間從2019年1月持續(xù)到2020年1月。以全系統(tǒng)交換機(jī)的在用端口為對象,以10 min為采樣間隔,對各端口的握手、重傳、信用、流量等12個(gè)特征值進(jìn)行收集。該系統(tǒng)所有交換機(jī)共有17 712個(gè)端口,每個(gè)原始樣本時(shí)間跨度為1周。因此總的數(shù)據(jù)量有近93萬條。表4展示了編號為100的交換機(jī)的24號端口在2019年10月12日上午部分時(shí)間段的原始數(shù)據(jù)詳情。為了保證數(shù)據(jù)的時(shí)效性,運(yùn)維人員對每一次網(wǎng)絡(luò)阻塞故障發(fā)生的時(shí)間進(jìn)行了準(zhǔn)確記錄。
表4 原始數(shù)據(jù)示例
前文提到數(shù)據(jù)集存在樣本不均衡的問題,如果訓(xùn)練集中正常數(shù)據(jù)集遠(yuǎn)大于故障數(shù)據(jù)集,則預(yù)測精度會很高,但也會使得實(shí)際部署時(shí)產(chǎn)生過多的漏報(bào)。因此剔除了大量正常數(shù)據(jù)集,重點(diǎn)關(guān)注故障數(shù)據(jù)集,使得正常數(shù)據(jù)和異常數(shù)據(jù)盡可能平衡。
從上一節(jié)內(nèi)容可知,本文采集了握手、重傳、信用等12個(gè)特征數(shù)據(jù),但是并不是每一個(gè)特征值在對正常樣本和異常樣本進(jìn)行區(qū)分時(shí)都有所幫助,尤其是進(jìn)行故障預(yù)測時(shí)。另外在構(gòu)建機(jī)器學(xué)習(xí)的模型時(shí),特征選擇被證明是非常關(guān)鍵的,因此從特征數(shù)據(jù)中選擇出穩(wěn)定、可預(yù)測的特征值非常重要。現(xiàn)有的特征選擇方法主要分為兩大類,統(tǒng)計(jì)指標(biāo)(如卡方、互信息等)和基于機(jī)器學(xué)習(xí)的方法(如隨機(jī)森林等)。但對于信用、流量等特征值而言,由于數(shù)據(jù)本身存在時(shí)間敏感性和隨機(jī)性的特點(diǎn),傳統(tǒng)的特征選擇方法往往使得預(yù)測模型性能不佳。
(a) 流量對比(a) Comparison of flit
通過分析發(fā)現(xiàn),流量等特征在故障發(fā)生前和正常時(shí)候并無明顯差異,這類相似的特征被定義為“無效特征”,在構(gòu)建特征向量時(shí)予以舍棄,如圖5(a)中的流量(圖示中的瞬時(shí)值均已歸一化處理)。與“無效特征”形成對比的是類似于圖5(b)中的信用值,被定義為“有效特征”。圖5展示了交換機(jī)端口從正常狀態(tài)到網(wǎng)絡(luò)阻塞故障發(fā)生的那一刻,2 d內(nèi)流量、數(shù)據(jù)鏈路層信用兩個(gè)不同特征的變化趨勢。從圖5(a)中可以看出,直到網(wǎng)絡(luò)阻塞發(fā)生的前一刻為止,異常端口的流量值變化趨勢基本上和正常端口一樣,處于一種隨機(jī)波動(dòng)的狀態(tài)。而在圖5(b)中,可以看到異常端口的數(shù)據(jù)鏈路層信用值隨著時(shí)間在沿著虛線逐漸變小,而正常端口則依然保持在0~1區(qū)域內(nèi)隨機(jī)分布狀態(tài)。流量、信用等特征值雖然都攜帶了與時(shí)間段高度相關(guān)的信息,并且每一個(gè)數(shù)值的大小都是真實(shí)正常的數(shù)據(jù),但只有數(shù)據(jù)鏈路層信用等這類特征值在某一段時(shí)間內(nèi)都保持在一個(gè)縮小的范圍波動(dòng)才能反映出交換機(jī)端口狀態(tài)的變化。
另外,握手、重傳等特征值往往只在故障發(fā)生前0.5 h內(nèi)會出現(xiàn)異常,這種特征使得預(yù)測模型在時(shí)效性上效果很差,也予以舍棄。根據(jù)此種現(xiàn)象,最后選取了數(shù)據(jù)鏈路層信用、虛通道信用(分別對應(yīng)表2中的CREDIT和VC)等6個(gè)特征值作為“有效特征”。以數(shù)據(jù)鏈路層信用為例,任意某個(gè)時(shí)刻的值取[0,1]區(qū)間內(nèi)的任何一個(gè)值都是合理的,但較長時(shí)間停留在一個(gè)較小的數(shù)值區(qū)域則說明該端口存在一定的網(wǎng)絡(luò)阻塞風(fēng)險(xiǎn)。基于這個(gè)特點(diǎn),通過將數(shù)據(jù)鏈路層信用等特征的值域均分地劃分為6個(gè)區(qū)間(區(qū)間1為[0~0.17],區(qū)間2為(0.17~0.34],區(qū)間3為(0.34~0.51],區(qū)間4為(0.51~0.68],區(qū)間5為(0.68~0.85],區(qū)間6為(0.85~1]),統(tǒng)計(jì)某個(gè)端口在時(shí)間跨度為100個(gè)采樣點(diǎn)的窗口內(nèi)特征值在這6個(gè)區(qū)間的分布數(shù)量,將其作為一個(gè)新的特征值來衡量該端口當(dāng)前時(shí)刻的健康狀態(tài)。接下來再以10個(gè)采樣點(diǎn)為滑動(dòng)距離向前滑動(dòng),統(tǒng)計(jì)下100個(gè)采樣點(diǎn)的分布數(shù)量作為下一時(shí)刻的狀態(tài)信息,采樣窗口滑動(dòng)方式如圖6所示。
圖6 采樣窗口滑動(dòng)方式Fig.6 Sliding method of sliding window
圖7則展示了某個(gè)端口的數(shù)據(jù)鏈路層信用依照圖6所示規(guī)則,于網(wǎng)絡(luò)擁塞故障發(fā)生前不同時(shí)刻在6個(gè)區(qū)間的數(shù)量分布情況。從圖7中可以發(fā)現(xiàn),區(qū)間1的數(shù)值變化可以最為完整地展現(xiàn)該端口從正常到出現(xiàn)故障整個(gè)過程的趨勢。為此進(jìn)一步研究了故障端口不同“有效特征”在區(qū)間1中的變化趨勢,用來替代特征值本身的變化規(guī)律。
圖7 區(qū)間分布Fig.7 Data distribution
通過分析發(fā)現(xiàn),葉交換機(jī)端口和根交換機(jī)端口特征值在區(qū)間1上的數(shù)量分布變化趨勢雖然類似,但它們在具體數(shù)值上存在較大差異。同樣以數(shù)據(jù)鏈路層信用為例,圖8展示了葉交換機(jī)和根交換機(jī)網(wǎng)絡(luò)阻塞端口數(shù)據(jù)鏈路層信用在區(qū)間1中故障出現(xiàn)前2 d內(nèi)的變化過程。
圖8 葉、根交換機(jī)故障端口區(qū)間1數(shù)值變化對比Fig.8 Numerical comparison of interval 1 in ToR and Spine switch
圖8中ToR_S表示葉交換機(jī),Spine_S表示根交換機(jī)(下同),0~3表示四個(gè)端口號。在曲線的前段部分,根交換機(jī)端口(黃色曲線)的特征值在區(qū)間1上的數(shù)量比葉交換機(jī)端口要多,但隨著端口健康狀態(tài)的惡化,可以看出在同一時(shí)間段上根交換機(jī)端口的特征值在區(qū)間1上的數(shù)量明顯比葉交換機(jī)要少,并且更早地出現(xiàn)拐點(diǎn)。從這里可以看出,基于拓?fù)浣Y(jié)構(gòu)分別對葉交換機(jī)和根交換機(jī)的特征數(shù)據(jù)進(jìn)行單獨(dú)分析更為合理。為此,篩選了葉交換機(jī)和根交換機(jī)網(wǎng)絡(luò)阻塞故障端口各100個(gè)。原始樣本數(shù)據(jù)均是從故障未發(fā)生前某個(gè)時(shí)間點(diǎn)開始到故障發(fā)生時(shí)那一刻為止2 d內(nèi)的數(shù)據(jù)。同時(shí)在對應(yīng)時(shí)間段隨機(jī)抽取了葉交換機(jī)和根交換機(jī)正常端口各100個(gè)。按照圖6所示規(guī)則,分別計(jì)算出這些端口6個(gè)“有效特征”在區(qū)間1的分布情況,組合成新的特征向量來表示某個(gè)端口的當(dāng)前狀態(tài)。比如在T時(shí)刻,可以得到如式(9)所示新的特征向量。
XT=[20,15,17,14,17,16]
(9)
3.3.1K-means聚類模型訓(xùn)練
從圖5(b)中可以得知,某個(gè)端口發(fā)生網(wǎng)絡(luò)阻塞故障是一個(gè)漸變過程,從實(shí)際運(yùn)維角度考慮,可將這個(gè)過程籠統(tǒng)地劃分為健康、亞健康、故障三個(gè)階段。采用無監(jiān)督的K-means聚類算法對新得到的特征向量Xi(i=0,1,…,n)進(jìn)行研究分析。首先要確定聚類算法的種數(shù)K,使用輪廓系數(shù)法,具體過程如下:在保證正常端口和故障端口數(shù)量比例均衡的前提下,對交換機(jī)端口歷史數(shù)據(jù)挖掘出新的特征向量集形成訓(xùn)練集。分別對三種情況進(jìn)行了分析:第一種是葉交換機(jī)正常與網(wǎng)絡(luò)阻塞端口各取100個(gè)進(jìn)行分析;第二種是根交換機(jī)正常與網(wǎng)絡(luò)阻塞端口各取100個(gè)進(jìn)行分析;第三種是將前兩種情形選取的400個(gè)端口混合分析。三種情況下同樣對K值從2~10進(jìn)行取值,得到聚類數(shù)K與輪廓系數(shù)S的關(guān)系,如圖9所示。利用sklearn.clurster庫中的K-means算法對上述三種情形進(jìn)行聚類分析??梢钥吹剑瑔为?dú)對葉交換機(jī)、根交換機(jī)端口的特征向量集進(jìn)行聚類分析時(shí),輪廓系數(shù)最大值都是在K=3時(shí)取得,這表示K=3為最佳聚類數(shù)。同時(shí)可以看到,將葉交換機(jī)和根交換機(jī)端口的特征向量集混合后,不僅沒有進(jìn)一步提升K=3時(shí)的分類效果,反而使得K在不同取值時(shí)整體輪廓系數(shù)相近,聚類效果變差,這也再次證明了基于拓?fù)浣Y(jié)構(gòu)對不同層級的交換機(jī)端口分類研究分析的必要性。在選定了K=3進(jìn)行聚類分析后,還需對循環(huán)次數(shù)進(jìn)行選取。統(tǒng)計(jì)了在不同循環(huán)次數(shù)訓(xùn)練后各個(gè)類別的數(shù)目,并重新用統(tǒng)計(jì)的樣本數(shù)據(jù)進(jìn)行預(yù)測。
圖9 輪廓系數(shù)Fig.9 Silhouette coefficient
不同循環(huán)次數(shù)下分類的準(zhǔn)確率如圖10所示。從圖10中均可以發(fā)現(xiàn),隨著訓(xùn)練的循環(huán)次數(shù)增加,分類的準(zhǔn)確率都會提高。圖10(a)是將葉交換機(jī)和根交換機(jī)端口的特征向量集混合后聚類的效果,準(zhǔn)確率較低。其中類別0準(zhǔn)確率最高為73.3%,類別1為68.2%,類別2為91.4%。而從圖10(b)和(c)中可以看出,當(dāng)按照網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)單獨(dú)對葉交換機(jī)和根交換機(jī)端口特征向量集進(jìn)行聚類分析時(shí),三種類別分類的整體準(zhǔn)確率均有明顯提升。圖10(b)中類別0的準(zhǔn)確率由80.3%提升至95.8%,類別1由77.1%提升至94.6%,類別2由95.3%提升至99.1%。圖10(c)中類別0的準(zhǔn)確率由83.5%提升至95.2%,類別1由79.3%提升至93.9%,類別2由92.4%提升至99.5%。另外,從圖10中可以發(fā)現(xiàn),不管是否按照拓?fù)浣Y(jié)構(gòu)分類進(jìn)行聚類分析,分類準(zhǔn)確率在循環(huán)500次時(shí)就取得了最好分類效果,循環(huán)次數(shù)繼續(xù)增加對分類效果幾乎沒有影響??紤]模型的計(jì)算成本,選取500作為K-means聚類模型的循環(huán)訓(xùn)練次數(shù)。
(a) 葉交換機(jī)和根交換機(jī)混合分類(a) ToR_S & Spine_S hybrid clustering
圖11展示了循環(huán)次數(shù)為500時(shí)的聚類效果,圖示的橫坐標(biāo)和縱坐標(biāo)分別為新特征向量XT的第一個(gè)特征值與最后一個(gè)特征值。圖11(a)為將葉交換機(jī)和根交換機(jī)端口特征向量集混合后聚類的效果,可以明顯看到類別0與類別1、類別2都有重疊區(qū)域。此時(shí)類別0和1的準(zhǔn)確率分別約為73%和68%,類別2的準(zhǔn)確率約為91%。圖11(b)為葉交換機(jī)端口單獨(dú)聚類的效果,其中類別0有841個(gè),類別1有383個(gè),類別2有2 576個(gè),每一類的預(yù)測準(zhǔn)確率均上升到94%以上,其中類別2的準(zhǔn)確率最高,達(dá)到了99%。按照同樣的方法,單獨(dú)對根交換機(jī)端口特征向量集進(jìn)行聚類時(shí),每一類的準(zhǔn)確率達(dá)到了93%以上,類別2同樣高達(dá)99%。值得注意的是,結(jié)合圖8曲線變化趨勢和3種類別的數(shù)量分布,可以確定基于運(yùn)維角度劃分的健康、亞健康、故障3種情形分別對應(yīng)類別2、類別0、類別1。
(a) 葉交換機(jī)和根交換機(jī)混合聚類效果(a) ToR_S & Spine_S hybrid clustering results
3.3.2 DES預(yù)測模型訓(xùn)練
在這個(gè)環(huán)節(jié),采用DES算法分別對葉交換機(jī)、根交換機(jī)的6個(gè)“有效特征”在區(qū)間1上的變化趨勢進(jìn)行學(xué)習(xí)。由于時(shí)間序列在故障出現(xiàn)前具有明顯的變動(dòng)傾向,為了使預(yù)測模型靈敏度更高,該模型的平滑系數(shù)a應(yīng)取較大值。選取0.5、0.6、0.7、0.8和0.9共5個(gè)a值,分別計(jì)算各個(gè)預(yù)測值和它們的標(biāo)準(zhǔn)誤差,選取使得標(biāo)準(zhǔn)誤差最小的a值作為預(yù)測模型的參數(shù)。
表5展示了葉交換機(jī)網(wǎng)絡(luò)阻塞端口數(shù)據(jù)鏈路層信用值分布數(shù)的平均值在不同的平滑系數(shù)a下不同時(shí)刻的預(yù)測值。預(yù)測值與真實(shí)值的標(biāo)準(zhǔn)誤差見表6。結(jié)合表5和表6,發(fā)現(xiàn)葉交換機(jī)端口的數(shù)據(jù)鏈路層信用在平滑系數(shù)為0.9時(shí)標(biāo)準(zhǔn)誤差最小。因此在對葉交換機(jī)端口數(shù)據(jù)鏈路層信用建立預(yù)測模型時(shí),選擇平滑系數(shù)為0.9。對于根交換機(jī)端口以及在不按拓?fù)浞诸惖膶Ρ葘?shí)驗(yàn)中,采用相同的方法求得模型的平滑系數(shù)分別為0.8和0.9。對于虛通道信用等其他5個(gè)特征值,也采用相同的處理方式對其趨勢進(jìn)行學(xué)習(xí)、預(yù)測。作為對比,還對不區(qū)分葉交換機(jī)和根交換機(jī)端口的情況下,將所有交換機(jī)端口特征向量集統(tǒng)一進(jìn)行學(xué)習(xí)訓(xùn)練。圖12展示了基于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)不分類和分類兩種情景下,故障端口實(shí)際值和預(yù)測值的差異。同樣以數(shù)據(jù)鏈路層信用為例,不做分類處理時(shí),如圖12(a)所示。圖12(b)和圖12(c)為基于拓?fù)浞诸惡笕~交換機(jī)、根交換機(jī)兩種交換機(jī)端口分類學(xué)習(xí)預(yù)測的結(jié)果。其中虛曲線表示預(yù)測值,實(shí)線反映了不同網(wǎng)絡(luò)阻塞葉交換機(jī)或根交換機(jī)端口的數(shù)據(jù)鏈路層信用在區(qū)間1分布的真實(shí)值,可以看出兩者在整體上非常接近,標(biāo)準(zhǔn)誤差均小于15??梢悦黠@看到預(yù)測值和實(shí)際值存在明顯偏差,標(biāo)準(zhǔn)誤差超過40,這使得K-means聚類算法給系統(tǒng)狀態(tài)的判斷帶來很大的偏差。
表5 不同平滑系數(shù)下的預(yù)測值
表6 不同平滑系數(shù)下的標(biāo)準(zhǔn)誤差
(a) 混合預(yù)測效果(a) Mixed prediction effect
3.3.3 長短期記憶網(wǎng)絡(luò)算法預(yù)測模型訓(xùn)練
與此同時(shí),還嘗試了采用長短期記憶(long short-term memory, LSTM)網(wǎng)絡(luò)算法直接針對握手、重傳、信用等特征值進(jìn)行時(shí)序預(yù)測。下面以重傳為例進(jìn)行說明,選取網(wǎng)絡(luò)端口故障發(fā)生前2 d內(nèi)的數(shù)據(jù)(包括故障發(fā)生時(shí))。在訓(xùn)練前,對單端口的原始數(shù)據(jù)進(jìn)行累加、歸一化等處理。
在學(xué)習(xí)率為0.000 2、隱藏節(jié)點(diǎn)為10、時(shí)間步為20、Batch-size為60、迭代次數(shù)為200、輸入和輸出節(jié)點(diǎn)數(shù)均為1等條件下,選取85%的原始數(shù)據(jù)作為訓(xùn)練集,余下15%作為驗(yàn)證集,預(yù)測準(zhǔn)確率不到20%。圖13展示了任意選取的4個(gè)網(wǎng)絡(luò)端口預(yù)測結(jié)果。經(jīng)對比,基于LSTM算法模型預(yù)測效果明顯差于DES模型,因此LSTM算法在本文場景中并不適用。
(a) 端口a(a) Port a
3.3.4 在線預(yù)測
對于本文涉及的運(yùn)維場景,運(yùn)維工作者的期望預(yù)測結(jié)果是在有高召回率的前提下盡可能保持較高的精確率。這樣既可以將系統(tǒng)中潛在的問題盡可能地暴露出來,又不至于消耗過多的運(yùn)維人力資源。在本節(jié)中,將基于交換機(jī)端口當(dāng)前的狀態(tài),結(jié)合前文訓(xùn)練的K-means聚類模型和DES算法,對未來一周的網(wǎng)絡(luò)端口狀態(tài)進(jìn)行預(yù)測分析。K-means聚類模型對預(yù)測得到的Xi狀態(tài)歸類為類別0(亞健康)或類別1(故障)時(shí),都被統(tǒng)一劃為網(wǎng)絡(luò)阻塞故障進(jìn)行統(tǒng)計(jì)分析。TP表示正確預(yù)測出將來會網(wǎng)絡(luò)阻塞故障的端口數(shù),F(xiàn)N表示將有網(wǎng)絡(luò)阻塞故障漏報(bào)為正常的端口數(shù),F(xiàn)P為將正常情況誤報(bào)為網(wǎng)絡(luò)阻塞故障的端口數(shù),TN為正確預(yù)測將來正常的端口數(shù)。同樣,分別對是否基于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)分類兩種情形進(jìn)行比較,具體結(jié)果如表7所示。
表7 預(yù)測結(jié)果對比
當(dāng)不按拓?fù)浣Y(jié)構(gòu)對葉交換機(jī)端口和根交換機(jī)端口加以區(qū)分時(shí),在17 712個(gè)網(wǎng)絡(luò)端口中,正確預(yù)測出網(wǎng)絡(luò)阻塞端口為11個(gè),正常端口為17 654個(gè),網(wǎng)絡(luò)阻塞故障端口漏報(bào)6個(gè),將正常端口誤報(bào)為網(wǎng)絡(luò)阻塞的有41個(gè)。這種情況下,雖然整體的準(zhǔn)確率達(dá)到了99.7%,但精確率僅為21.2%,召回率為64.7%。若按拓?fù)浣Y(jié)構(gòu)分別對葉交換機(jī)和根交換機(jī)進(jìn)行預(yù)測,則正確預(yù)測出網(wǎng)絡(luò)阻塞的端口數(shù)上升為15,提高了約36.4%;漏報(bào)的網(wǎng)絡(luò)阻塞故障端口數(shù)減少為2,比例降低了66.7%;將正常端口誤報(bào)為網(wǎng)絡(luò)阻塞的端口數(shù)減少為25,降低了39%。此時(shí)整體召回率提高到88.2%,精確率為37.5%,準(zhǔn)確率為99.8%。對于將正常端口誤報(bào)為網(wǎng)絡(luò)阻塞端口的情況,根據(jù)運(yùn)維人員積累的運(yùn)維經(jīng)驗(yàn),對這部分端口的實(shí)時(shí)狀態(tài)進(jìn)行甄別后,可以排除接近68%的誤報(bào)端口,可將分類的情形下的準(zhǔn)確率提升至65.2%左右。
為了提高高性能計(jì)算機(jī)系統(tǒng)的持續(xù)可用性,本文提出了一種將無監(jiān)督的分類算法(K-means算法)和時(shí)間序列算法(DES算法)相結(jié)合的預(yù)測模型,用于預(yù)測交換機(jī)端口在不久的將來是否會出現(xiàn)故障。該模型通過從交換機(jī)端口底層寄存器的歷史狀態(tài)信息中挖掘出征兆性規(guī)律并形成新的特征向量,應(yīng)用K-means聚類算法對特征向量進(jìn)行學(xué)習(xí)歸類。在預(yù)測時(shí),結(jié)合端口當(dāng)前狀態(tài),利用DES算法對未來一段時(shí)間進(jìn)行預(yù)測,將得到的新特征向量使用K-means算法預(yù)判是否即將出現(xiàn)網(wǎng)絡(luò)阻塞。通過聚類算法解決了專家系統(tǒng)對網(wǎng)絡(luò)阻塞故障的模糊狀態(tài)劃分,能對交換機(jī)端口當(dāng)前狀態(tài)給出明確分類。同時(shí)在運(yùn)維專家系統(tǒng)的輔助下,結(jié)合不同類型交換機(jī)在互連網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中的差異性,分別針對葉交換機(jī)和根交換機(jī)獨(dú)立構(gòu)建子模型,使得該模型能保持在88.2%的召回率前提下,準(zhǔn)確率達(dá)到65.2%。因此,在網(wǎng)絡(luò)阻塞故障發(fā)生之前,運(yùn)維工作人員可以主動(dòng)將存在隱患的端口隔離,提前進(jìn)行處理,增強(qiáng)高速互連網(wǎng)絡(luò)的持續(xù)可用性。對于故障預(yù)測期間發(fā)生的且不屬于之前故障預(yù)測結(jié)果中的端口,網(wǎng)絡(luò)監(jiān)控軟件可通過容錯(cuò)路由的方式對這些故障端口進(jìn)行屏蔽,并通知運(yùn)維工作人員及時(shí)對故障端口進(jìn)行修復(fù)。
鑒于高速互連網(wǎng)絡(luò)持續(xù)可用性影響著高性能計(jì)算機(jī)的整體性能,故障預(yù)測將在高性能互連網(wǎng)絡(luò)的日常維護(hù)中發(fā)揮越來越重要的作用,本文方法是朝這個(gè)方向邁出的重要一步。在后續(xù)工作中,針對數(shù)據(jù)采集情況和大規(guī)模的網(wǎng)絡(luò)端口數(shù)量,如何加強(qiáng)對不同時(shí)刻網(wǎng)絡(luò)端口的健康狀態(tài)的歸類以及各特征值的時(shí)序預(yù)測,仍需做進(jìn)一步的探究。一是選擇更優(yōu)的算法進(jìn)行組合,包括分類和時(shí)序預(yù)測兩個(gè)環(huán)節(jié);二是對現(xiàn)有的K-means聚類和DES時(shí)序預(yù)測算法進(jìn)行參數(shù)調(diào)優(yōu),從而進(jìn)一步提升故障預(yù)測的準(zhǔn)確率。