程自強(qiáng),黃 榮,楊 洋
(1. 浙江大學(xué) 計(jì)算機(jī)學(xué)院,浙江 杭州 310058;2. 上海海高通信股份有限公司,上海 201612)
對(duì)于一般的信息或社交網(wǎng)絡(luò),我們已經(jīng)得到很多它們的性質(zhì)和建模方法。例如,六度分離理論(six degrees of separation)[1],弱連接(weak ties)[2],無標(biāo)度(scale-free)[3-4],以及Small World[5],Kronecker Graph[6]等。利用這些知識(shí),結(jié)合真實(shí)社交網(wǎng)絡(luò)的結(jié)構(gòu),我們可以對(duì)一個(gè)社交網(wǎng)絡(luò)進(jìn)行社區(qū)(Community)[7-8]劃分,對(duì)網(wǎng)絡(luò)中的邊進(jìn)行預(yù)測[9]以及對(duì)節(jié)點(diǎn)對(duì)之間的影響進(jìn)行建模和量化分析[10]等。而對(duì)于一個(gè)缺少先驗(yàn)背景知識(shí)的網(wǎng)絡(luò),以往并沒有明確的分析方法。
本文將從社交網(wǎng)絡(luò)的角度,運(yùn)用社交網(wǎng)絡(luò)的相關(guān)性質(zhì)和分析方法,去理解服務(wù)器集群上的進(jìn)程網(wǎng)絡(luò),并對(duì)該網(wǎng)絡(luò)上的節(jié)點(diǎn)即某個(gè)進(jìn)程的狀態(tài)進(jìn)行預(yù)測。
我們首先對(duì)這樣一個(gè)電信CSB業(yè)務(wù)系統(tǒng)服務(wù)器集群上的進(jìn)程網(wǎng)絡(luò)進(jìn)行建模:
該進(jìn)程網(wǎng)絡(luò)可看作圖G(V,E,T)。其中節(jié)點(diǎn)v∈V為單個(gè)進(jìn)程,T為當(dāng)前網(wǎng)絡(luò)的時(shí)間戳,e∈E表示進(jìn)程間的聯(lián)系,即e(i,j)意味著進(jìn)程i和j在時(shí)刻T存在通信(如socket通信),邊e的權(quán)重w為當(dāng)前時(shí)刻兩個(gè)進(jìn)程之間的通信次數(shù)(多端口通信)。
和社交網(wǎng)絡(luò)不同的是,我們?nèi)狈?duì)該進(jìn)程網(wǎng)絡(luò)上節(jié)點(diǎn)的了解。例如,一個(gè)進(jìn)程何時(shí)會(huì)與周圍的進(jìn)程產(chǎn)生通信,為什么會(huì)產(chǎn)生通信,及我們的預(yù)測目標(biāo): 一個(gè)進(jìn)程是否會(huì)發(fā)生崩潰。因?yàn)檫M(jìn)程間的通信通常依賴于某個(gè)進(jìn)程的具體功能和實(shí)際服務(wù)的使用情況。
即使如此,我們還是可以類比社交網(wǎng)絡(luò)中節(jié)點(diǎn)的相關(guān)性質(zhì),對(duì)該進(jìn)程網(wǎng)絡(luò)中的節(jié)點(diǎn)做出如下假設(shè):
1) 對(duì)應(yīng)于社交網(wǎng)絡(luò)中個(gè)人的性別、年齡等信息,我們可以將某個(gè)進(jìn)程的占用CPU、內(nèi)存情況看作進(jìn)程節(jié)點(diǎn)的“固有屬性”;
2) 對(duì)應(yīng)于社交網(wǎng)絡(luò)中個(gè)人的社交關(guān)系,進(jìn)程之間的通信可以看作進(jìn)程網(wǎng)絡(luò)中的邊;那么,節(jié)點(diǎn)在網(wǎng)絡(luò)中的中心度[11-12]可以衡量節(jié)點(diǎn)的活躍程度以及與外界聯(lián)系的緊密程度;
3) 對(duì)應(yīng)于社交網(wǎng)絡(luò)中的個(gè)人行為如轉(zhuǎn)發(fā)推文等,我們將進(jìn)程的某一特定狀態(tài)視作該進(jìn)程做出的一個(gè)行為;具體地,我們把進(jìn)程崩潰視作一個(gè)進(jìn)程的行為,那么進(jìn)程網(wǎng)絡(luò)中進(jìn)程崩潰這一現(xiàn)象可以類比為社交網(wǎng)絡(luò)中消息的擴(kuò)散[13]。
在社交網(wǎng)絡(luò)中,我們傾向于認(rèn)為“朋友的朋友更有可能成為自己的朋友”[14];對(duì)應(yīng)地,在進(jìn)程網(wǎng)絡(luò)中,我們可以傾向于認(rèn)為,一個(gè)進(jìn)程的行為(狀態(tài))不僅會(huì)影響和它直接有通信的進(jìn)程,還有可能影響它的“鄰居的鄰居”。
基于以上假設(shè),我們把一個(gè)進(jìn)程發(fā)生崩潰的現(xiàn)象定義為進(jìn)程網(wǎng)絡(luò)中一個(gè)節(jié)點(diǎn)的狀態(tài);在給定的時(shí)間戳下,網(wǎng)絡(luò)中的節(jié)點(diǎn)可以被分為兩類: 發(fā)生崩潰的節(jié)點(diǎn)和沒有發(fā)生崩潰的節(jié)點(diǎn);因此,預(yù)測進(jìn)程網(wǎng)絡(luò)中進(jìn)程的崩潰問題可以轉(zhuǎn)化為針對(duì)網(wǎng)絡(luò)節(jié)點(diǎn)的二分類問題[15]。我們仔細(xì)地選取節(jié)點(diǎn)的相關(guān)屬性作為節(jié)點(diǎn)分類的特征,用SVM(Support Vector Machine)分類器[16]對(duì)該模型進(jìn)行分類,并得到了較為可信的結(jié)果。
我們對(duì)電信CSB業(yè)務(wù)系統(tǒng)服務(wù)器集群上的進(jìn)程網(wǎng)絡(luò)以及該網(wǎng)絡(luò)中的節(jié)點(diǎn)、邊和節(jié)點(diǎn)狀態(tài)做出如下定義:
我們用一個(gè)進(jìn)程的如下信息作為其標(biāo)識(shí)符: 本地IP,本地主機(jī)名,本地進(jìn)程組,進(jìn)程描述以及進(jìn)程號(hào)。換言之,上述五個(gè)字段可以確定一個(gè)唯一的進(jìn)程。
如果兩條日志記錄中進(jìn)程的標(biāo)識(shí)符完全一致,我們認(rèn)為這是同一進(jìn)程的記錄。
我們把存在時(shí)長超過某一閾值ΔT的進(jìn)程定義為常駐進(jìn)程。一方面我們關(guān)心那些運(yùn)行時(shí)間較長的主要進(jìn)程的狀態(tài);另一方面服務(wù)器集群上存在臨時(shí)啟動(dòng)的進(jìn)程,它們的進(jìn)程號(hào)不斷變化,狀態(tài)表現(xiàn)得極不穩(wěn)定,干擾我們對(duì)進(jìn)程狀態(tài)的判斷。
常駐進(jìn)程i體現(xiàn)在日志記錄中的形式為: 存在進(jìn)程i的兩條記錄,時(shí)間戳分別為T1,T2(T1 該進(jìn)程網(wǎng)絡(luò)可以用圖G(V,E,T)來表示,其中節(jié)點(diǎn)v∈V為某一具體進(jìn)程,用1.1中的五個(gè)字段來描述,T為當(dāng)前網(wǎng)絡(luò)的時(shí)間戳,e∈E表示進(jìn)程間的聯(lián)系,即e(i,j)意味著進(jìn)程i和j在時(shí)刻t存在通信,邊e的權(quán)重w為通信次數(shù)。 假設(shè)常駐進(jìn)程i在進(jìn)程日志中連續(xù)出現(xiàn)的時(shí)間戳分別為T1,T2(T1 我們把常駐進(jìn)程i在時(shí)刻T2為崩潰狀態(tài)定義為: 與T1時(shí)刻相比,除進(jìn)程號(hào)外,進(jìn)程i的其余四個(gè)標(biāo)識(shí)符均未發(fā)生變化,即e1≠e2。 換言之,一個(gè)常駐進(jìn)程在時(shí)刻T為崩潰狀態(tài)意味著該進(jìn)程此刻的進(jìn)程號(hào)與其上一次在日志中出現(xiàn)的進(jìn)程號(hào)不一致。 我們把在日志記錄中本地IP或本地主機(jī)名為空的進(jìn)程定義為遠(yuǎn)端進(jìn)程。由于日志記錄是由本地probe探針對(duì)正在運(yùn)行的進(jìn)程進(jìn)行遍歷得到的,因此日志記錄中本地IP或主機(jī)名為空可以視作該進(jìn)程不在這個(gè)服務(wù)器集群上,我們稱這類進(jìn)程為遠(yuǎn)端進(jìn)程。 在對(duì)進(jìn)程狀態(tài)進(jìn)行預(yù)測前,我們先從整體上對(duì)數(shù)據(jù)做一些基本的分析。 本數(shù)據(jù)集(服務(wù)器集群的進(jìn)程日志)由電信CSB業(yè)務(wù)系統(tǒng)服務(wù)器CSB節(jié)點(diǎn)上的probe探針定時(shí)探測得到,我們選取了2016年8月30日14時(shí)至18時(shí)共2 858 063條日志記錄進(jìn)行分析。其中,該時(shí)間段內(nèi)的常駐進(jìn)程共973個(gè),進(jìn)程崩潰次數(shù)為25次。在后面的二分類問題中,我們把在時(shí)刻T發(fā)生崩潰的進(jìn)程定義為正樣本,沒有發(fā)生崩潰的進(jìn)程定義為負(fù)樣本。在此數(shù)據(jù)集上,正負(fù)樣本比為0.16‰,是極為稀疏的。 對(duì)常駐進(jìn)程i在時(shí)刻T,我們定義以下特征: 1) CPU占用率; 2) 內(nèi)存使用量; 3) 與之存在通信的進(jìn)程數(shù)量(即進(jìn)程網(wǎng)絡(luò)中節(jié)點(diǎn)的度); 4) 與其他進(jìn)程的通信總量(即進(jìn)程網(wǎng)絡(luò)中節(jié)點(diǎn)的邊權(quán)之和); 5) 存在通信的遠(yuǎn)端進(jìn)程數(shù)量; 6)i在進(jìn)程網(wǎng)絡(luò)G(,,T)中的中心度,包括betweenness[17]和closeness[18]。 因此,可以得到正負(fù)樣本的特征整體分布: 圖1 CPU占用率的整體分布 其中橫坐標(biāo)為進(jìn)程CPU占比(百分比),縱坐標(biāo)為累積分布概率;圓形點(diǎn)線為正樣本分布曲線,三角形點(diǎn)線為負(fù)樣本分布曲線。 圖2 內(nèi)存占用量的整體分布 其中橫坐標(biāo)為進(jìn)程內(nèi)存使用量(100MB),縱坐標(biāo)為累積分布概率;圓形點(diǎn)線為正樣本分布曲線,三角形點(diǎn)線為負(fù)樣本分布曲線。 從圖1~圖2來看,正負(fù)樣本在CPU和內(nèi)存這兩個(gè)“固有屬性”上存在一定的差異: 對(duì)于負(fù)樣本即沒有發(fā)生崩潰的進(jìn)程,它們的CPU使用率集中在20%以下和100%以上,內(nèi)存使用量的分布較為分散;而正樣本的CPU使用率分布較為分散,內(nèi)存使用量卻集中在0和10GB以上這兩個(gè)區(qū)間。根據(jù)經(jīng)驗(yàn),這種分布是可以理解的。因?yàn)?,一個(gè)較大的進(jìn)程發(fā)生崩潰后剛剛啟動(dòng)時(shí)往往需要重新加載,內(nèi)存使用量自然比較多;而對(duì)于正在運(yùn)行的進(jìn)程,如果是計(jì)算密集型的,CPU使用量會(huì)較高。否則,一般不會(huì)占用太多的CPU資源。 圖3 存在通信的進(jìn)程數(shù)量的整體分布 其中橫坐標(biāo)為存在通信的進(jìn)程數(shù)量(即進(jìn)程節(jié)點(diǎn)在進(jìn)程網(wǎng)絡(luò)中的度),縱坐標(biāo)為累積分布概率;圓形點(diǎn)線為正樣本分布曲線,三角形點(diǎn)線為負(fù)樣本分布曲線。 圖4 與其他進(jìn)程的通信總量的整體分布 其中橫坐標(biāo)為通信總量的值(即進(jìn)程節(jié)點(diǎn)在進(jìn)程網(wǎng)絡(luò)中的邊的權(quán)重之和),縱坐標(biāo)為累積分布概率;圓形點(diǎn)線為正樣本分布曲線,三角形點(diǎn)線為負(fù)樣本分布曲線。 圖3~圖5為其他非結(jié)構(gòu)特征的整體分布。從各圖中可以看到,存在通信的進(jìn)程數(shù)量這一特征在正負(fù)樣本之間沒有顯著區(qū)別,即進(jìn)程網(wǎng)絡(luò)中節(jié)點(diǎn)的度大多為1;與其他進(jìn)程的通信總量也不具有太大的參考價(jià)值。盡管從分布來看,正樣本的通信總量分布更為平均(即節(jié)點(diǎn)的邊權(quán)之和范圍較大),但由于正樣本過于稀疏, 實(shí)際上在負(fù)樣本中邊權(quán)之和落在40至80之間的進(jìn)程數(shù)量相對(duì)于正樣本總量仍是十分巨大的;而存在通信的遠(yuǎn)端進(jìn)程數(shù)量這一特征同樣很難對(duì)正負(fù)樣本做出區(qū)分。也就是說,正負(fù)樣本在這三個(gè)非結(jié)構(gòu)特征上沒有明顯差異。 圖5 與遠(yuǎn)端進(jìn)程通信的整體分布 其中橫坐標(biāo)為存在通信的遠(yuǎn)端進(jìn)程數(shù)量,縱坐標(biāo)為累積分布概率;圓形點(diǎn)線為正樣本分布曲線,三角形點(diǎn)線為負(fù)樣本分布曲線。 我們再對(duì)該進(jìn)程網(wǎng)絡(luò)中的結(jié)構(gòu)特征的分布情況進(jìn)行考察。再次回到我們的目標(biāo),即我們希望能對(duì)進(jìn)程狀態(tài)做出判斷: 對(duì)于給定的進(jìn)程,其是否為崩潰狀態(tài)。對(duì)于較大規(guī)模的服務(wù)器集群,其上運(yùn)行著大量進(jìn)程。我們不難想象,如果一個(gè)進(jìn)程關(guān)聯(lián)越多的其他進(jìn)程,那么該進(jìn)程就越重要,其對(duì)服務(wù)器的負(fù)載就越重,崩潰的可能性就越大。 因此,我們選擇進(jìn)程網(wǎng)絡(luò)圖上的結(jié)構(gòu)特征來衡量一個(gè)進(jìn)程的重要性或者核心程度,我們希望通過進(jìn)程節(jié)點(diǎn)的中心度[11-12]來幫助我們對(duì)進(jìn)程狀態(tài)做出分析。圖6~7給出了進(jìn)程節(jié)點(diǎn)的中心度的分布情況。 圖6 betweeness的整體分布 其中橫坐標(biāo)為betweenness的十進(jìn)對(duì)數(shù)(log10),縱坐標(biāo)為累積分布概率;圓形點(diǎn)線為正樣本分布曲線,三角形點(diǎn)線為負(fù)樣本分布曲線。 圖7 closeness的整體分布 其中橫坐標(biāo)為closeness的值(log10),縱坐標(biāo)為分布概率;縱坐標(biāo)為累積分布概率;圓形點(diǎn)線為正樣本分布曲線,三角形點(diǎn)線為負(fù)樣本分布曲線。 遺憾的是,正負(fù)樣本的中心度并沒有顯著的區(qū)別: 正負(fù)樣本的betweenness的整體分布幾乎一致。而對(duì)于closeness,盡管正樣本看似在30至40上的某個(gè)區(qū)間有異常的分布,但注意到負(fù)樣本中也有近百分之二的進(jìn)程的closeness大于50。我們更傾向于認(rèn)為這些都是closeness較大的進(jìn)程,至于closeness的值究竟是30還是50,這是不重要的。 事實(shí)上,這并不與“中心度高的重要進(jìn)程更容易崩潰”這一假設(shè)矛盾。往往一個(gè)中心進(jìn)程崩潰會(huì)導(dǎo)致與其存在通信的其他進(jìn)程或者該進(jìn)程的子進(jìn)程產(chǎn)生異常,而日志記錄是在某個(gè)特定的時(shí)間點(diǎn)通過probe探針生成。因此,很有可能在生成日志記錄時(shí),以該中心進(jìn)程為核心的進(jìn)程組都進(jìn)行了重啟,故而正樣本的中心度分布和樣本的整體分布沒有較大區(qū)別。 值得注意的是,betweeness和closeness具有一定的相關(guān)性。盡管正負(fù)樣本關(guān)于中心度特征的分布相似,但二者作為特征訓(xùn)練分類器的效果也許會(huì)有意想不到的效果,在實(shí)驗(yàn)中我們也將看到這一點(diǎn)。 我們對(duì)進(jìn)程的靜態(tài)特征做了整體分析,但是我們還應(yīng)當(dāng)注意到,進(jìn)程的崩潰是一個(gè)過程,時(shí)間維度上的特征也許會(huì)較好地反映進(jìn)程的狀態(tài)。 我們考慮進(jìn)程從正常狀態(tài)到崩潰狀態(tài)的時(shí)間間隔,體現(xiàn)在日志記錄中即為同一進(jìn)程的進(jìn)程號(hào)不同的兩條連續(xù)日志記錄的時(shí)間戳的差。如果進(jìn)程一直保持著正常狀態(tài)(沒有崩潰),我們傾向于認(rèn)為其在日志記錄中出現(xiàn)的時(shí)間戳應(yīng)當(dāng)是比較穩(wěn)定的,即不會(huì)突然在一段時(shí)間內(nèi)沒有日志記錄。而對(duì)于發(fā)生崩潰的進(jìn)程,由于其重啟等因素,可能會(huì)有較長時(shí)間間隔沒有日志記錄的現(xiàn)象。 具體地,我們定義進(jìn)程i的一個(gè)時(shí)間間隔ΔT=T2-T1,其中T1,T2為i的連續(xù)兩條日志記錄的時(shí)間戳(T2>T1);定義ΔT=T2-T1為正樣本的時(shí)間間隔,如果恰好在T2時(shí)刻進(jìn)程號(hào)發(fā)生變化。 圖8為正負(fù)樣本的時(shí)間間隔的整體分布。再則,我們發(fā)現(xiàn)在時(shí)間間隔這一特征上沒有顯著區(qū)別。由于probe探針每三分鐘采樣一次,因此時(shí)間戳的差集中在3、6或9等數(shù)值上。 圖8 時(shí)間間隔的整體分布 其中橫坐標(biāo)為時(shí)間間隔(分鐘),縱坐標(biāo)為累積分布概率;圓形點(diǎn)線為正樣本分布曲線,三角形點(diǎn)線為負(fù)樣本分布曲線。 除了時(shí)間間隔外,對(duì)于進(jìn)程i的兩條日志記錄T1,T2,我們在分類問題中還會(huì)考慮T1,T2上的特征差,即進(jìn)程的特征隨時(shí)間的變化量。后面將看到,這一考慮是十分有效的。 我們將用分類問題的思路判斷給定進(jìn)程的狀態(tài)。由于進(jìn)程狀態(tài)只有正常和崩潰兩種,因此目標(biāo)簡化為二分類[15]問題。 問題: 給定一個(gè)進(jìn)程的相關(guān)描述,輸出該進(jìn)程所處的狀態(tài)(崩潰與否)。 我們?nèi)斯ぬ崛?.2中提及的關(guān)于進(jìn)程的非結(jié)構(gòu)化和結(jié)構(gòu)化特征作為輸入,通過訓(xùn)練集得到一個(gè)SVM分類器,對(duì)測試集中的每個(gè)進(jìn)程輸出判斷結(jié)果。 其中,由于正負(fù)樣本比過小(正樣本過少),我們采用過采樣(over-sampling)[19]的方法生成訓(xùn)練集,用交叉驗(yàn)證[20-21]的方式對(duì)分類器進(jìn)行訓(xùn)練,然后對(duì)正樣本極少的原始數(shù)據(jù)集進(jìn)行測試。 我們按照1.4給出的方式,人工從原始數(shù)據(jù)集中提取進(jìn)程標(biāo)簽(正負(fù)樣本)。即首先過濾日志得到常駐進(jìn)程,對(duì)每個(gè)常駐進(jìn)程,判斷其上一條時(shí)間戳的日志記錄的進(jìn)程號(hào)是否與當(dāng)前時(shí)間戳的進(jìn)程號(hào)一致;若不一致,則認(rèn)為在當(dāng)前時(shí)間戳進(jìn)程發(fā)生崩潰,采集為正樣本,否則為負(fù)樣本。 我們將2.2中提及的非結(jié)構(gòu)化和結(jié)構(gòu)化特征組合起來作為一個(gè)進(jìn)程的基本特征向量。除此之外,我們還增加考慮特征隨時(shí)間的變化量。 給定進(jìn)程i,時(shí)間戳T0和其截至T0時(shí)刻所出現(xiàn)的日志記錄的時(shí)間戳序列Ti,i≥0,滿足 Tk+1 我們定義進(jìn)程i在T0時(shí)刻的k階特征變化量 Δfk=g{f(T0)-f(Tk),T0-Tk}, 其中f(T)為T時(shí)刻進(jìn)程i的基本特征向量,g(v,t) 為time_decay[22]函數(shù),定義為: g(v,t)=v*t*e1-t, 即對(duì)向量v乘時(shí)間間隔系數(shù)t*e1-t。 我們將上述k階特征變化量(k為參數(shù))和基本特征向量拼接起來,得到一個(gè)進(jìn)程的完整特征,作為樣本數(shù)據(jù)的輸入。 本數(shù)據(jù)集(電信CSB業(yè)務(wù)系統(tǒng)服務(wù)器集群的進(jìn)程日志)時(shí)間跨度為2016年8月30日14時(shí)至18時(shí),共2 858 063條日志記錄進(jìn)行分析。其中,常駐進(jìn)程973個(gè),進(jìn)程崩潰次數(shù)為25次,正負(fù)樣本比為0.16‰。 進(jìn)程狀態(tài)的判斷是一個(gè)二分類問題,因此選取precision, recall和F1得分作為評(píng)價(jià)標(biāo)準(zhǔn)。由于正負(fù)樣本比過低,實(shí)驗(yàn)過程中,首先對(duì)負(fù)樣本進(jìn)行隨機(jī)采樣,使得正負(fù)樣本比分別為0.1和0.05。然后采用過采樣和交叉驗(yàn)證的方式進(jìn)行訓(xùn)練,每次訓(xùn)練和測試過程重復(fù)10次,結(jié)果取平均值。 首先考慮具體的某個(gè)基本特征對(duì)分類效果的影響: 表1給出了不同特征對(duì)分類結(jié)果的影響的比較??梢钥吹?,正負(fù)樣本比對(duì)實(shí)驗(yàn)結(jié)果的影響是明顯的: 正負(fù)樣本比越低,訓(xùn)練得到的分類器進(jìn)行崩潰檢測的效果越差;此外,橫向地與沒有剔除任何特征的分類器相比,我們可以發(fā)現(xiàn),CPU和內(nèi)存這兩個(gè)特征對(duì)區(qū)分正負(fù)樣本的作用是顯著的,剔除其中任何一個(gè)都會(huì)使得F1-score的值有明顯的下降。這個(gè)結(jié)果和特征的分布具有一致性,因?yàn)檎?fù)樣本的CPU占用率和內(nèi)存使用量的分布有著明顯的區(qū)別;而對(duì)于剔除節(jié)點(diǎn)的度、邊權(quán)和以及圖的結(jié)構(gòu)化特征betweeness和closeness,我們可以發(fā)現(xiàn)隨著正負(fù)樣本比的降低,F(xiàn)1-score反而在增加。 表1 單個(gè)特征對(duì)分類結(jié)果的影響 為了考慮不同特征之間的相關(guān)性的影響,我們把上述的特征分為三類: 1)進(jìn)程的運(yùn)行信息,即CPU和內(nèi)存使用情況;2)進(jìn)程的通信情況,體現(xiàn)為進(jìn)程網(wǎng)絡(luò)中節(jié)點(diǎn)的度(或帶權(quán)重的邊權(quán)和)以及存在通信的遠(yuǎn)端進(jìn)程數(shù)量;3)進(jìn)程網(wǎng)絡(luò)中節(jié)點(diǎn)的結(jié)構(gòu)特征,即betweenness和closeness。 圖9、圖10展示了不同特征對(duì)分類結(jié)果的影響??梢钥吹?,第二類特征極大地提高了分類器的recall值,但precision值很低。這是因?yàn)橛写罅康呢?fù)樣本在第二類特征上和正樣本具有相同的值,在只有第二類特征的條件下,分類器傾向于認(rèn)為大部分樣本都是正樣本。因而崩潰預(yù)測在沒有第二類特征的分類器上達(dá)到了最好的效果。 而第一類和第三類特征都可以在一定程度上反映進(jìn)程的狀態(tài)。這正如我們在特征分布中看到的那樣,正負(fù)樣本的CPU和內(nèi)存使用情況的分布不同。而第三類特征即進(jìn)程節(jié)點(diǎn)的中心度盡管分布相似,但二者具有緊密的相關(guān)性,結(jié)合在一起考慮便可以作為崩潰檢測的指標(biāo)之一。 圖9 不同特征對(duì)分類的影響(1)其中橫坐標(biāo)表示選取哪些特征。 圖10 不同特征對(duì)分類的影響(2)其中橫坐標(biāo)表示選取哪些特征。 圖11 不同特征變化量的F1-score 其中橫坐標(biāo)為考慮特征變化量的階(0表示沒有考慮特征變化量),縱坐標(biāo)為F-1得分。 圖11給出了特征變化量對(duì)分類結(jié)果的影響的比較,其中k=i表示我們將1,2,…,i階特征變化量均拼接加入進(jìn)程的特征中。我們可以明顯地看到,特征變化量對(duì)分類結(jié)果有正相關(guān)的影響,即考慮特征變化量越充分(k越大),分類結(jié)果越好。 這說明進(jìn)程的崩潰不是突然的,一個(gè)進(jìn)程在發(fā)生崩潰的前后,其CPU、內(nèi)存使用情況以及和其他進(jìn)程的通信等屬性往往會(huì)有突出的變化: 比如在PC上,往往一個(gè)進(jìn)程占用內(nèi)存過大會(huì)出現(xiàn)崩潰,崩潰前內(nèi)存使用量增加的趨勢則反映了其崩潰的可能性。 從社交網(wǎng)絡(luò)的角度來看,進(jìn)程網(wǎng)絡(luò)也是在不斷變化的,網(wǎng)絡(luò)節(jié)點(diǎn)也就是某個(gè)進(jìn)程在時(shí)間這一維度的變化帶有著豐富的信息。實(shí)驗(yàn)結(jié)果也表明,我們將時(shí)間信息加入進(jìn)程的特征進(jìn)行訓(xùn)練,得到了效果更好的分類器以對(duì)進(jìn)程的崩潰進(jìn)行檢測。 本文從社交網(wǎng)絡(luò)的角度去分析由進(jìn)程節(jié)點(diǎn)構(gòu)成的網(wǎng)絡(luò),并選取節(jié)點(diǎn)的特征進(jìn)行訓(xùn)練以對(duì)節(jié)點(diǎn)故障(崩潰)進(jìn)行預(yù)測。 通過選取不同的特征(如進(jìn)程運(yùn)行信息、通信情況、進(jìn)程節(jié)點(diǎn)的結(jié)構(gòu)化特征以及時(shí)間維度的特征等)對(duì)進(jìn)程崩潰進(jìn)行預(yù)測,我們可以得到如下結(jié)論: 1) 由于數(shù)據(jù)集上正樣本的稀疏性,訓(xùn)練數(shù)據(jù)的正負(fù)樣本比對(duì)訓(xùn)練結(jié)果有顯著的影響。 2) 相比于進(jìn)程的通信情況,進(jìn)程節(jié)點(diǎn)的結(jié)構(gòu)特征以及進(jìn)程運(yùn)行信息(如CPU占用率,內(nèi)存使用量等)對(duì)于判斷一個(gè)進(jìn)程是否會(huì)崩潰更具參考價(jià)值。 3) 從時(shí)間的維度看,進(jìn)程的運(yùn)行和通信信息的變化量更能反映該進(jìn)程的狀態(tài)。 針對(duì)電信CSB業(yè)務(wù)系統(tǒng)進(jìn)程故障檢測這一問題,我們還可以從以下兩方面著手考慮: 1) 類比社交網(wǎng)絡(luò)中的信息擴(kuò)散[12],我們可以把進(jìn)程崩潰看作進(jìn)程的一種行為。通過對(duì)進(jìn)程節(jié)點(diǎn)之間的影響力進(jìn)行建模,可以預(yù)測進(jìn)程的崩潰情況。 2) 除了人工地選取進(jìn)程特征進(jìn)行訓(xùn)練,我們還可以運(yùn)用graph embedding[23]的方法對(duì)進(jìn)程網(wǎng)絡(luò)進(jìn)行建模,用embedding的結(jié)果作為進(jìn)程特征訓(xùn)練分類器。1.3 進(jìn)程網(wǎng)絡(luò)
1.4 進(jìn)程崩潰
1.5 遠(yuǎn)端進(jìn)程
2 數(shù)據(jù)觀察
2.1 數(shù)據(jù)量
2.2 特征分布
2.3 時(shí)間間隔分布
3 實(shí)驗(yàn)方法
3.1 訓(xùn)練方法
3.2 標(biāo)簽的提取
3.3 特征選取
4 實(shí)驗(yàn)結(jié)果
4.1 實(shí)驗(yàn)設(shè)置
4.2 實(shí)驗(yàn)結(jié)果
5 總結(jié)
6 未來的工作