專利名稱:多核系統(tǒng)的故障恢復(fù)方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種多核系統(tǒng)的故障恢復(fù)方法和設(shè)備。
背景技術(shù):
隨著數(shù)據(jù)流量的增大,在網(wǎng)絡(luò)處理設(shè)備中逐步采用多核CPU進(jìn)行數(shù)據(jù)業(yè) 務(wù)處理,在一些高端的網(wǎng)絡(luò)設(shè)備的CPU處理芯片甚至已經(jīng)有多達(dá)數(shù)十個CPU 核心,在多核CPU的應(yīng)用中,有的系統(tǒng)是直接通過操作系統(tǒng)來管理多核系統(tǒng), 業(yè)務(wù)本身并不關(guān)心是具體運(yùn)行到哪個CPU核上,這樣的系統(tǒng)開發(fā)簡單,但無
法達(dá)到最佳的處理能力。
對于一些高端的網(wǎng)絡(luò)設(shè)備,通常不使用操作系統(tǒng)來管理核心,而是應(yīng)用
系統(tǒng)自己直接管理CPU核心, 一個系統(tǒng)中通常包括2部分, 一部分是控制部分,
完成系統(tǒng)的各種控制功能,控制部分對性能要求不高,但處理復(fù)雜,通常需 要操作系統(tǒng)來配合工作。而數(shù)據(jù)轉(zhuǎn)發(fā)業(yè)務(wù)處理部分,則由數(shù)據(jù)包驅(qū)動,完成 數(shù)據(jù)包的業(yè)務(wù)處理和轉(zhuǎn)發(fā),這個過程簡單,但對性能要求很高,例如數(shù)據(jù)包 的轉(zhuǎn)發(fā)功能,就是^^文進(jìn)入后,獲取報文的目的IP地址,然后查路由表,然后 根據(jù)路由表的結(jié)果,將報文從出接口轉(zhuǎn)發(fā)出去,它處理簡單。處理數(shù)據(jù)的過 程比較簡單,可以不依賴獨(dú)立操作系統(tǒng),而是程序直接控制數(shù)據(jù)核的運(yùn)行。 既然控制面性能要求不高,但處理復(fù)雜,所以我們通常使用一個內(nèi)核作
為控制面處理CPU,我們簡稱控制核,上面運(yùn)行復(fù)雜的控制系統(tǒng)和完整的操
作系統(tǒng)。其余的核心用于數(shù)據(jù)轉(zhuǎn)發(fā)業(yè)務(wù),我們簡稱數(shù)據(jù)核,這些核則不運(yùn)行 操作系統(tǒng),直接由數(shù)據(jù)包驅(qū)動進(jìn)行業(yè)務(wù)處理,這樣可以筒化操作系統(tǒng)的開銷, 提升性能。
現(xiàn)有的技術(shù)一般是CPU出現(xiàn)故障,會重啟整個單板甚至整個系統(tǒng)進(jìn)行恢復(fù)。在實現(xiàn)本發(fā)明的過程中,申請人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題
對于多核系統(tǒng),由于控制核是系統(tǒng)的控制核心,如果控制核出現(xiàn)故障, 必然導(dǎo)致整個系統(tǒng)崩潰,只能重啟單板或系統(tǒng)才能恢復(fù),但數(shù)據(jù)核出現(xiàn)故障, 則不一定會導(dǎo)致系統(tǒng)故障, 一個核故障可能就只是該核不能工作,其它數(shù)據(jù) 核照樣的能夠正常工作,對于一個有數(shù)十個內(nèi)核的多核處理器來說,只損失 了少量的處理能力,性能只是輕微下降,不會出現(xiàn)業(yè)務(wù)完全中斷,這時如果 重啟單板或系統(tǒng)不是最佳選擇,但如果不做任何處理,系統(tǒng)性能可能會隨著 故障處理核的增加,而逐步增加,最后還是可能因為性能下降嚴(yán)重導(dǎo)致網(wǎng)絡(luò) 堵塞,造成網(wǎng)絡(luò)事故。
發(fā)明內(nèi)容
本發(fā)明提供一種多核系統(tǒng)的故障恢復(fù)方法和設(shè)備,能夠有效的單獨(dú)監(jiān)控 數(shù)據(jù)核,如果數(shù)據(jù)核出現(xiàn)故障則對該故障核進(jìn)行單獨(dú)恢復(fù),使系統(tǒng)能夠及時 恢復(fù)正常。
為達(dá)到上述目的,本發(fā)明一方面提供了 一種多核系統(tǒng)的故障恢復(fù)方法,
應(yīng)用于包括一個控制核和多個數(shù)據(jù)核的多核系統(tǒng)中,所述方法包括
所述控制核按照預(yù)設(shè)的檢測周期檢測各數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)是否正
常;
當(dāng)所述控制核檢測到一個數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常時,所述控制核 重啟所述數(shù)據(jù)核,并釋放所述數(shù)據(jù)核所占用的資源;
所述數(shù)據(jù)核所占用的資源釋放完畢后,所述控制核喚醒所述數(shù)據(jù)核進(jìn)行 業(yè)務(wù)處理。
優(yōu)選的,所述各數(shù)據(jù)核中設(shè)置計數(shù)器,為對應(yīng)的數(shù)據(jù)核所接收的數(shù)據(jù)包 進(jìn)行計數(shù),所述控制核按照預(yù)設(shè)的檢測周期檢測各數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)是 否正常,具體為
所述控制核按照預(yù)設(shè)的檢測周期檢測各數(shù)據(jù)核的的計數(shù)器中的計數(shù)值是 否發(fā)生變化;
當(dāng)所述控制核檢測到一個數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值在一個檢測周
6個檢測周期內(nèi)沒有發(fā)生變化,則所述控制核 確定所述數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常。
優(yōu)選的,所述當(dāng)控制核檢測到一個數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值在連 續(xù)在多個檢測周期內(nèi)沒有發(fā)生變化,則所述控制核確定所述數(shù)據(jù)核的數(shù)據(jù)接
收狀態(tài)不正常,具體為
當(dāng)一個數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值沒有發(fā)生變化時,所述控制核重
啟所述數(shù)據(jù)核,并釋^L所述數(shù)據(jù)核所占用的資源,還包括
當(dāng)一個數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值沒有發(fā)生變化時,所述控制核生 成所述數(shù)據(jù)核的一次無變化記錄;
如果所述控制核在下一個檢測周期內(nèi);f企測到所述數(shù)據(jù)核所對應(yīng)的計數(shù)器 中的數(shù)值發(fā)生變化,所述控制核清空所述數(shù)據(jù)核當(dāng)前的所有無變化記錄,如 果所述控制核在下一個檢測周期內(nèi)檢測到所述數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù) 值沒有發(fā)生變化,所述控制核生成所述數(shù)據(jù)核的再一次無變化記錄;
當(dāng)所述控制核判斷所述數(shù)據(jù)核的無變化記錄達(dá)到預(yù)設(shè)的記錄數(shù)量閾值 時,所述控制核確定所述數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常。
優(yōu)選的,所述方法還包括
所述控制核按照預(yù)設(shè)的發(fā)送周期向各數(shù)據(jù)核發(fā)送檢測報文,其中,所述 檢測周期大于所述發(fā)送周期。
優(yōu)選的,當(dāng)所述控制核檢測到一個數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常時,所 述控制核重啟所述數(shù)據(jù)核,并釋放所述數(shù)據(jù)核所占用的資源,具體包括
所述控制核清除所述數(shù)據(jù)核的喚醒標(biāo)識,重啟所述數(shù)據(jù)核,并釋放所述 數(shù)據(jù)核所占用的資源;
其中,所述數(shù)據(jù)核所占用的資源包括以下的至少一種信息
所述數(shù)據(jù)核所加鎖的全部鎖資源;
所述數(shù)據(jù)核當(dāng)前沒有釋放的全部數(shù)據(jù)包;
所述數(shù)據(jù)核當(dāng)前獨(dú)占的全部內(nèi)存資源。
優(yōu)選的,所述控制核喚醒所述數(shù)據(jù)核進(jìn)行業(yè)務(wù)處理,具體為所述控制核 為所述數(shù)據(jù)核添加喚醒標(biāo)識,所述方法還包括所述數(shù)據(jù)核重啟后,按照預(yù)設(shè)的喚醒周期檢測當(dāng)前是否被所述控制核添
加喚醒標(biāo)識;
當(dāng)所述數(shù)據(jù)核檢測到被所述控制核添加喚醒標(biāo)識時,所述數(shù)據(jù)核進(jìn)行正 常的業(yè)務(wù)處理。
優(yōu)選的,所述方法還包括
當(dāng)所述控制核檢測到所述多核系統(tǒng)中的數(shù)據(jù)接收狀態(tài)不正常的數(shù)據(jù)核的 數(shù)量超過預(yù)設(shè)的故障數(shù)量閾值,或一個或多個數(shù)據(jù)核連續(xù)發(fā)生故障時,所述 控制核重啟包含所述控制核和數(shù)據(jù)核的單板。
另一方面,本發(fā)明還提供了一種單板,包括一個控制核和多個數(shù)據(jù)核, 其中
所述控制核,用于按照預(yù)設(shè)的檢測周期檢測各數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)是 否正常,當(dāng)檢測到一個數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常時,重啟所述數(shù)據(jù)核, 并釋放所述數(shù)據(jù)核所占用的資源,并在所述數(shù)據(jù)核所占用的資源釋放完畢后, 喚醒所述數(shù)據(jù)核進(jìn)行業(yè)務(wù)處理。
優(yōu)選的,所述控制核具體包括
設(shè)置模塊,用于設(shè)置檢測數(shù)據(jù)核的檢測周期;
檢測模塊,用于按照所述設(shè)置模塊所設(shè)置的檢測周期檢測各數(shù)據(jù)核的數(shù) 據(jù)接收狀態(tài)是否正常;
處理模塊,用于當(dāng)所述檢測模塊檢測到一個數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正 常時,重啟所述數(shù)據(jù)核,并釋放所述數(shù)據(jù)核所占用的資源,并在所述數(shù)據(jù)核 所占用的資源釋放完畢后,喚醒所述數(shù)據(jù)核進(jìn)行業(yè)務(wù)處理。
優(yōu)選的,所述數(shù)據(jù)核還包括計數(shù)器,用于為對應(yīng)的數(shù)據(jù)核所接收的數(shù)據(jù) 包進(jìn)行計數(shù);
所述控制核還包括發(fā)送模塊和/或記錄模塊,其中
所述發(fā)送模塊,用于預(yù)設(shè)的發(fā)送周期向各數(shù)據(jù)核發(fā)送檢測報文,其中, 所述發(fā)送周期通過所述設(shè)置模塊進(jìn)行設(shè)置,且所述檢測周期大于所述發(fā)送周 期;所述記錄模塊,用于當(dāng)所述檢測模塊檢測到一個數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài) 不正常時,記錄所述數(shù)據(jù)核的故障狀態(tài)和故障時間。
優(yōu)選的,所述處理模塊還用于在重啟所述數(shù)據(jù)核時清除所述數(shù)據(jù)核的喚 醒標(biāo)識,重啟所述數(shù)據(jù)核,并在所述數(shù)據(jù)核所占用的資源釋放完畢后,為所
述數(shù)據(jù)核添加喚醒標(biāo)識;
所述數(shù)據(jù)核,用于在重啟后^f企測當(dāng)前是否被所述控制核添加喚醒標(biāo)識, 并在所述數(shù)據(jù)核;險測到被所述控制核添加喚醒標(biāo)識時,進(jìn)行正常的業(yè)務(wù)處理。
優(yōu)選的,所述處理模塊還用于當(dāng)所述控制核檢測到所述多核系統(tǒng)中的數(shù) 據(jù)接收狀態(tài)不正常的數(shù)值沒有發(fā)生變化的數(shù)據(jù)核的數(shù)量超過預(yù)設(shè)的故障數(shù)量 閾值,或一個或多個數(shù)據(jù)核連續(xù)發(fā)生故障時,重啟所述單板。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)
通過應(yīng)用本發(fā)明的技術(shù)方案,能夠準(zhǔn)確的發(fā)現(xiàn)多核系統(tǒng)中數(shù)據(jù)核工作異 常的情況,在保證不影響系統(tǒng)業(yè)務(wù)的情況下,對故障核進(jìn)行自動恢復(fù),提高 了系統(tǒng)的可靠性。
圖1為本發(fā)明提出的一種多核系統(tǒng)的故障恢復(fù)方法的流程示意圖; 圖2為本發(fā)明所提供的一種保存鎖資源信息示意圖; 圖3為本發(fā)明所提供的具體應(yīng)用場景下的一種多核系統(tǒng)的故障恢復(fù)方法 的流程示意圖4為本發(fā)明所提供的具體應(yīng)用場景下的另一種多核系統(tǒng)的故障恢復(fù)方 法的流程示意圖5為本發(fā)明所提供一種單板的結(jié)構(gòu)示意圖。
具體實施例方式
如背景技術(shù)所述,傳統(tǒng)的故障處理方式不能保證對多核系統(tǒng)中的故障核 進(jìn)行及時的處理,或者不能保證在處理過程中不影響當(dāng)前的系統(tǒng)業(yè)務(wù)。 本發(fā)明的技術(shù)方案采用對各數(shù)據(jù)核的狀態(tài)監(jiān)控及相應(yīng)的故障恢復(fù)機(jī)制,實現(xiàn)對多核系統(tǒng)中故障核的及時發(fā)現(xiàn)和處理,解決了現(xiàn)有技術(shù)所存在的不足。 本發(fā)明提出了一種多核系統(tǒng)的故障恢復(fù)方法,應(yīng)用于包括一個控制核和
多個凝:據(jù)核的多核系統(tǒng)中。
如圖1所示,為本發(fā)明提出的 一 種多核系統(tǒng)的故障恢復(fù)方法的流程示意
圖,具體包括以下步驟 否正常。
當(dāng)控制核檢測到一個數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常時,執(zhí)行步驟S 102; 當(dāng)控制核沒有檢測到各數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)均正常時,重復(fù)執(zhí)行步驟 S101。
在具體的應(yīng)用場景中,本步驟的具體實現(xiàn)方式可以是通過在各數(shù)據(jù)核中 分別設(shè)置計數(shù)器,為對應(yīng)的數(shù)據(jù)核所接收的數(shù)據(jù)包進(jìn)行計數(shù),而控制核則根 據(jù)對各計數(shù)器的檢測結(jié)果確定相應(yīng)的數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)是否正常,具體
的才企測實現(xiàn)流程如下
控制核按照預(yù)設(shè)的檢測周期檢測各數(shù)據(jù)核的的計數(shù)器中的計數(shù)值是否發(fā) 生變化;
當(dāng)控制核檢測到 一個數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值在一個檢測周期中 沒有發(fā)生變化,或連續(xù)在多個檢測周期內(nèi)沒有發(fā)生變化,則控制核確定該數(shù) 據(jù)核的數(shù)據(jù)接收狀態(tài)不正常。
其中, 一個數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值在連續(xù)在多個檢測周期內(nèi)沒 有發(fā)生變化的處理流程如下
當(dāng)控制核檢測到 一個數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值沒有發(fā)生變化時, 控制核生成數(shù)據(jù)核的一次無變化記錄;
如果控制核在下一個檢測周期內(nèi)檢測到數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值 發(fā)生變化,控制核清空數(shù)據(jù)核當(dāng)前的所有無變化記錄,如果控制核在下一個 檢測周期內(nèi)檢測到數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值沒有發(fā)生變化,控制核生 成凄史據(jù)核的再一次無變化記錄;
當(dāng)控制核判斷數(shù)據(jù)核的無變化記錄達(dá)到預(yù)設(shè)的記錄數(shù)量閾值時,執(zhí)行步
10驟S102。
需要說明的是,上述的對于數(shù)據(jù)接收狀態(tài)是否正常的判斷依據(jù)是計數(shù)器
設(shè)置所采用的具體應(yīng)用形式,在前一種應(yīng)用形式中,只要在一個檢測周期內(nèi) 發(fā)現(xiàn)數(shù)據(jù)核出現(xiàn)故障,便重啟該數(shù)據(jù)核,而在后一種應(yīng)用形式中,則是在判 斷一個數(shù)據(jù)核出現(xiàn)多次無變化記錄之后,才最終確認(rèn)該數(shù)據(jù)核出現(xiàn)故障,兩 者各有利弊,第一種應(yīng)用形式有利于故障的及時處理,而第二種應(yīng)用形式則
有利于故障檢測準(zhǔn)確度的提高,避免檢測過程中的錯誤而導(dǎo)致的錯誤處理, 以及因此而產(chǎn)生的對系統(tǒng)業(yè)務(wù)的影響。
進(jìn)一步的,為了確保數(shù)據(jù)和在一個檢測周期內(nèi)肯定能夠接收到數(shù)據(jù)包, 控制核按照預(yù)設(shè)的發(fā)送周期向各數(shù)據(jù)核發(fā)送檢測報文,其中,檢測周期大于 發(fā)送周期。
另 一方面,上述的通過計數(shù)器進(jìn)行數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)是否正常的檢 測的方式僅是本發(fā)明的一種優(yōu)選實施例,通過其他方式進(jìn)行數(shù)據(jù)核的數(shù)據(jù)接 收狀態(tài)是否正常的檢測的技術(shù)方案同樣屬于本發(fā)明的保護(hù)范圍。
步驟S102、控制核重啟該數(shù)據(jù)核,并釋放該故障數(shù)據(jù)核所占用的資源。 在具體的應(yīng)用場景中,本步驟還包括控制核對該數(shù)據(jù)核的故障狀態(tài)和故 障時間的記錄。
本步驟的具體流程為控制核清除數(shù)據(jù)核的喚醒標(biāo)識,重啟數(shù)據(jù)核,并釋 放數(shù)據(jù)核所占用的資源;
其中,數(shù)據(jù)核所占用的資源包括以下的至少 一種信息 數(shù)據(jù)核所加鎖的全部鎖資源; 數(shù)據(jù)核當(dāng)前沒有釋放的全部數(shù)據(jù)包; 數(shù)據(jù)核當(dāng)前獨(dú)占的全部內(nèi)存資源。
步驟S103、數(shù)據(jù)核所占用的資源釋放完畢后,控制核喚醒數(shù)據(jù)核進(jìn)行業(yè) 務(wù)處理。
其中,控制核喚醒數(shù)據(jù)核進(jìn)行業(yè)務(wù)處理,具體為控制核為數(shù)據(jù)核添加喚 醒標(biāo)識。在此種情況下,本步驟完成之后,本方法還包括
數(shù)據(jù)核重啟后,按照預(yù)設(shè)的喚醒周期檢測當(dāng)前是否被控制核添加喚醒標(biāo)
識;
當(dāng)數(shù)據(jù)核檢測到被控制核添加喚醒標(biāo)識時,數(shù)據(jù)核進(jìn)行正常的業(yè)務(wù)處理。
在具體的應(yīng)用場景中,本方法還可以進(jìn)一步包括以下處理方式
當(dāng)控制核檢測到多核系統(tǒng)中數(shù)據(jù)接收狀態(tài)不正常的數(shù)據(jù)核的數(shù)量超過預(yù)設(shè)的故障數(shù)量閾值,或一個或多個數(shù)據(jù)核連續(xù)發(fā)生故障時,控制核重啟包含控制核和數(shù)據(jù)核的單板。
通過此種處理方式,可以避免在系統(tǒng)的應(yīng)用環(huán)境破換的情況下對故障核連續(xù)重啟而不能解決故障原因的不足。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)
通過應(yīng)用本發(fā)明的技術(shù)方案,能夠準(zhǔn)確的發(fā)現(xiàn)多核系統(tǒng)中數(shù)據(jù)核工作異常的情況,在保證不影響系統(tǒng)業(yè)務(wù)的情況下,對故障核進(jìn)行自動恢復(fù),提高了系統(tǒng)的可靠性。
下面,結(jié)合具體的應(yīng)用場景,對本發(fā)明所提出的技術(shù)方案進(jìn)行說明。本發(fā)明所提出的技術(shù)方案主要包括故障檢測,狀態(tài)保存和故障處理三個部分,具體說明如下
1、故障;險測
在多核系統(tǒng)中,由控制核檢測各數(shù)據(jù)核的工作狀態(tài),根據(jù)本發(fā)明技術(shù)方案,采取的具體工作原理如下
在每個數(shù)據(jù)核的數(shù)據(jù)入口設(shè)置一個獨(dú)立計數(shù)器,每收到一個數(shù)據(jù)包,計數(shù)器+ 1,控制核定時向所有的數(shù)據(jù)核發(fā)送一個消息,數(shù)據(jù)核每收到一個消息同樣對上述計數(shù)器+ 1。
控制核發(fā)送消息的設(shè)定主要是為了防止由于暫時沒有數(shù)據(jù)通信而導(dǎo)致對數(shù)據(jù)核故障的誤判。
控制核定時檢測該計數(shù)器,如果一段時間內(nèi)出現(xiàn)該計數(shù)器不再變化,則認(rèn)為該數(shù)據(jù)核故障。
12這里所提及的一段時間可以是前述的檢測周期,也可以是大于檢測周期的其他時間數(shù)值,這樣的變化并不影響本發(fā)明的保護(hù)范圍。
其中,上述的通過計數(shù)器進(jìn)行故障檢測的方式僅是本發(fā)明的一種優(yōu)選實施例,通過其他方式進(jìn)行故障檢測的技術(shù)方案同樣屬于本發(fā)明的保護(hù)范圍。
2、狀態(tài)保存
由于數(shù)據(jù)核不使用操作系統(tǒng),所以,數(shù)據(jù)核主要涉及的系統(tǒng)資源就是內(nèi)存和鎖資源,但由于數(shù)據(jù)核申請的內(nèi)存可能被其它核使用,不能采取簡單的方法強(qiáng)行回收,否則可能會導(dǎo)致其它數(shù)據(jù)核出現(xiàn)異常。
同時,數(shù)據(jù)核在處理一個數(shù)據(jù)包時所需要申請的內(nèi)存不會很多,對這部分內(nèi)存可以不做恢復(fù)處理,但對于數(shù)據(jù)包本身的內(nèi)存只涉及到處理核本身這種情況時,則需要進(jìn)行釋放處理。
多核系統(tǒng)對數(shù)據(jù)報文本身記錄方法如下,報文入口時用一個全局變量記錄報文指針和類型,報文正常釋放時清除該記錄。
如果數(shù)據(jù)核申請的內(nèi)存只會被本核使用,則可按核對內(nèi)存進(jìn)行分區(qū)管理,
不同的數(shù)據(jù)核在不同的內(nèi)存區(qū)分配內(nèi)存,當(dāng)然,也可以采取在分配內(nèi)存時,記錄內(nèi)存分配核的方式進(jìn)4亍標(biāo)i己。
在本發(fā)明的技術(shù)方案中,重點(diǎn)關(guān)注的是數(shù)據(jù)核對鎖資源的占用,對鎖資源保存方式如下
通常,鎖是一個變量,在此基礎(chǔ)上,本發(fā)明的技術(shù)方案增加鎖的類型和各核的加鎖和解鎖情況的記錄,如圖2所示,假設(shè)以0表示沒有加鎖,l表示力口鎖。
在具體的應(yīng)用場景中,上述設(shè)置可以進(jìn)行相應(yīng)的調(diào)整,這樣的變化并不影響本發(fā)明的保護(hù)范圍。
多核系統(tǒng)將數(shù)據(jù)核所有的鎖統(tǒng)一管理,可以使用 一個鏈表將鎖變量統(tǒng)一管理起來,這樣可以方便實現(xiàn)對全部鎖資源實現(xiàn)遍歷。
應(yīng)用如圖2所示的記錄方式,數(shù)據(jù)核進(jìn)行加鎖操作時,在相應(yīng)的核標(biāo)志位上設(shè)置加鎖標(biāo)志,解鎖時清除加鎖標(biāo)志。
如果數(shù)據(jù)核處理的業(yè)務(wù)中有對系統(tǒng)其它特殊資源進(jìn)行獨(dú)占使用的情況,也可以使用類似保存方式處理。
3、 故障處理
依據(jù)前述的故障檢測方法,控制核如果發(fā)現(xiàn)某個數(shù)據(jù)核出現(xiàn)故障,則記錄該核的故障狀態(tài)和時間。
清除故障核的喚醒標(biāo)志,重啟該故障核,故障核重啟后先進(jìn)入等待控制核喚醒狀態(tài)。(可以為該核設(shè)置一個控制變量來實現(xiàn)喚醒功能,該核通過循環(huán)判斷該標(biāo)志位,如果沒有設(shè)置則死等,控制喚醒該核時設(shè)置該標(biāo)志位,這樣該核就能繼續(xù)執(zhí)行下去,進(jìn)入正常工作狀態(tài)。)
根據(jù)前述的狀態(tài)保存的記錄進(jìn)行資源鎖恢復(fù),遍歷全部的鎖資源,釋放該核原來加鎖的全部鎖資源。
釋^:該故障核處理的還沒有釋^:的報文。
如果還有其它被該核獨(dú)占的資源,也需做釋放處理。
如果數(shù)據(jù)核處理的業(yè)務(wù)所申請的內(nèi)存只被本核使用,則釋放全部該核申請的內(nèi)存。
控制核喚醒該核進(jìn)行正常業(yè)務(wù)處理。
4、 從技術(shù)完備性的角度上考慮,當(dāng)一些關(guān)鍵資源被破壞時,簡單的對故障核進(jìn)行重啟可能無法使得系統(tǒng)正常工作的,如果檢測發(fā)現(xiàn)出現(xiàn)故障的數(shù)據(jù)核比較多,并且進(jìn)行重啟恢復(fù)后,短時間又出現(xiàn)故障,說明整個工作環(huán)境已經(jīng)破壞,簡單的數(shù)據(jù)核重啟已經(jīng)無法恢復(fù)正常工作,這時要進(jìn)行單板重啟進(jìn)行恢復(fù)。
基于以上技術(shù)思路,結(jié)合具體的應(yīng)用場景,如圖3所示,為本發(fā)明所提出的 一 種多核系統(tǒng)的故障恢復(fù)方法的流程示意圖,具體包括以下步驟步驟S301、控制核定時向所有的數(shù)據(jù)核發(fā)送檢測消息。步驟S302、數(shù)據(jù)核對接收到檢測消息進(jìn)行計數(shù)。數(shù)據(jù)核每收到一個消息同樣對上述計數(shù)器+ 1。在完成相應(yīng)的技術(shù)處理后,數(shù)據(jù)核繼續(xù)進(jìn)行正常的業(yè)務(wù)處理。步驟S303、控制核定時檢測各數(shù)據(jù)核的計數(shù)器。
14步驟S304、控制核判斷各數(shù)據(jù)核的計數(shù)器的數(shù)值是否不變。當(dāng)控制核檢測到一個數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值不變時,執(zhí)行步驟S305;
當(dāng)控制核沒有檢測到數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值不變時,返回步驟S3 03 ,在下 一 個周期內(nèi)繼續(xù)進(jìn)4亍才企測。
步驟S305、控制核清除該數(shù)據(jù)核的喚醒標(biāo)識,重啟該數(shù)據(jù)核。步驟S306、控制核釋放該數(shù)據(jù)核所占用的資源。數(shù)據(jù)核所占用的資源釋放完畢后,執(zhí)行步驟S307。步驟S307、控制核為數(shù)據(jù)核添加喚醒標(biāo)識。
在前述的步驟S305完成后,在數(shù)據(jù)核側(cè)同樣存在相應(yīng)的處理流程,具體
為
步驟S308、數(shù)據(jù)核根據(jù)控制核的控制進(jìn)行重啟。步驟S309、數(shù)據(jù)核檢查是否存在喚醒標(biāo)識。
如果在執(zhí)行本步驟時,步驟S307還沒有實現(xiàn),則數(shù)據(jù)核中沒有喚醒標(biāo)識,因此,返回步驟S309繼續(xù)進(jìn)行喚醒標(biāo)識的檢查;
如果在執(zhí)行本步驟時,步驟S307已經(jīng)實現(xiàn),則數(shù)據(jù)核中存在喚醒標(biāo)識,則數(shù)據(jù)核繼續(xù)進(jìn)行正常的業(yè)務(wù)處理。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)
通過應(yīng)用本發(fā)明的技術(shù)方案,能夠準(zhǔn)確的發(fā)現(xiàn)多核系統(tǒng)中數(shù)據(jù)核工作異常的情況,在保證不影響系統(tǒng)業(yè)務(wù)的情況下,對故障核進(jìn)行自動恢復(fù),提高了系統(tǒng)的可靠性。
進(jìn)一步的,以在多核CPU上進(jìn)行IP流統(tǒng)計業(yè)務(wù)來iJL明本發(fā)明的工作原理。流統(tǒng)計,就是根據(jù)IP數(shù)據(jù)包入接口、出接口、源IP、源端口、協(xié)議類型、目的IP、目的端口等信息為表征一條流的關(guān)鍵字,統(tǒng)計一條流的創(chuàng)建時間,結(jié)束時間、報文數(shù)、字節(jié)數(shù)等信息,同時定時將統(tǒng)計信息上報網(wǎng)管中心,通過該技術(shù)用戶可以了解網(wǎng)絡(luò)中的報文分布情況,也可以對各種異常的網(wǎng)絡(luò)流量進(jìn)行實時監(jiān)控。按源IP、源端口、協(xié)議類型、目的IP、目的端口的信息進(jìn)行哈希調(diào)度,將統(tǒng)計報文均衡調(diào)度到各個數(shù)據(jù)核上。
按核來分配統(tǒng)計數(shù)據(jù)流所需的內(nèi)存空間,對于需要使用鎖資源來防止核間資源訪問沖突,在加鎖時標(biāo)記該數(shù)據(jù)核的使用標(biāo)記。
以數(shù)據(jù)核A的統(tǒng)計為例進(jìn)行說明,假設(shè)為核A分配的統(tǒng)計空間為bufferl,整個數(shù)據(jù)核使用的鎖資源由鏈表listl管理。IP流量統(tǒng)計業(yè)務(wù)只涉及到內(nèi)存和鎖兩種竟?fàn)庂Y源的占用。
假設(shè)核A收到一個報文packetl ,計數(shù)器t加1,同時保存該報文指針到p中,數(shù)據(jù)核開始進(jìn)行業(yè)務(wù)處理,如果這時因為一個程序錯誤,導(dǎo)致核A進(jìn)入一個死循環(huán)中,無法退出。
這時控制核一直定時檢查計數(shù)器t,如果發(fā)現(xiàn)一段時間t的計數(shù)值不變,說明核A這時已經(jīng)跑死。清除A的喚醒標(biāo)志,重啟核A。
控制核通過listl遍歷檢測數(shù)據(jù)核使用的全部鎖資源,;險測鎖資源中核A的標(biāo)志位是否設(shè)置,如果設(shè)置,則根據(jù)鎖類型進(jìn)行解鎖處理,例如,如圖4所示,鎖1和3已經(jīng)被核A加鎖,釋放這2個鎖。同時釋放數(shù)據(jù)核A的內(nèi)存資源bufferl,如果bufferl是控制核為數(shù)據(jù)核A分配的,則重新需重新初始化該內(nèi)存,釋》文核A沒有處理完的報文內(nèi)存p。
為核A設(shè)置喚醒變量,重新喚醒該數(shù)據(jù)核,使其進(jìn)入正常工作狀態(tài)。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)
通過應(yīng)用本發(fā)明的技術(shù)方案,能夠準(zhǔn)確的發(fā)現(xiàn)多核系統(tǒng)中數(shù)據(jù)核工作異常的情況,在保證不影響系統(tǒng)業(yè)務(wù)的情況下,對故障核進(jìn)行自動恢復(fù),提高了系統(tǒng)的可靠性。
相對應(yīng)的,為了實現(xiàn)上述的技術(shù)方案,本發(fā)明還提供了一種單板,如圖5所示,包括一個控制核51和多個數(shù)據(jù)核52,其中
控制核51,用于按照預(yù)設(shè)的檢測周期檢測各數(shù)據(jù)核52的數(shù)據(jù)接收狀態(tài)是否正常,當(dāng)檢測到一個數(shù)據(jù)核52的數(shù)據(jù)接收狀態(tài)不正常時,重啟數(shù)據(jù)核52,并釋放數(shù)據(jù)核52所占用的資源,并在數(shù)據(jù)核52所占用的資源釋放完畢后,喚醒數(shù)據(jù)核52進(jìn)行業(yè)務(wù)處理。
具體的,控制核51具體包括
設(shè)置模塊511,用于設(shè)置檢測數(shù)據(jù)核的檢測周期;
檢測模塊512,用于按照設(shè)置模塊511所設(shè)置的檢測周期檢測各數(shù)據(jù)核 52的數(shù)據(jù)接收狀態(tài)是否正常;
處理模塊513,用于當(dāng)檢測模塊512檢測到一個數(shù)據(jù)核52的數(shù)據(jù)接收狀 態(tài)不正常時,重啟數(shù)據(jù)核52,并釋放數(shù)據(jù)核52所占用的資源,并在數(shù)據(jù)核 52所占用的資源釋放完畢后,喚醒數(shù)據(jù)核52進(jìn)行業(yè)務(wù)處理。
在具體的應(yīng)用場景中,數(shù)據(jù)核52還包括計數(shù)器521,用于為對應(yīng)的數(shù)據(jù) 核52所接收的數(shù)據(jù)包進(jìn)行計數(shù);
控制核51還包括發(fā)送模塊514和/或記錄模塊515,其中
發(fā)送模塊514,用于預(yù)設(shè)的發(fā)送周期向各數(shù)據(jù)核52發(fā)送檢測報文,其中, 發(fā)送周期通過設(shè)置模塊511進(jìn)行設(shè)置,且檢測周期大于發(fā)送周期;
記錄模塊515,用于當(dāng)檢測模塊512檢測到一個數(shù)據(jù)核52所對應(yīng)的計數(shù) 器中的數(shù)值沒有發(fā)生變化時,記錄數(shù)據(jù)核52的故障狀態(tài)和故障時間。
處理模塊513還用于在重啟數(shù)據(jù)核52時清除數(shù)據(jù)核52的喚醒標(biāo)識,重 啟數(shù)據(jù)核52,并在數(shù)據(jù)核52所占用的資源釋;^文完畢后,為數(shù)據(jù)核52添加喚 醒標(biāo)識;
相應(yīng)的,數(shù)據(jù)核52,用于在重啟后檢測當(dāng)前是否一皮控制核51添加喚醒標(biāo) 識,并在數(shù)據(jù)核52檢測到被控制核51添加喚醒標(biāo)識時,進(jìn)行正常的業(yè)務(wù)處 理。
在具體的應(yīng)用場景中,處理模塊513還用于當(dāng)控制核51檢測到多核系統(tǒng) 中的數(shù)據(jù)接收狀態(tài)不正常的數(shù)據(jù)核52的數(shù)量超過預(yù)設(shè)的故障數(shù)量閾值,或一 個或多個數(shù)據(jù)核52連續(xù)發(fā)生故障時,重啟單板。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)
通過應(yīng)用本發(fā)明的技術(shù)方案,能夠準(zhǔn)確的發(fā)現(xiàn)多核系統(tǒng)中數(shù)據(jù)核工作異 常的情況,在保證不影響系統(tǒng)業(yè)務(wù)的情況下,對故障核進(jìn)行自動恢復(fù),提高 了系統(tǒng)的可靠性。
17通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā) 明可以通過硬件實現(xiàn),也可以借助軟件加必要的通用硬件平臺的方式來實現(xiàn)。 基于這樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟
件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是CD-ROM, U盤,移動硬 盤等)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服 務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施場景所述的方法。
本領(lǐng)域技術(shù)人員可以理解附圖只是一個優(yōu)選實施場景的示意圖,附圖中 的模塊或流程并不一定是實施本發(fā)明所必須的。
本領(lǐng)域技術(shù)人員可以理解實施場景中的裝置中的模塊可以按照實施場景 描述進(jìn)行分布于實施場景的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實施 場景的一個或多個裝置中。上述實施場景的模塊可以合并為一個模塊,也可 以進(jìn)一步拆分成多個子模塊。
上述本發(fā)明序號僅僅為了描述,不代表實施場景的優(yōu)劣。
以上公開的僅為本發(fā)明的幾個具體實施場景,但是,本發(fā)明并非局限于 此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種多核系統(tǒng)的故障恢復(fù)方法,其特征在于,應(yīng)用于包括一個控制核和多個數(shù)據(jù)核的多核系統(tǒng)中,所述方法包括所述控制核按照預(yù)設(shè)的檢測周期檢測各數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)是否正常;當(dāng)所述控制核檢測到一個數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常時,所述控制核重啟所述數(shù)據(jù)核,并釋放所述數(shù)據(jù)核所占用的資源;所述數(shù)據(jù)核所占用的資源釋放完畢后,所述控制核喚醒所述數(shù)據(jù)核進(jìn)行業(yè)務(wù)處理。
2、 如權(quán)利要求1所述的方法,其特征在于,所述各數(shù)據(jù)核中設(shè)置計數(shù)器, 為對應(yīng)的數(shù)據(jù)核所接收的數(shù)據(jù)包進(jìn)行計數(shù),所述控制核按照預(yù)設(shè)的檢測周期 檢測各數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)是否正常,具體為所述控制核按照預(yù)設(shè)的檢測周期檢測各數(shù)據(jù)核的的計數(shù)器中的計數(shù)值是 否發(fā)生變化;當(dāng)所述控制核檢測到 一個數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值在一個檢測周 期中沒有發(fā)生變化,或連續(xù)在多個檢測周期內(nèi)沒有發(fā)生變化,則所述控制核 確定所述數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常。
3、 如權(quán)利要求2所述的方法,其特征在于,所述當(dāng)控制核檢測到一個數(shù) 據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值在連續(xù)在多個檢測周期內(nèi)沒有發(fā)生變化,則所 述控制核確定所述數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常,具體為當(dāng)一個數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù)值沒有發(fā)生變化時,所述控制核生 成所述數(shù)據(jù)核的一次無變化記錄;如果所述控制核在下一個檢測周期內(nèi)檢測到所述數(shù)據(jù)核所對應(yīng)的計數(shù)器 中的數(shù)值發(fā)生變化,所述控制核清空所述數(shù)據(jù)核當(dāng)前的所有無變化記錄,如 果所述控制核在下一個檢測周期內(nèi)檢測到所述數(shù)據(jù)核所對應(yīng)的計數(shù)器中的數(shù) 值沒有發(fā)生變化,所述控制核生成所述數(shù)據(jù)核的再一次無變化記錄;當(dāng)所述控制核判斷所述數(shù)據(jù)核的無變化記錄達(dá)到預(yù)設(shè)的記錄數(shù)量閾值 時,所述控制核確定所述數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常。
4、 如權(quán)利要求1或2所述的方法,其特征在于,還包括檢測周期大于所述發(fā)送周期。
5、 如權(quán)利要求l所述的方法,其特征在于,當(dāng)所述控制核檢測到一個數(shù) 據(jù)核的數(shù)據(jù)接收狀態(tài)不正常時,所述控制核重啟所述數(shù)據(jù)核,并釋放所述數(shù)據(jù)核所占用的資源,具體包括所述控制核清除所述數(shù)據(jù)核的喚醒標(biāo)識,重啟所述數(shù)據(jù)核,并釋放所述 數(shù)據(jù)核所占用的資源;其中,所述數(shù)據(jù)核所占用的資源包括以下的至少一種信息所述數(shù)據(jù)核所加鎖的全部鎖資源;所述數(shù)據(jù)核當(dāng)前沒有釋放的全部數(shù)據(jù)包;所述數(shù)據(jù)核當(dāng)前獨(dú)占的全部內(nèi)存資源。
6、 如權(quán)利要求5所述的方法,其特征在于,所述控制核喚醒所述數(shù)據(jù)核 進(jìn)行業(yè)務(wù)處理,具體為所述控制核為所述數(shù)據(jù)核添加喚醒標(biāo)識,所述方法還 包括所述數(shù)據(jù)核重啟后,按照預(yù)設(shè)的喚醒周期檢測當(dāng)前是否被所述控制核添 加喚醒標(biāo)識;當(dāng)所述數(shù)據(jù)核檢測到被所述控制核添加喚醒標(biāo)識時,所述數(shù)據(jù)核進(jìn)行正 常的業(yè)務(wù)處理。
7、 如權(quán)利要求l所述的方法,其特征在于,還包括當(dāng)所述控制核;f企測到所述多核系統(tǒng)中的數(shù)據(jù)接收狀態(tài)不正常的數(shù)據(jù)核的 數(shù)量超過預(yù)設(shè)的故障數(shù)量閾值,或一個或多個數(shù)據(jù)核連續(xù)發(fā)生故障時,所述 控制核重啟包含所述控制核和數(shù)據(jù)核的單板。
8、 一種單板,其特征在于,包括一個控制核和多個數(shù)據(jù)核,其中 所述控制核,用于按照預(yù)設(shè)的檢測周期檢測各數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)是 否正常,當(dāng)檢測到一個數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正常時,重啟所述數(shù)據(jù)核, 并釋放所述數(shù)據(jù)核所占用的資源,并在所述數(shù)據(jù)核所占用的資源釋放完畢后, 喚醒所述數(shù)據(jù)核進(jìn)行業(yè)務(wù)處理。
9、 如權(quán)利要求8所述的單板,其特征在于,所述控制核具體包括 設(shè)置模塊,用于設(shè)置檢測數(shù)據(jù)核的檢測周期;檢測模塊,用于按照所述設(shè)置模塊所設(shè)置的檢測周期檢測各數(shù)據(jù)核的數(shù) 據(jù)接收狀態(tài)是否正常;處理模塊,用于當(dāng)所述檢測模塊檢測到一個數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài)不正 常時,重啟所述數(shù)據(jù)核,并釋放所述數(shù)據(jù)核所占用的資源,并在所述數(shù)據(jù)核 所占用的資源釋;^文完畢后,喚醒所述數(shù)據(jù)核進(jìn)行業(yè)務(wù)處理。
10、 如權(quán)利要求8所述的單板,其特征在于,所述數(shù)據(jù)核還包括計數(shù)器,用于為對應(yīng)的數(shù)據(jù)核所接收的數(shù)據(jù)包進(jìn)行計數(shù);所述控制核還包括發(fā)送模塊和/或記錄模塊,其中所述發(fā)送模塊,用于預(yù)設(shè)的發(fā)送周期向各數(shù)據(jù)核發(fā)送檢測報文,其中, 所述發(fā)送周期通過所述設(shè)置模塊進(jìn)行設(shè)置,且所述檢測周期大于所述發(fā)送周 期;所述記錄模塊,用于當(dāng)所述檢測模塊檢測到一個數(shù)據(jù)核的數(shù)據(jù)接收狀態(tài) 不正常時,記錄所述數(shù)據(jù)核的故障狀態(tài)和故障時間。
11、 如權(quán)利要求9所述的單板,其特征在于,所述處理模塊還用于在重 啟所述數(shù)據(jù)核時清除所述數(shù)據(jù)核的喚醒標(biāo)識,重啟所述數(shù)據(jù)核,并在所述數(shù) 據(jù)核所占用的資源釋放完畢后,為所述數(shù)據(jù)核添加喚醒標(biāo)識;所述數(shù)據(jù)核,用于在重啟后檢測當(dāng)前是否被所述控制核添加喚醒標(biāo)識, 并在所述數(shù)據(jù)核檢測到被所述控制核添加喚醒標(biāo)識時,進(jìn)行正常的業(yè)務(wù)處理。
12、 如權(quán)利要求9所述的單板,其特征在于,所述處理模塊還用于當(dāng)所 述控制核檢測到所述多核系統(tǒng)中的數(shù)據(jù)接收狀態(tài)不正常的數(shù)據(jù)核的數(shù)量超過 預(yù)設(shè)的故障數(shù)量閾值,或一個或多個數(shù)據(jù)核連續(xù)發(fā)生故障時,重啟所述單板。
全文摘要
本發(fā)明公開了一種多核系統(tǒng)的故障恢復(fù)方法和設(shè)備,能夠有效的單獨(dú)監(jiān)控數(shù)據(jù)核,如果數(shù)據(jù)核出現(xiàn)故障則對該故障核進(jìn)行單獨(dú)恢復(fù),使系統(tǒng)能夠及時恢復(fù)正常,通過應(yīng)用本發(fā)明的技術(shù)方案,能夠準(zhǔn)確的發(fā)現(xiàn)多核系統(tǒng)中數(shù)據(jù)核工作異常的情況,在保證不影響系統(tǒng)業(yè)務(wù)的情況下,對故障核進(jìn)行自動恢復(fù),提高了系統(tǒng)的可靠性。
文檔編號H04L12/24GK101635652SQ200910169848
公開日2010年1月27日 申請日期2009年9月7日 優(yōu)先權(quán)日2009年9月7日
發(fā)明者盧勝文 申請人:杭州華三通信技術(shù)有限公司