專利名稱:一種數(shù)據(jù)平面異常檢測(cè)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多核處理系統(tǒng)技術(shù)領(lǐng)域,尤指多核處理系統(tǒng)中的數(shù)據(jù)平面異常檢測(cè)的實(shí)現(xiàn)方法和裝置。
背景技術(shù):
目前,在多核網(wǎng)絡(luò)通信設(shè)備中,通常采用數(shù)據(jù)平面和控制平面分離的一種非對(duì)稱處理結(jié)構(gòu)。即控制平面運(yùn)行在一個(gè)或多個(gè)CPU上,并且運(yùn)行一個(gè)完整的嵌入式操作系統(tǒng),有完整的多任務(wù)管理、中斷管理、時(shí)間管理和定時(shí)器管理等等;數(shù)據(jù)平面運(yùn)行在其他的CPU上,沒(méi)有操作系統(tǒng)或者是提供了很簡(jiǎn)單的資源管理,通常只是做簡(jiǎn)單的數(shù)據(jù)流處理和轉(zhuǎn)發(fā) 工作。為了防止出現(xiàn)掛死現(xiàn)象,在控制平面上通常設(shè)有硬件看門狗(Watchdog)模塊,用以檢測(cè)控制平面是否出現(xiàn)異常情況,當(dāng)控制平面出現(xiàn)異常時(shí),則重新啟動(dòng)該控制平面,因而可以保證控制平面不會(huì)出現(xiàn)掛死的情況。然而,由于數(shù)據(jù)平面上缺少類似控制平面上的看門狗模塊來(lái)定期檢測(cè)數(shù)據(jù)平面的異常,如果數(shù)據(jù)平面進(jìn)入死循環(huán)或者訪問(wèn)非法內(nèi)存時(shí),則會(huì)導(dǎo)致數(shù)據(jù)平面掛死,進(jìn)而影響數(shù)據(jù)流的轉(zhuǎn)發(fā)和處理。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種數(shù)據(jù)平面異常檢測(cè)的方法和裝置,通過(guò)在控制平面上啟動(dòng)一個(gè)定時(shí)器進(jìn)程定時(shí)對(duì)各個(gè)數(shù)據(jù)平面核的運(yùn)行狀態(tài)和時(shí)間戳進(jìn)行檢測(cè),進(jìn)而防止數(shù)據(jù)平面核掛死不轉(zhuǎn)發(fā)或不處理數(shù)據(jù)的情況。為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的一種數(shù)據(jù)平面異常檢測(cè)的裝置,應(yīng)用于由控制平面模塊和數(shù)據(jù)平面模塊組成的多核處理系統(tǒng)中,其中所述控制平面模塊進(jìn)一步包括定時(shí)器模塊,用以定時(shí)檢測(cè)各個(gè)數(shù)據(jù)平面核共享內(nèi)存中記錄的運(yùn)行標(biāo)識(shí)位和時(shí)間戳,在定時(shí)檢測(cè)時(shí),所述定時(shí)器模塊先判斷各個(gè)數(shù)據(jù)平面核是否在運(yùn)行,如果在運(yùn)行,進(jìn)一步判斷當(dāng)前時(shí)間和共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳之間的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則判斷所述數(shù)據(jù)平面核已經(jīng)掛死,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息,同時(shí)重新啟動(dòng)該數(shù)據(jù)平面核或者數(shù)據(jù)平面模塊上的整個(gè)CPU系統(tǒng)。本發(fā)明還公開了一種數(shù)據(jù)平面異常檢測(cè)的方法,應(yīng)用于包括數(shù)據(jù)平面和控制平面的多核處理系統(tǒng)中,其中所述控制平面包括一定時(shí)器模塊,其中所述方法包括步驟501、設(shè)定確認(rèn)數(shù)據(jù)平面核掛死的時(shí)間閾值以及控制平面定時(shí)器模塊檢測(cè)數(shù)據(jù)平面核的檢測(cè)時(shí)間,并啟動(dòng)所述控制平面定時(shí)器模塊;步驟502、控制平面定時(shí)器模塊按照設(shè)定的檢測(cè)時(shí)間定時(shí)對(duì)數(shù)據(jù)平面核進(jìn)行檢測(cè);步驟503、判斷當(dāng)前時(shí)間和共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則進(jìn)入步驟504,否則返回步驟502 ;
步驟504,確認(rèn)所述數(shù)據(jù)平面核已經(jīng)掛死,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息,重新啟動(dòng)該數(shù)據(jù)平面核或數(shù)據(jù)平面整個(gè)CPU系統(tǒng)后返回步驟502。由上述技術(shù)方案可見,本發(fā)明通過(guò)在控制平面上啟動(dòng)一個(gè)定時(shí)器進(jìn)程定時(shí)對(duì)各個(gè)數(shù)據(jù)平面核的運(yùn)行狀態(tài)和時(shí)間戳進(jìn)行檢測(cè),一旦當(dāng)前時(shí)間與處于運(yùn)行狀態(tài)的數(shù)據(jù)平面核的時(shí)間戳之間的差值大于設(shè)定的時(shí)間閾值,則判斷該數(shù)據(jù)平面核異常,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息后,對(duì)該數(shù)據(jù)平面核或數(shù)據(jù)平面整個(gè)CPU系統(tǒng)進(jìn)行重啟。通過(guò)本發(fā)明,可以有效地防止數(shù)據(jù)平面核掛死不轉(zhuǎn)發(fā)或不處理數(shù)據(jù)的情況。
圖I是現(xiàn)有技術(shù)多核處理系統(tǒng)的裝置示意圖;圖2是現(xiàn)有技術(shù)數(shù)據(jù)平面處理數(shù)據(jù)的方法流程圖;圖3是本發(fā)明實(shí)施例提供的數(shù)據(jù)平面異常檢測(cè)的裝置結(jié)構(gòu)圖; 圖4是本發(fā)明實(shí)施例數(shù)據(jù)平面和控制平面共享一段物理內(nèi)存的示意圖;圖5是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)平面異常檢測(cè)的方法流程圖;圖6是本發(fā)明某一具體應(yīng)用場(chǎng)景下數(shù)據(jù)平面處理數(shù)據(jù)的方法流程圖。
具體實(shí)施例方式為了實(shí)現(xiàn)本發(fā)明目的,本發(fā)明采用的核心思想為在控制平面上啟用一個(gè)定時(shí)器進(jìn)程,定時(shí)檢測(cè)各個(gè)數(shù)據(jù)平面核共享內(nèi)存中緩存的運(yùn)行標(biāo)識(shí)位和時(shí)間戳。在定時(shí)檢測(cè)時(shí),先判斷各個(gè)數(shù)據(jù)平面核是否在運(yùn)行,如果在運(yùn)行,進(jìn)一步判斷當(dāng)前時(shí)間和前述共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則判斷所述數(shù)據(jù)平面核已經(jīng)掛死,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息,同時(shí)重新啟動(dòng)該數(shù)據(jù)平面核或者數(shù)據(jù)平面整個(gè)CPU系統(tǒng)。為了更加清楚和明白,以下結(jié)合實(shí)施例對(duì)本發(fā)明技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。在介紹本發(fā)明實(shí)施例之前,先簡(jiǎn)單地介紹一下現(xiàn)有技術(shù)數(shù)據(jù)平面核處理數(shù)據(jù)的流程圖。如圖I和圖2所示,分別為現(xiàn)有技術(shù)多核處理系統(tǒng)的裝置示意圖和數(shù)據(jù)平面處理數(shù)據(jù)的流程圖。如圖I所示,所述現(xiàn)有技術(shù)多核處理系統(tǒng)包括數(shù)據(jù)平面模塊和控制平面模塊,其中所述控制平面模塊上進(jìn)一步包括防止該控制平面掛死的看門狗模塊。當(dāng)數(shù)據(jù)平面轉(zhuǎn)發(fā)和處理數(shù)據(jù)時(shí),其處理數(shù)據(jù)的流程如圖2所示。步驟201,數(shù)據(jù)平面模塊啟動(dòng)數(shù)據(jù)處理線程;步驟202,數(shù)據(jù)平面模塊判斷待處理的數(shù)據(jù)消息隊(duì)列是否為空,如果為空,則進(jìn)行步驟203,否則進(jìn)入步驟204 ;步驟203,調(diào)用數(shù)據(jù)平面模塊中CPU消息等待處理,同時(shí)進(jìn)入到休眠狀態(tài);本步驟中,CUP消息是一個(gè)CPU的特殊指令,當(dāng)前述數(shù)據(jù)消息隊(duì)列為空時(shí),該CPU消息指令會(huì)讓CPU進(jìn)入到休眠狀態(tài),直到新的消息隊(duì)列出現(xiàn)把他喚醒,當(dāng)然,實(shí)際過(guò)程中,軟件有時(shí)也把它封裝為函數(shù)。步驟204,數(shù)據(jù)平面模塊讀取待處理的消息隊(duì)列內(nèi)容;步驟205,數(shù)據(jù)平面模塊判斷待處理的消息是否正確,如果正確,則進(jìn)入步驟206,否則進(jìn)入步驟207 ;
由于錯(cuò)誤的消息是不正確的數(shù)據(jù)報(bào)文,如果處理起來(lái)可能會(huì)導(dǎo)致系統(tǒng)崩潰,因此,此步驟數(shù)據(jù)平面模塊必須要先判斷待處理的消息是否正確。步驟206,通過(guò)數(shù)據(jù)平面模塊調(diào)用該消息相應(yīng)的處理函數(shù),完成對(duì)該消息的處理,并返回到步驟202;如報(bào)文的收發(fā),CPU核間通信等,都有相應(yīng)的該消息的處理函數(shù),需要通過(guò)數(shù)據(jù)平面模塊調(diào)用該消息相應(yīng)的處理函數(shù),完成對(duì)該消息的處理。步驟207,直接丟棄該消息,并返回到步驟202。由于現(xiàn)有技術(shù)多核處理系統(tǒng)中,數(shù)據(jù)平面模塊上缺少類似控制平面模塊上的看門 狗模塊,當(dāng)數(shù)據(jù)平面模塊異常時(shí),譬如數(shù)據(jù)平面模塊中的某個(gè)數(shù)據(jù)平面核進(jìn)入死循環(huán)或者訪問(wèn)非法內(nèi)存時(shí),依據(jù)上述流程,由于沒(méi)有任何檢測(cè)數(shù)據(jù)平面核異常的機(jī)制,會(huì)導(dǎo)致數(shù)據(jù)平面核掛死的情況得不到及時(shí)的檢測(cè),進(jìn)而影響數(shù)據(jù)平面模塊的數(shù)據(jù)轉(zhuǎn)發(fā)和處理。為了解決上述問(wèn)題,本發(fā)明提供了一種數(shù)據(jù)平面異常檢測(cè)的方法和裝置,通過(guò)在控制平面上啟用一個(gè)定時(shí)器進(jìn)程,定時(shí)檢測(cè)各個(gè)數(shù)據(jù)平面核共享內(nèi)存中緩存的運(yùn)行標(biāo)識(shí)位和時(shí)間戳,在進(jìn)行定時(shí)檢測(cè)時(shí),先判斷各個(gè)數(shù)據(jù)平面核是否在運(yùn)行,如果在運(yùn)行,進(jìn)一步判斷當(dāng)前時(shí)間和共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳之間的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則判斷所述數(shù)據(jù)平面核已經(jīng)掛死,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息,同時(shí)重新啟動(dòng)該數(shù)據(jù)平面核或者數(shù)據(jù)平面整個(gè)CPU系統(tǒng)。如圖3所示,為本發(fā)明實(shí)施例提供的一個(gè)數(shù)據(jù)平面異常檢測(cè)的裝置,具體包括數(shù)據(jù)平面模塊和控制平面模塊,其中所述控制平面模塊進(jìn)一步包括定時(shí)器模塊和看門狗模塊。其中,所述看門狗模塊用以檢測(cè)控制平面模塊是否異常,并在控制平面模塊異常時(shí)重新啟動(dòng)控制平面。所述定時(shí)器模塊,定時(shí)檢測(cè)各個(gè)數(shù)據(jù)平面核共享內(nèi)存中緩存的運(yùn)行標(biāo)識(shí)位和時(shí)間戳,在定時(shí)檢測(cè)時(shí),先判斷各個(gè)數(shù)據(jù)平面核是否在運(yùn)行,如果在運(yùn)行,進(jìn)一步判斷當(dāng)前時(shí)間和共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳之間的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則判斷所述數(shù)據(jù)平面核已經(jīng)掛死,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息,同時(shí)重新啟動(dòng)該數(shù)據(jù)平面核或者整個(gè)CPU系統(tǒng)。為了實(shí)現(xiàn)所述控制平面模塊上的定時(shí)器模塊能夠定時(shí)檢測(cè)各個(gè)數(shù)據(jù)平面核的運(yùn)行標(biāo)識(shí)位和時(shí)間戳。在本發(fā)明實(shí)施例中,通過(guò)在數(shù)據(jù)平面模塊和控制平面模塊共享的一段物理內(nèi)存中記錄各數(shù)據(jù)平面核的運(yùn)行標(biāo)識(shí)位和時(shí)間戳,并通過(guò)控制平面定時(shí)器模塊定時(shí)檢測(cè)當(dāng)前時(shí)間與共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳之間的差值是否大于設(shè)定的時(shí)間閾值來(lái)判斷數(shù)據(jù)平面核是否掛死。具體地,各數(shù)據(jù)平面核通過(guò)各自的TLB (Translationlook-aside buffers, CPU的內(nèi)存管理單元,用于虛擬地址到物理地址的內(nèi)存映射)將其運(yùn)行標(biāo)識(shí)位和時(shí)間戳映射到各自的共享內(nèi)存虛擬空間,以32個(gè)核的多核處理系統(tǒng)為例,用一個(gè)32位的共享內(nèi)存保存各數(shù)據(jù)平面核的運(yùn)行狀態(tài)標(biāo)識(shí),首個(gè)bit位標(biāo)識(shí)控制平面核的運(yùn)行狀態(tài),其余的31個(gè)bit位,每個(gè)bit位標(biāo)識(shí)一個(gè)數(shù)據(jù)平面核的運(yùn)行狀態(tài),當(dāng)所述bit位為0時(shí),則表明該數(shù)據(jù)平面核處在休眠狀態(tài),而當(dāng)所述bit位為I時(shí),則表明該數(shù)據(jù)平面核處在運(yùn)行狀態(tài)。進(jìn)一步地,在本發(fā)明實(shí)施例中,還將用一個(gè)64位的共享內(nèi)存保存數(shù)據(jù)平面核的時(shí)間戳,具體如圖4所示。當(dāng)控制平面核啟動(dòng)后,首先引導(dǎo)啟動(dòng)所有的數(shù)據(jù)平面核,在所有數(shù)據(jù)平面核啟動(dòng)以后,設(shè)定網(wǎng)絡(luò)設(shè)備上該共享的物理內(nèi)存所有標(biāo)識(shí)數(shù)據(jù)平面核的bit位初始均默認(rèn)為0,表示該數(shù)據(jù)平面模塊上所有的核均處于休閑狀態(tài)。此后,當(dāng)數(shù)據(jù)平面核處理消息隊(duì)列時(shí),均需判斷待處理的消息隊(duì)列是否為空,如果待處理的消息隊(duì)列不為空,則將共享內(nèi)存中該數(shù)據(jù)平面核的檢測(cè)標(biāo)識(shí)位設(shè)置為1,表示數(shù)據(jù)平面核處在運(yùn)行中,并讀取當(dāng)前時(shí)間更新共享內(nèi)存中此前記錄的檢測(cè)該數(shù)據(jù)平面核的時(shí)間戳,同時(shí)接受該消息并判斷消息的類型,調(diào)用消息相應(yīng)的函數(shù)進(jìn)行處理。如果為空,則表明當(dāng)前的數(shù)據(jù)平面核處于空閑狀態(tài)。清除之前共享內(nèi)存中設(shè)置的表示該數(shù)據(jù)平面核在運(yùn)行的標(biāo)識(shí)位,將其重新設(shè)定為O,同時(shí)調(diào)用數(shù)據(jù)平面的CPU的消息等待處理,并進(jìn)入休眠狀態(tài),此后控制平面定時(shí)器模塊在該數(shù)據(jù)平面核處理新的消息隊(duì)列之前,不再對(duì)其進(jìn)行定時(shí)異常檢測(cè)。
假定在本發(fā)明實(shí)施例中,控制平面啟動(dòng)定時(shí)器模塊檢測(cè)數(shù)據(jù)平面核的時(shí)間間隔為32秒(需要說(shuō)明的是,該檢測(cè)時(shí)間間隔可以根據(jù)具體要求改變,此處僅以32秒為例,不得以此作為限縮本發(fā)明的范圍),控制平面定時(shí)器模塊每32秒檢測(cè)一次,先檢測(cè)共享內(nèi)存中該數(shù)據(jù)平面核對(duì)應(yīng)的運(yùn)行標(biāo)識(shí)位,判斷該數(shù)據(jù)平面核是否處于運(yùn)行中,如果處于運(yùn)行中,進(jìn)一步判斷當(dāng)前時(shí)間和共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則判斷所述數(shù)據(jù)平面核已經(jīng)掛死,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息,同時(shí)重新啟動(dòng)該數(shù)據(jù)平面核或數(shù)據(jù)平面整個(gè)CPU系統(tǒng)。如圖5所示,為本發(fā)明提供的一種數(shù)據(jù)平面異常檢測(cè)的方法流程圖,該方法應(yīng)用于包括數(shù)據(jù)平面和控制平面的多核處理系統(tǒng)中,其中所述控制平面包括一定時(shí)器模塊,所述方法包括步驟501,設(shè)定確認(rèn)數(shù)據(jù)平面核掛死的時(shí)間閾值以及控制平面定時(shí)器模塊檢測(cè)數(shù)據(jù)平面核的檢測(cè)時(shí)間,并啟動(dòng)控制平面定時(shí)器模塊;步驟502,控制平面定時(shí)器模塊按照設(shè)定的檢測(cè)時(shí)間定時(shí)對(duì)數(shù)據(jù)平面核進(jìn)行檢測(cè);具體地,在本發(fā)明實(shí)施例中,定時(shí)器模塊是通過(guò)定時(shí)檢測(cè)控制平面模塊和數(shù)據(jù)平面模塊共享物理內(nèi)存中記錄的各個(gè)數(shù)據(jù)平面核的運(yùn)行標(biāo)識(shí)位和時(shí)間戳來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)平面核的定時(shí)檢測(cè)。進(jìn)一步地,所述數(shù)據(jù)平面核的運(yùn)行標(biāo)識(shí)位是用一個(gè)32位的內(nèi)存來(lái)緩存,所述數(shù)據(jù)平面核檢測(cè)的時(shí)間戳是用一個(gè)64位的內(nèi)存來(lái)緩存。步驟503,判斷當(dāng)前時(shí)間和共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則進(jìn)入步驟504,否則返回步驟502 ;具體地,當(dāng)控制平面核啟動(dòng)后,首先引導(dǎo)啟動(dòng)所有的數(shù)據(jù)平面核,在所有數(shù)據(jù)平面核啟動(dòng)以后,設(shè)定網(wǎng)絡(luò)設(shè)備上該共享的物理內(nèi)存所有標(biāo)識(shí)數(shù)據(jù)平面核的bit位初始均默認(rèn)為0,表示該數(shù)據(jù)平面模塊上所有的核均處于休眠狀態(tài)。此后,當(dāng)數(shù)據(jù)平面核處理消息隊(duì)列時(shí),均需判斷待處理的消息隊(duì)列是否為空,如果待處理的消息隊(duì)列不為空,數(shù)據(jù)平面核此時(shí)退出休眠狀態(tài),并在共享內(nèi)存中將其對(duì)應(yīng)的運(yùn)行狀態(tài)位更改為1,表示該數(shù)據(jù)平面核處在運(yùn)行中,并讀取當(dāng)前時(shí)間更新此前共享內(nèi)存中記錄的檢測(cè)該數(shù)據(jù)平面核的時(shí)間戳,同時(shí)接受該消息并判斷消息的類型,調(diào)用消息相應(yīng)的函數(shù)進(jìn)行處理。如果為空,則表明當(dāng)前的數(shù)據(jù)平面核處于空閑狀態(tài),清除之前共享內(nèi)存中設(shè)置的表示該數(shù)據(jù)平面核在運(yùn)行的標(biāo)識(shí)位,將其重新設(shè)定為0,同時(shí)調(diào)用數(shù)據(jù)平面的CPU的消息等待處理,并進(jìn)入休眠狀態(tài),此后控制平面定時(shí)器模塊在該數(shù)據(jù)平面核處理新的消息隊(duì)列之前,不再對(duì)其進(jìn)行定時(shí)異常檢測(cè)。當(dāng)控制平面依據(jù)設(shè)定的檢測(cè)時(shí)間定時(shí)檢測(cè)各數(shù)據(jù)平面核時(shí),先檢測(cè)共享內(nèi)存中該數(shù)據(jù)平面核的運(yùn)行標(biāo)識(shí)位,判斷該數(shù)據(jù)平面核是否處于運(yùn)行中,如果處于運(yùn)行中,進(jìn)一步判斷當(dāng)前時(shí)間和共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則進(jìn)入步驟504。步驟504,確認(rèn)所述數(shù)據(jù)平面核已經(jīng)掛死,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息,重新啟動(dòng)該數(shù)據(jù)平面核或整個(gè)CPU系統(tǒng)后返回步驟502。如圖6所示,為本發(fā)明某一具體應(yīng)用場(chǎng)景下數(shù)據(jù)平面核處理數(shù)據(jù)流的方法流程圖。該方法包括步驟601,數(shù)據(jù)平面核啟動(dòng)數(shù)據(jù)處理線程;
步驟602,數(shù)據(jù)平面核判斷待處理的數(shù)據(jù)流消息隊(duì)列是否為空,如果為空,則進(jìn)行步驟603,否則進(jìn)入步驟604 ;步驟603,清除檢測(cè)標(biāo)識(shí)位,調(diào)用數(shù)據(jù)平面核CPU消息等待處理,同時(shí)進(jìn)入到休眠狀態(tài);本步驟中,CUP消息是一個(gè)CPU的特殊指令,當(dāng)前述數(shù)據(jù)消息隊(duì)列為空時(shí),該CPU消息指令會(huì)讓CPU進(jìn)入到休眠狀態(tài),直到新的消息隊(duì)列出現(xiàn)把他喚醒,當(dāng)然,實(shí)際過(guò)程中,軟件有時(shí)也把它封裝為函數(shù)。步驟604,數(shù)據(jù)平面核讀取待處理的消息隊(duì)列內(nèi)容;步驟605,數(shù)據(jù)平面核判斷消息是否正確,如果正確,則進(jìn)入步驟606,否則進(jìn)入步驟 607 ;由于錯(cuò)誤的消息是不正確的數(shù)據(jù)報(bào)文,如果處理起來(lái)可能會(huì)導(dǎo)致系統(tǒng)崩潰,因此,此步驟數(shù)據(jù)平面模塊必須要先判斷待處理的消息是否正確。步驟606,設(shè)置檢測(cè)標(biāo)識(shí)位,同時(shí)獲得當(dāng)前時(shí)間,刷新檢測(cè)時(shí)間戳,然后調(diào)用消息相應(yīng)的處理函數(shù),完成對(duì)該消息的處理,并返回到步驟602 ;如報(bào)文的收發(fā),CPU核間通信等,都有相應(yīng)的該消息的處理函數(shù),需要通過(guò)數(shù)據(jù)平面模塊調(diào)用該消息相應(yīng)的處理函數(shù),完成對(duì)該消息的處理。步驟607,直接丟棄該消息,并返回到步驟602。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)平面異常檢測(cè)的裝置,應(yīng)用于由控制平面模塊和數(shù)據(jù)平面模塊組成的多核處理系統(tǒng)中,其特征在于所述控制平面模塊進(jìn)一步包括定時(shí)器模塊,用以定時(shí)檢測(cè)各個(gè)數(shù)據(jù)平面核共享內(nèi)存中記錄的運(yùn)行標(biāo)識(shí)位和時(shí)間戳,在定時(shí)檢測(cè)時(shí),所述定時(shí)器模塊先判斷各個(gè)數(shù)據(jù)平面核是否在運(yùn)行,如果在運(yùn)行,進(jìn)一步判斷當(dāng)前時(shí)間和共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳之間的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則判斷所述數(shù)據(jù)平面核已經(jīng)掛死,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息,同時(shí)重新啟動(dòng)該數(shù)據(jù)平面核或者數(shù)據(jù)平面模塊上的整個(gè)CPU系統(tǒng)。
2.如權(quán)利要求I所述的裝置,其特征在于,所述定時(shí)器模塊判斷各個(gè)數(shù)據(jù)平面核是否在運(yùn)行具體為所述定時(shí)器模塊通過(guò)讀取共享內(nèi)存中記錄的各數(shù)據(jù)平面核的運(yùn)行標(biāo)識(shí)位來(lái)獲知。
3.如權(quán)利要求2所述的裝置,其特征在于,當(dāng)所述數(shù)據(jù)平面核在啟動(dòng)數(shù)據(jù)處理進(jìn)程后, 判斷待處理的消息隊(duì)列是否為空,如果待處理的消息隊(duì)列不為空,則表示所述數(shù)據(jù)平面核處在運(yùn)行中,否則,則表明當(dāng)前的數(shù)據(jù)平面核處于空閑狀態(tài),同時(shí)將所述運(yùn)行狀態(tài)對(duì)應(yīng)的標(biāo)識(shí)位更新到前述共享內(nèi)存中。
4.如權(quán)利要求3所述的裝置,其特征在于,當(dāng)所述數(shù)據(jù)平面核處在運(yùn)行時(shí),讀取當(dāng)前時(shí)間并將當(dāng)前時(shí)間更新到共享內(nèi)存中該數(shù)據(jù)平面核對(duì)應(yīng)的時(shí)間戳內(nèi),如果數(shù)據(jù)平面核處于空閑狀態(tài),則清除此前共享內(nèi)存中設(shè)置的表示該數(shù)據(jù)平面核在運(yùn)行的標(biāo)識(shí)位,并使該數(shù)據(jù)平面核進(jìn)入到休眠狀態(tài)。
5.如權(quán)利要求4所述的裝置,其特征在于,當(dāng)數(shù)據(jù)平面核進(jìn)入到休眠狀態(tài)時(shí),所述控制平面定時(shí)器模塊在該數(shù)據(jù)平面核處理新的消息隊(duì)列之前,將不再對(duì)該數(shù)據(jù)平面核進(jìn)行定時(shí)器檢測(cè)。
6.一種數(shù)據(jù)平面異常檢測(cè)的方法,應(yīng)用于包括數(shù)據(jù)平面和控制平面的多核處理系統(tǒng)中,其中所述控制平面包括有定時(shí)器模塊,其特征在于,所述方法包括 步驟501、設(shè)定確認(rèn)數(shù)據(jù)平面核掛死的時(shí)間閾值以及控制平面定時(shí)器模塊檢測(cè)數(shù)據(jù)平面核的檢測(cè)時(shí)間,并啟動(dòng)所述控制平面定時(shí)器模塊; 步驟502、控制平面定時(shí)器模塊按照設(shè)定的檢測(cè)時(shí)間定時(shí)對(duì)數(shù)據(jù)平面核進(jìn)行檢測(cè); 步驟503、判斷當(dāng)前時(shí)間和共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則進(jìn)入步驟504,否則返回步驟502 ; 步驟504,確認(rèn)所述數(shù)據(jù)平面核已經(jīng)掛死,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息,重新啟動(dòng)該數(shù)據(jù)平面核或數(shù)據(jù)平面整個(gè)CPU系統(tǒng)后返回步驟502。
7.如權(quán)利要求6所述的方法,其特征在于,步驟502控制平面定時(shí)器模塊是通過(guò)定時(shí)檢測(cè)各個(gè)數(shù)據(jù)平面核共享內(nèi)存中記錄的運(yùn)行標(biāo)識(shí)位和時(shí)間戳來(lái)實(shí)現(xiàn)的。
8.如權(quán)利要求7所述的方法,其特征在于,在定時(shí)檢測(cè)時(shí),所述定時(shí)器模塊還需先判斷各個(gè)數(shù)據(jù)平面核是否在運(yùn)行,如果在運(yùn)行,再進(jìn)行步驟503。
9.如權(quán)利要求8所述的方法,其特征在于,所述定時(shí)器模塊判斷各個(gè)數(shù)據(jù)平面核是否在運(yùn)行具體為所述定時(shí)器模塊通過(guò)讀取共享內(nèi)存中記錄的各數(shù)據(jù)平面核的運(yùn)行標(biāo)識(shí)位來(lái)獲知。
10.如權(quán)利要求9所述的方法,其特征在于,所述數(shù)據(jù)平面核在啟動(dòng)數(shù)據(jù)處理進(jìn)程后,判斷待處理的消息隊(duì)列是否為空,如果待處理的消息隊(duì)列不為空,則表示所述數(shù)據(jù)平面核處在運(yùn)行中,否則,則表明當(dāng)前的數(shù)據(jù)平面核處于空閑狀態(tài),同時(shí)將所述運(yùn)行狀態(tài)對(duì)應(yīng)的標(biāo)識(shí)位更新到共享內(nèi)存中。
11.如權(quán)利要求10所述的方法,其特征在于,當(dāng)所述數(shù)據(jù)平面核處在運(yùn)行時(shí),讀取當(dāng)前時(shí)間并將當(dāng)前時(shí)間更新到共享內(nèi)存中該數(shù)據(jù)平面核對(duì)應(yīng)的時(shí)間戳內(nèi),如果數(shù)據(jù)平面核處于空閑狀態(tài),則清除此前共享內(nèi)存中設(shè)置的表 示該數(shù)據(jù)平面核處在運(yùn)行的標(biāo)識(shí)位,并使該數(shù)據(jù)平面核進(jìn)入到休眠狀態(tài)。
12.如權(quán)利要求11所述的方法,其特征在于,當(dāng)數(shù)據(jù)平面核進(jìn)入到休眠狀態(tài)時(shí),所述控制平面定時(shí)器模塊在該數(shù)據(jù)平面核處理新的消息隊(duì)列之前,將不再對(duì)該數(shù)據(jù)平面核進(jìn)行定時(shí)器檢測(cè)。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)平面異常檢測(cè)的實(shí)現(xiàn)方法和裝置。在控制平面上啟用一個(gè)定時(shí)器進(jìn)程,定時(shí)檢測(cè)各個(gè)數(shù)據(jù)平面核共享內(nèi)存中記錄的運(yùn)行標(biāo)識(shí)位和時(shí)間戳。在定時(shí)檢測(cè)時(shí),先判斷各個(gè)數(shù)據(jù)平面核是否在運(yùn)行,如果在運(yùn)行,進(jìn)一步判斷當(dāng)前時(shí)間和前述共享內(nèi)存中記錄的該數(shù)據(jù)平面核的時(shí)間戳的差值是否大于設(shè)定的時(shí)間閾值,如果大于設(shè)定的時(shí)間閾值,則判斷所述數(shù)據(jù)平面核已經(jīng)掛死,保存該數(shù)據(jù)平面核的當(dāng)前寄存器和內(nèi)存中緩存的信息,同時(shí)重新啟動(dòng)該數(shù)據(jù)平面核或者數(shù)據(jù)平面整個(gè)CPU系統(tǒng)。
文檔編號(hào)G06F11/07GK102750192SQ201210188849
公開日2012年10月24日 申請(qǐng)日期2012年6月6日 優(yōu)先權(quán)日2012年6月6日
發(fā)明者付煉, 王其勇 申請(qǐng)人:杭州華三通信技術(shù)有限公司