專利名稱:多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多核CPU管理技木,特別涉及多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的方法及裝置。
背景技術(shù):
在通信領(lǐng)域中,隨著數(shù)據(jù)流量的日益増大,多核CPU已經(jīng)被廣泛應(yīng)用于各種通信設(shè)備。對多核CPU的管理方式一般有兩種1、通過操作系統(tǒng)來直接管理多核CPU,這種方式無法發(fā)揮多核CPU的最佳性能;2、將控制平面運(yùn)行在多核CPU的其中ー個核上,由操作系統(tǒng)直接管理(稱這個核為控制核),將數(shù)據(jù)平面運(yùn)行于多核CPU的另一部分核上(稱這些核為數(shù)據(jù)核)。由于數(shù)據(jù)核只參與數(shù)據(jù)的處理,處理過程比較簡単。因此,在數(shù)據(jù)核上運(yùn)行自定義的單任務(wù),所述單任務(wù)在有數(shù)據(jù)的時候則處理數(shù)據(jù),在沒有數(shù)據(jù)的時候則空轉(zhuǎn)。在多核通信系統(tǒng)運(yùn)行過程中,如果某個數(shù)據(jù)核出現(xiàn)故障,則到達(dá)該數(shù)據(jù)核的數(shù)據(jù)無法得到處理,導(dǎo)致丟失部分?jǐn)?shù)據(jù)報文,很可能引起網(wǎng)絡(luò)中斷;因此,如何檢測及恢復(fù)數(shù)據(jù)核的故障就顯得尤為重要。在申請人申請的一件申請?zhí)枮?00710048366. 6的發(fā)明專利《多核系統(tǒng)單核異常的恢復(fù)方法》中,描述了ー種數(shù)據(jù)核故障的檢測方法,但該檢測方法只能檢測到數(shù)據(jù)訪問例外的故障,無法檢測到類似死循環(huán)或者單核硬件故障。在華為三康公司申請的一件申請?zhí)枮?00910169848. 6的發(fā)明專利《多核系統(tǒng)的故障恢復(fù)方法和設(shè)備》中,描述了ー種檢測數(shù)據(jù)核故障方法,該方法通過觀察數(shù)據(jù)核接收數(shù)據(jù)狀態(tài)是否正確來判斷數(shù)據(jù)核是否出現(xiàn)故障,為了在沒有接收數(shù)據(jù)的情形下不發(fā)生誤判,控制核需要向數(shù)據(jù)核發(fā)送檢測報文,即需要核間通信配合才能完成故障檢測,這樣増加了故障檢測復(fù)雜性。這里的核間通信是指多核CPU系統(tǒng)中,一個核向其它核發(fā)送報文。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提出一種多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的方法和裝置,解決傳統(tǒng)技術(shù)中檢測數(shù)據(jù)核故障需要依賴于報文接收和核間通信,増加了故障檢測復(fù)雜性的問題。本發(fā)明解決上述技術(shù)問題所采用的方案是多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的裝置,包括數(shù)據(jù)核監(jiān)控任務(wù)模塊、數(shù)據(jù)核自定義任務(wù)模塊、數(shù)據(jù)核自定義任務(wù)計數(shù)模塊;所述數(shù)據(jù)核監(jiān)控任務(wù)模塊,用于在多核通信系統(tǒng)的控制核上周期性運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù),毎次運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)時,檢測數(shù)據(jù)核自定義任務(wù)計數(shù)模塊對數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)的統(tǒng)計情況,當(dāng)數(shù)據(jù)核監(jiān)控任務(wù)模塊本次運(yùn)行時檢測到某個數(shù)據(jù)核自定義任務(wù)計數(shù)模塊的統(tǒng)計次數(shù)與上次運(yùn)行時檢測到的統(tǒng)計次數(shù)一致,則判定為該數(shù)據(jù)核出現(xiàn)故障;所述數(shù)據(jù)核自定義任務(wù)模塊,用于在多核通信系統(tǒng)的數(shù)據(jù)核上不間斷的循環(huán)運(yùn)行數(shù)據(jù)核自定義任務(wù);所述數(shù)據(jù)核自定義任務(wù)計數(shù)模塊,用于對數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)進(jìn)行統(tǒng)計;進(jìn)ー步,該裝置還包括數(shù)據(jù)核故障處理模塊,所述數(shù)據(jù)核故障處理模塊用于釋放出現(xiàn)故障的數(shù)據(jù)核的所占資源,并對該數(shù)據(jù)核進(jìn)行重 啟。進(jìn)ー步,所述周期性的運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)是指數(shù)據(jù)核監(jiān)控任務(wù)每睡眠ー個周期運(yùn)行一次。進(jìn)ー步,所述自定義任務(wù)檢測到有數(shù)據(jù)時則處理數(shù)據(jù),沒有數(shù)據(jù)時則空轉(zhuǎn)。多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的方法,包括在多核通信系統(tǒng)的各數(shù)據(jù)核上不間斷的運(yùn)行數(shù)據(jù)核自定義任務(wù),并對數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)進(jìn)行統(tǒng)計;在多核通信系統(tǒng)的控制核上周期性的運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù),毎次運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)時都檢測對各數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)的統(tǒng)計情況,如果本次運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)時檢測到某個數(shù)據(jù)核的數(shù)據(jù)核自定義任務(wù)運(yùn)行次數(shù)與上一次運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)時檢測到的該數(shù)據(jù)核的數(shù)據(jù)核自定義任務(wù)運(yùn)行次數(shù)一致,則判定為該數(shù)據(jù)核出現(xiàn)故障。進(jìn)ー步,在判定某個數(shù)據(jù)核出現(xiàn)故障后,釋放該數(shù)據(jù)核所占資源,并對該數(shù)據(jù)核進(jìn)行重啟。進(jìn)ー步,所述周期性的運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)是指數(shù)據(jù)核監(jiān)控任務(wù)每睡眠ー個周期運(yùn)行一次。進(jìn)ー步,所述自定義任務(wù)檢測到有數(shù)據(jù)時則處理數(shù)據(jù),沒有數(shù)據(jù)時則空轉(zhuǎn)。本發(fā)明的有益效果是通過在數(shù)據(jù)核上循環(huán)運(yùn)行自定義任務(wù)并同時對運(yùn)行次數(shù)進(jìn)行統(tǒng)計,在控制核上周期性的運(yùn)行監(jiān)控任務(wù),對自定義任務(wù)的運(yùn)行次數(shù)的統(tǒng)計狀態(tài)進(jìn)行檢測,根據(jù)前后兩次的檢測情況對比從而判斷是否出現(xiàn)數(shù)據(jù)核故障,該方式不依賴于報文接收和核間通信,檢測方法簡單、消耗系統(tǒng)資源少。
圖I為本發(fā)明中的多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的裝置結(jié)構(gòu)框圖;圖2為數(shù)據(jù)核自定義任務(wù)運(yùn)行流程圖;圖3為數(shù)據(jù)核監(jiān)控任務(wù)運(yùn)行流程圖。
具體實施例方式在多核CPU通信系統(tǒng)中,分為ー個控制核和多個數(shù)據(jù)核,控制核和數(shù)據(jù)核共享內(nèi)存。如圖I所示,本發(fā)明中的多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的裝置,包括數(shù)據(jù)核監(jiān)控任務(wù)模塊、數(shù)據(jù)核自定義任務(wù)模塊、數(shù)據(jù)核自定義任務(wù)計數(shù)模塊;所述數(shù)據(jù)核監(jiān)控任務(wù)模塊,用于在多核通信系統(tǒng)的控制核上周期性運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù),毎次運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)時,檢測數(shù)據(jù)核自定義任務(wù)計數(shù)模塊對數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)的統(tǒng)計情況,當(dāng)數(shù)據(jù)核監(jiān)控任務(wù)模塊本次運(yùn)行時檢測到某個數(shù)據(jù)核自定義任務(wù)計數(shù)模塊的統(tǒng)計次數(shù)與上次運(yùn)行時檢測到的統(tǒng)計次數(shù)一致,則判定為該數(shù)據(jù)核出現(xiàn)故障;
所述數(shù)據(jù)核自定義任務(wù)模塊,用于在多核通信系統(tǒng)的數(shù)據(jù)核上不間斷的循環(huán)運(yùn)行數(shù)據(jù)核自定義任務(wù);所述數(shù)據(jù)核自定義任務(wù)計數(shù)模塊,用于對數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)進(jìn)行統(tǒng)計;
周期性運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)是指,數(shù)據(jù)核監(jiān)控任務(wù)每睡眠ー個周期運(yùn)行一次,而至于ー個周期的長短是ー個經(jīng)驗值。由于數(shù)據(jù)核上的數(shù)據(jù)核自定義任務(wù)是一直不間斷運(yùn)行的,自定義任務(wù)每運(yùn)行一次(包括空轉(zhuǎn))就被自定義任務(wù)計數(shù)模塊統(tǒng)計一次,因此,在正常情況下,數(shù)據(jù)核監(jiān)控任務(wù)上次運(yùn)行至本次運(yùn)行的ー個周期內(nèi),自定義任務(wù)是要運(yùn)行多次的,那么同時也被自定義任務(wù)計數(shù)模塊統(tǒng)計多次,即數(shù)據(jù)核監(jiān)控任務(wù)本次運(yùn)行時檢測到的統(tǒng)計次數(shù)應(yīng)該與上次檢測到的統(tǒng)計次數(shù)不一樣,而如果兩者數(shù)據(jù)沒有發(fā)生變化,則說明數(shù)據(jù)核上出現(xiàn)故障。為了減少故障修復(fù)對網(wǎng)絡(luò)影響足夠小,在某個數(shù)據(jù)核出現(xiàn)故障后,只對該故障數(shù)據(jù)核進(jìn)行故障修復(fù)處理釋放故障數(shù)據(jù)核所站資源,并對故障數(shù)據(jù)核進(jìn)行單核重起。下面結(jié)合附圖及實施例對本發(fā)明中的多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的方法進(jìn)行描述在多核CPU中,我們對控制核編號為0,其余N個數(shù)據(jù)核分別編號為1、2、
3......N(N大于等于I且為整數(shù)),在控制核上周期性運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù),在每個數(shù)據(jù)核
上無間斷循環(huán)運(yùn)行數(shù)據(jù)核自定義任務(wù);使用ー個N+1維無符號整數(shù)數(shù)組sCoreRunCnt統(tǒng)計各個數(shù)據(jù)核上數(shù)據(jù)核自定義任務(wù)運(yùn)行的次數(shù),稱為數(shù)據(jù)核自定義任務(wù)運(yùn)行次數(shù)變量,記為sCoreRunCnt[N+l]。數(shù)組成員sCoreRunCnt[i]記錄數(shù)據(jù)核i上的自定義任務(wù)運(yùn)行次數(shù),當(dāng)任意一個數(shù)據(jù)核i(i = I,2,. . . N)上的自定義任務(wù)被調(diào)度時累加數(shù)組成員sCoreRunCnt [i]的值;使用另ー個N+1維無符號整數(shù)數(shù)組SCoreRefRunCnt記錄控制核從sCoreRunCnt [N+1]變量讀到的值,稱為數(shù)據(jù)核自定義任務(wù)運(yùn)行參考變量,記為SCoreRefRunCnt [N+1]。對于數(shù)據(jù)核(i = 1,2,. . .N)上運(yùn)行的自定義任務(wù)的運(yùn)行流程參見圖2,首先,系統(tǒng)將相關(guān)變量(包括sCoreRunCnt [N+1]和sCoreRefRunCnt [N+1])初始化為O。數(shù)據(jù)核i (i=1,2,...N)上的自定義任務(wù)運(yùn)行時,數(shù)據(jù)核i(i = 1,2,...N)上的自定義任務(wù)計數(shù)模塊對自定義任務(wù)運(yùn)行次數(shù)sCoreRunCnt [i]進(jìn)行累加,如果數(shù)據(jù)核收到數(shù)據(jù),則對數(shù)據(jù)進(jìn)行處理,如果未收到數(shù)據(jù),則進(jìn)行空轉(zhuǎn)。對于控制核上運(yùn)行的數(shù)據(jù)核監(jiān)控任務(wù)的運(yùn)行流程參見圖3,監(jiān)控任務(wù)每睡眠ー個周期運(yùn)行一次,每次運(yùn)行時對所有數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)進(jìn)行讀取,即讀取sCoreRunCnt [N+1]的各個成員的值,并與自定義任務(wù)運(yùn)行參考變量sCoreRefRunCnt [N+1]的對應(yīng)成員進(jìn)行比較,如果 sCoreRunCnt [i]不等于 sCoreRefRunCnt [i] (i = 1,2, . . . N),則說明數(shù)據(jù)核i(i = 1,2, ...N)上的自定義任務(wù)運(yùn)行正常,數(shù)據(jù)核i(i = 1,2, ...N)無故障,更新參考變量sCoreRefRunCnt [i] = sCoreRunCnt [i];如果 sCoreRunCnt [i]等于sCoreRefRunCnt [i],則說明數(shù)據(jù)核i上的自定義任務(wù)運(yùn)行不正常,數(shù)據(jù)核i (i = I, 2,. . . N)上的自定義任務(wù)出現(xiàn)了死循環(huán)等故障,則需要對出現(xiàn)故障的數(shù)據(jù)核i(i = 1,2, ...N)進(jìn)行故障恢復(fù)處理釋放故障數(shù)據(jù)核所站資源,并對故障數(shù)據(jù)核進(jìn)行單核重起。上述方法的基本思想是基于監(jiān)控任務(wù)是周期性的運(yùn)行,而自定義任務(wù)是不間斷循環(huán)運(yùn)行,只要在進(jìn)行檢測之前將自定義任務(wù)變量和運(yùn)行參考變量均初始化為O,在監(jiān)控任務(wù)下一次運(yùn)行吋,正常情況下讀取到自定義任務(wù)運(yùn)行的統(tǒng)計次數(shù)應(yīng)該與運(yùn)行參考變量不一致,而如果一致,則說明數(shù)據(jù)核在控制核睡眠的這ー個周期內(nèi)并未運(yùn)行,即數(shù)據(jù)核出現(xiàn)故障;如果監(jiān)控任務(wù)讀取到自定義任務(wù)運(yùn)行的統(tǒng)計次數(shù)與運(yùn)行參考變量不一致,則說明數(shù)據(jù)核在控制核睡眠的 這ー個周期內(nèi)運(yùn)行正常,則更新參考變量。
權(quán)利要求
1.多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的裝置,其特征在于,包括數(shù)據(jù)核監(jiān)控任務(wù)模塊、數(shù)據(jù)核自定義任務(wù)模塊、數(shù)據(jù)核自定義任務(wù)計數(shù)模塊; 所述數(shù)據(jù)核監(jiān)控任務(wù)模塊,用于在多核通信系統(tǒng)的控制核上周期性運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù),每次運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)時,檢測數(shù)據(jù)核自定義任務(wù)計數(shù)模塊對數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)的統(tǒng)計情況,當(dāng)數(shù)據(jù)核監(jiān)控任務(wù)模塊本次運(yùn)行時檢測到某個數(shù)據(jù)核自定義任務(wù)計數(shù)模塊的統(tǒng)計次數(shù)與上次運(yùn)行時檢測到的統(tǒng)計次數(shù)一致,則判定為該數(shù)據(jù)核出現(xiàn)故障; 所述數(shù)據(jù)核自定義任務(wù)模塊,用于在多核通信系統(tǒng)的數(shù)據(jù)核上不間斷的循環(huán)運(yùn)行數(shù)據(jù)核自定義任務(wù); 所述數(shù)據(jù)核自定義任務(wù)計數(shù)模塊,用于對數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)進(jìn)行統(tǒng)計。
2.如權(quán)利要求I所述的多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的裝置,其特征在于,該裝置還包括數(shù)據(jù)核故障處理模塊,所述數(shù)據(jù)核故障處理模塊用于釋放出現(xiàn)故障的數(shù)據(jù)核的所占資源,并對該數(shù)據(jù)核進(jìn)行重啟。
3.如權(quán)利要求I或2所述的多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的裝置,其特征在于,所述周期性的運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)是指數(shù)據(jù)核監(jiān)控任務(wù)每睡眠一個周期運(yùn)行一次。
4.如權(quán)利要求I或2所述的多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的裝置,其特征在于,所述自定義任務(wù)檢測到有數(shù)據(jù)時則處理數(shù)據(jù),沒有數(shù)據(jù)時則空轉(zhuǎn)。
5.多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的方法,其特征在于,包括在多核通信系統(tǒng)的各數(shù)據(jù)核上不間斷的運(yùn)行數(shù)據(jù)核自定義任務(wù),并對數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)進(jìn)行統(tǒng)計;在多核通信系統(tǒng)的控制核上周期性的運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù),每次運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)時都檢測對各數(shù)據(jù)核自定義任務(wù)的運(yùn)行次數(shù)的統(tǒng)計情況,如果本次運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)時檢測到某個數(shù)據(jù)核的數(shù)據(jù)核自定義任務(wù)運(yùn)行次數(shù)與上一次運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)時檢測到的該數(shù)據(jù)核的數(shù)據(jù)核自定義任務(wù)運(yùn)行次數(shù)一致,則判定為該數(shù)據(jù)核出現(xiàn)故障。
6.如權(quán)利要求5所述的多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的方法,其特征在于,在判定某個數(shù)據(jù)核出現(xiàn)故障后,釋放該數(shù)據(jù)核所占資源,并對該數(shù)據(jù)核進(jìn)行重啟。
7.如權(quán)利要求5或6所述的多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的方法,其特征在于,所述周期性的運(yùn)行數(shù)據(jù)核監(jiān)控任務(wù)是指數(shù)據(jù)核監(jiān)控任務(wù)每睡眠一個周期運(yùn)行一次。
8.如權(quán)利要求5或6所述的多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的方法,其特征在于,所述自定義任務(wù)檢測到有數(shù)據(jù)時則處理數(shù)據(jù),沒有數(shù)據(jù)時則空轉(zhuǎn)。
全文摘要
本發(fā)明涉及多核CPU管理技術(shù),其公開了一種多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的方法,解決傳統(tǒng)技術(shù)中檢測數(shù)據(jù)核故障需要依賴于報文接收和核間通信,增加了故障檢測復(fù)雜性的問題。本發(fā)明通過在數(shù)據(jù)核上循環(huán)運(yùn)行自定義任務(wù)并同時對運(yùn)行次數(shù)進(jìn)行統(tǒng)計,在控制核上周期性的運(yùn)行監(jiān)控任務(wù),對自定義任務(wù)的運(yùn)行次數(shù)的統(tǒng)計狀態(tài)進(jìn)行檢測,根據(jù)前后兩次的檢測情況對比從而判斷是否出現(xiàn)數(shù)據(jù)核故障,該方式不依賴于報文接收和核間通信,檢測方法簡單、消耗系統(tǒng)資源少。此外,本發(fā)明還公開了一種多核通信系統(tǒng)中檢測數(shù)據(jù)核故障的裝置,適用于具備多核CPU的通信系統(tǒng)。
文檔編號G06F11/34GK102629228SQ20121012663
公開日2012年8月8日 申請日期2012年4月26日 優(yōu)先權(quán)日2012年4月26日
發(fā)明者何三波 申請人:邁普通信技術(shù)股份有限公司