專利名稱:一種內(nèi)存的故障檢測方法和單板的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種內(nèi)存的故障檢測方法和單板。
背景技術(shù):
隨著網(wǎng)絡技術(shù)的發(fā)展,對于較為大型的網(wǎng)絡設(shè)備,已經(jīng)廣泛采用分布式架構(gòu)。分布 式架構(gòu)的網(wǎng)絡設(shè)備一般由主控板和多個業(yè)務板構(gòu)成。其中,主控板用于整個網(wǎng)絡設(shè)備的管 理和網(wǎng)絡協(xié)議的處理,業(yè)務板用于完成各種業(yè)務的數(shù)據(jù)轉(zhuǎn)發(fā)處理。分布式架構(gòu)的系統(tǒng)的各模塊之間通過數(shù)據(jù)收發(fā)通道實現(xiàn)通信,數(shù)據(jù)收發(fā)通道主要 有以下兩種形式1、內(nèi)部通信控制通道在由主控板和業(yè)務板組成的分布式架構(gòu)系統(tǒng)中,業(yè)務板有很多數(shù)據(jù)需要發(fā)往主控 板,主控板則需要把各業(yè)務板的數(shù)據(jù)同步到其它各塊業(yè)務板上,這些數(shù)據(jù)通信都需要通過 內(nèi)部通信控制通道實現(xiàn)。內(nèi)部通信控制通道一般由CPU (Central Processing Unit,中央處理單元)、交換 芯片、PHY (Physical Layer,物理層)等連接構(gòu)成。內(nèi)部通信控制通道所實現(xiàn)的內(nèi)部通信是否平穩(wěn),直接關(guān)系整個設(shè)備的可靠性、數(shù) 據(jù)傳輸效率和業(yè)務處理效率。2、業(yè)務報文上送控制器的處理通道在分布式架構(gòu)系統(tǒng)的業(yè)務轉(zhuǎn)發(fā)過程中,有些協(xié)議報文需要上送給控制器,而控制 器在完成相關(guān)處理后,再通過轉(zhuǎn)發(fā)芯片對處理結(jié)果進行發(fā)送處理,從而,實現(xiàn)業(yè)務轉(zhuǎn)發(fā),業(yè) 務報文上送控制器的處理通道的通信質(zhì)量將直接影響業(yè)務能否實現(xiàn)正常處理。由此可見,無論是對于內(nèi)部通信還是對于業(yè)務轉(zhuǎn)發(fā),數(shù)據(jù)收發(fā)通道都非常重要,其 在通信設(shè)備的長時間穩(wěn)定運行的過程中起著核心作用。下面,主要以內(nèi)部通信控制通道來進一步對數(shù)據(jù)收發(fā)通道進行描述。如圖1所示,為現(xiàn)有技術(shù)中的分布式系統(tǒng)的內(nèi)部通信控制通道的結(jié)構(gòu)示意圖。在該分布式系統(tǒng)中,主控板與業(yè)務板之間可以通過直接連接、通過PHY連接、通過 交換芯片連接、通過交換芯片和PHY —起連接等方式實現(xiàn)連接,連接方式多種多樣。為了使各主控板和業(yè)務板之間通信正常,各單板中均需要建立用于緩存報文的 報文緩沖區(qū)域(Buffer),如圖1中的主控板上的Rx Buffer 0_A區(qū)域、業(yè)務板1上的Rx Buffer 1_A區(qū)域等,這些報文緩沖區(qū)域既可以用來緩存來自對端的報文,也可以緩存準備 發(fā)送給對端的報文。各報文緩沖區(qū)域一般是在系統(tǒng)內(nèi)存中開辟出來的一段區(qū)域,操作系統(tǒng)軟件能夠 直接讀寫操作,在系統(tǒng)初始化的時候,會在內(nèi)存中建立收發(fā)包的數(shù)據(jù)管理區(qū)和數(shù)據(jù)緩存區(qū) (即上述的報文緩沖區(qū)域)。如圖2所示為現(xiàn)有技術(shù)中系統(tǒng)內(nèi)存的內(nèi)存結(jié)構(gòu)示意圖,以報文接收過程為例進行 說明如下
在系統(tǒng)初始化的時候,建立Rx (Receive,接收)Buffer Descriptors (報文描述 符,BD)表作為數(shù)據(jù)管理區(qū)域,以下簡稱BD區(qū)域,用來維護管理接收到的所有報文。在系統(tǒng)運行過程中,每一個接收到的報文都會對應Rx BD表中的一條BD表項,該 表項作為硬件和軟件的接口,通過硬件芯片和系統(tǒng)軟件共同配合,一起完成對報文的接收。BD表項中至少包括Status&Control (狀態(tài)和控制)域,Data Length (數(shù)據(jù)長度) 域,Buffer Pointer (緩沖指針)域。其中,Status&Control域用來表示接收到的報文的特征,如硬件將接收到的報文 放置到Buffer區(qū)域后,需要設(shè)置這個域里的狀態(tài)信息,表示Buffer區(qū)域中有數(shù)據(jù)存儲,軟 件通過檢查Status&Control域,確認Buffer區(qū)域中當前有數(shù)據(jù)存儲后,就可以進一步通過 Data Length域和Buffer Pointer域讀取該報文的長度信息和緩沖指針,根據(jù)長度信息可 以確定該報文的大小,而緩沖指針則指向了該報文存儲的真實位置,因此,通過緩沖指針, 找到該報文存儲的具體位置,按照該報文的長度信息獲取該報文。由于上述的BD區(qū)域是在系統(tǒng)初始化時建立的,即在硬件傳送報文前就已經(jīng)建立 完成,因此,硬件接收到報文后,直接可以在Buffer Pointer指向的Buffer區(qū)域存放報文, 并在相應的BD表項中填寫長度和狀態(tài)信息,即更新Status&Control域和Data Length域 中的信息。軟件根據(jù)BD表項中Status&Control域的信息獲知有新接收到的報文,并根據(jù) Data Length域和Buffer Pointer域中的信息在相應的Buffer區(qū)域中獲取該報文,獲取完 成后,該BD表項所對應的報文已經(jīng)不再存儲于Buffer區(qū)域中,因此,更新該BD表項,并將 該BD表項重新交給硬件區(qū)記錄下一個接收到的報文,而該Buffer區(qū)域中釋放的空間也可 以重新開始接收其它的報文。在分布式系統(tǒng)架構(gòu)的網(wǎng)絡設(shè)備中,由于內(nèi)部的數(shù)據(jù)收發(fā)通道的核心作用,其可靠 性是保證網(wǎng)絡設(shè)備穩(wěn)定的重中之重。如圖1所示,在內(nèi)部通信控制通道中,硬件本身一般不 容易引發(fā)問題,大部分問題都是由于內(nèi)部通信控制通道兩端的單板的BD區(qū)域中的數(shù)據(jù)或 Buffer區(qū)域中的數(shù)據(jù)被破壞而導致,即圖2中所顯示的區(qū)域中的數(shù)據(jù)可靠性對內(nèi)部通信控 制通道的可靠性影響巨大。一方面,如果BD區(qū)域中的數(shù)據(jù)(即BD表項)被破壞,硬件根據(jù)BD區(qū)域中錯誤的 或已破壞的BD表項,獲取到錯誤的BD狀態(tài),從而無法繼續(xù)往Buffer區(qū)域中正常的放置報 文,而另一方面,如果Buffer區(qū)域中的數(shù)據(jù)(接收到的報文)被破壞,將會接收到錯誤的報 文,進一步引發(fā)不可預知的錯誤。在系統(tǒng)運行過程中,對于內(nèi)存中數(shù)據(jù)的處理不當和損壞是很難控制和保證的一種 錯誤,如果發(fā)生這些區(qū)域被破壞,將導致內(nèi)部通信控制通道不能正常收發(fā)報文。如果錯誤發(fā)生在業(yè)務板上,將導致該業(yè)務板癱瘓,如果錯誤發(fā)生在主控板上,將導 致整個系統(tǒng)癱瘓,會造成整個業(yè)務傳輸中斷等重大事故。在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題現(xiàn)有的數(shù)據(jù)收發(fā)通道處理方式,在報文緩沖區(qū)域發(fā)生故障,或因緩沖描述符區(qū)域 故障而導致報文緩沖區(qū)域不能正常訪問而影響報文收發(fā)處理時,不能快速檢測、不能自愈 保護,也不能保留錯誤現(xiàn)場,后期問題處理難度增大。
發(fā)明內(nèi)容
本發(fā)明提供一種內(nèi)存的故障檢測方法和單板,在因報文緩沖區(qū)域發(fā)生故障,或因 緩沖描述符區(qū)域故障而導致報文緩沖區(qū)域不能正常訪問而影響報文收發(fā)處理時,能夠快速 檢測,避免發(fā)生二次錯誤。為達到上述目的,本發(fā)明一方面提供了一種內(nèi)存的故障檢測方法,其特征在于,具 體包括以下步驟獲取緩沖描述符區(qū)域中記錄的緩沖指針;按照預設(shè)的偏移策略,在所述緩沖指針所指示的位置上進行偏移調(diào)整后,查找報 文緩沖區(qū)域所對應的檢測區(qū)域;判斷所述報文緩沖區(qū)域所對應的檢測區(qū)域中當前的檢測標識是否與所述檢測區(qū) 域中所預設(shè)的檢測標識相一致;如果所述報文緩沖區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致,確 定所述報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障。優(yōu)選的,在獲取緩沖描述符區(qū)域中記錄的緩沖指針的步驟之前,所述方法還包 括為內(nèi)存中的各報文緩沖區(qū)域分別設(shè)置對應的檢測區(qū)域,并在各所述檢測區(qū)域中預 設(shè)檢測標識,具體為在各所述報文緩沖區(qū)域之前和/或之后,按照預設(shè)的字段長度分別設(shè)置各所述報 文緩沖區(qū)所對應的檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè)檢測標識。優(yōu)選的,所述方法還包括在所述為內(nèi)存中的各報文緩沖區(qū)域設(shè)置對應的檢測區(qū) 域的同時,為內(nèi)存中的緩沖描述符區(qū)域設(shè)置對應的檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè) 檢測標識,具體為在所述緩沖描述符區(qū)域之前和/或之后,按照預設(shè)的字段長度設(shè)置各所述報文緩 沖區(qū)所對應的檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè)檢測標識。優(yōu)選的,所述在所述緩沖描述符區(qū)域之前和/或之后,按照預設(shè)的字段長度設(shè)置 各所述報文緩沖區(qū)所對應的檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè)檢測標識,具體為按照預設(shè)的字段長度在整個所述緩沖描述符區(qū)域的之前和/或之后設(shè)置整個所 述緩沖描述符區(qū)域所對應的檢測區(qū)域,并在所述檢測區(qū)域中預設(shè)檢測標識;或,將所述緩沖描述符區(qū)域劃分為一個或多個隊列區(qū)域,在所述緩沖描述符區(qū)域中所 包含的各隊列區(qū)域的之前和/或之后,按照預設(shè)的字段長度分別設(shè)置所述緩沖描述符區(qū)域 中各所述隊列區(qū)域所對應的檢測區(qū)域,并在各所述隊列區(qū)域所對應的檢測區(qū)域中預設(shè)檢測 標識;或,在所述緩沖描述符區(qū)域中所包含的各報文描述符的之前和/或之后,按照預設(shè)的 字段長度分別設(shè)置所述緩沖描述符區(qū)域中各所述報文描述符所對應的檢測區(qū)域,并在各所 述報文描述符所對應的檢測區(qū)域中預設(shè)檢測標識。優(yōu)選的,當為內(nèi)存中的緩沖描述符區(qū)域設(shè)置對應的檢測區(qū)域,并在各所述檢測區(qū) 域中預設(shè)檢測標識時,如果所述報文緩沖區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果 為不一致,所述方法還包括判斷所述緩沖描述符區(qū)域所對應的檢測區(qū)域中當前的檢測標識是否與所述檢測區(qū)域中所預設(shè)的檢測標識相一致;如果所述緩沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為一致,確 定所述報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障;如果所述緩沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致, 確定所述緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障。優(yōu)選的,所述判斷所述緩沖描述符區(qū)域所對應的檢測區(qū)域中當前的檢測標識是否 與所述檢測區(qū)域中所預設(shè)的檢測標識相一致之前,還包括當內(nèi)存中所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為整個所述緩沖 描述符區(qū)域所對應的檢測區(qū)域時,按照預設(shè)的偏移策略,在整個所述緩沖描述符區(qū)域的位 置上進行偏移調(diào)整后,確定整個所述緩沖描述符區(qū)域所對應的檢測區(qū)域;當內(nèi)存中所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為所述緩沖描述 符區(qū)域中所包含的各隊列區(qū)域所對應的檢測區(qū)域時,按照預設(shè)的偏移策略,在所述報文緩 沖區(qū)域所對應的隊列區(qū)域的位置上進行偏移調(diào)整后,確定所述隊列區(qū)域所對應的檢測區(qū) 域;當內(nèi)存中所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為所述緩沖描述 符區(qū)域中所包含的各報文描述符的檢測區(qū)域時,按照預設(shè)的偏移策略,在所述報文緩沖區(qū) 域所對應的報文描述符的位置上進行偏移調(diào)整后,確定所述報文描述符所對應的檢測區(qū) 域。優(yōu)選的,所述確定所述報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,還包括對內(nèi)存中全部的所述報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護,或?qū)Πl(fā) 生故障的報文緩沖區(qū)域所對應的緩沖描述符區(qū)域和所述發(fā)生故障的緩沖描述符區(qū)域所對 應的全部報文緩沖區(qū)域進行自愈保護;所述確定所述緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,還包括對內(nèi)存中全部的所述報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護,或?qū)Πl(fā) 生故障的緩沖描述符區(qū)域和所述發(fā)生故障的緩沖描述符區(qū)域所對應的全部報文緩沖區(qū)域 進行自愈保護。優(yōu)選的,所述對報文緩沖區(qū)域和/或緩沖描述符區(qū)域進行自愈保護的同時,還包 括對報文緩沖區(qū)域和/或緩沖描述符區(qū)域所對應的檢測區(qū)域進行自愈保護。另一方面,本發(fā)明還提供了一種單板,其特征在于,包括設(shè)置模塊,用于為內(nèi)存中的各報文緩沖區(qū)域分別設(shè)置對應的檢測區(qū)域,并在各所 述檢測區(qū)域中預設(shè)檢測標識,并設(shè)置偏移策略;獲取模塊,用于獲取緩沖描述符區(qū)域中記錄的緩沖指針;查找模塊,與所述設(shè)置模塊和所述獲取模塊相連接,用于按照所述設(shè)置模塊所設(shè) 置的的偏移策略,在所述獲取模塊所獲取的緩沖指針所指示的位置上進行偏移調(diào)整后,查 找報文緩沖區(qū)域所對應的檢測區(qū)域;判斷模塊,與所述設(shè)置模塊和所述查找模塊相連接,用于判斷所述查找模塊所查 找到的所述報文緩沖區(qū)域所對應的檢測區(qū)域中當前的檢測標識是否與所述設(shè)置模塊在所 述檢測區(qū)域中所預設(shè)的檢測標識相一致;
確定模塊,與所述判斷模塊相連接,用于在所述判斷模塊所生成的所述報文緩沖 區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致時,確定所述報文緩沖區(qū)域所對 應的內(nèi)存當前出現(xiàn)故障。優(yōu)選的,所述設(shè)置模塊,具體用于在各所述報文緩沖區(qū)域之前和/或之后,按照預 設(shè)的字段長度分別設(shè)置各所述報文緩沖區(qū)所對應的檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè) 檢測標識。優(yōu)選的,所述設(shè)置模塊,還用于在所述緩沖描述符區(qū)域之前和/或之后,按照預設(shè) 的字段長度設(shè)置各所述報文緩沖區(qū)所對應的檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè)檢測標 識,具體包括按照預設(shè)的字段長度在整個所述緩沖描述符區(qū)域的之前和/或之后設(shè)置整個所 述緩沖描述符區(qū)域所對應的檢測區(qū)域,并在所述檢測區(qū)域中預設(shè)檢測標識;或,在所述緩沖描述符區(qū)域中所包含的各隊列區(qū)域的之前和/或之后,按照預設(shè)的字 段長度分別設(shè)置所述緩沖描述符區(qū)域中各所述隊列區(qū)域所對應的檢測區(qū)域,并在各所述隊 列區(qū)域所對應的檢測區(qū)域中預設(shè)檢測標識;或,在所述緩沖描述符區(qū)域中所包含的各報文描述符的之前和/或之后,按照預設(shè)的 字段長度分別設(shè)置所述緩沖描述符區(qū)域中各所述報文描述符所對應的檢測區(qū)域,并在各所 述報文描述符所對應的檢測區(qū)域中預設(shè)檢測標識。優(yōu)選的,當所述設(shè)置模塊為內(nèi)存中的緩沖描述符區(qū)域設(shè)置對應的檢測區(qū)域,并在 各所述檢測區(qū)域中預設(shè)檢測標識時,如果所述判斷模塊所生成的所述報文緩沖區(qū)域所對應 的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致,所述判斷模塊,還用于判斷所述緩沖描述符區(qū)域所對應的檢測區(qū)域中當前的檢測 標識是否與所述檢測區(qū)域中所預設(shè)的檢測標識相一致;所述確定模塊,還用于當所述判斷模塊所生成的所述緩沖描述符區(qū)域所對應的檢 測區(qū)域中的檢測標識的判斷結(jié)果為一致時,確定所述報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn) 故障,或當所述判斷模塊所生成的所述緩沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識的 判斷結(jié)果為不一致時,確定所述緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障。優(yōu)選的,所述查找模塊,還用于當所述設(shè)置模塊所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為整個所 述緩沖描述符區(qū)域所對應的檢測區(qū)域時,所述查找模塊按照所述設(shè)置模塊所設(shè)置的偏移策 略,在整個所述緩沖描述符區(qū)域的位置上進行偏移調(diào)整后,確定整個所述緩沖描述符區(qū)域 所對應的檢測區(qū)域;當所述設(shè)置模塊所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為所述緩 沖描述符區(qū)域中所包含的各隊列區(qū)域所對應的檢測區(qū)域時,所述查找模塊按照所述設(shè)置模 塊所設(shè)置的偏移策略,在所述報文緩沖區(qū)域所對應的隊列區(qū)域的位置上進行偏移調(diào)整后, 確定所述隊列區(qū)域所對應的檢測區(qū)域;當所述設(shè)置模塊所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為所述緩 沖描述符區(qū)域中所包含的各報文描述符的檢測區(qū)域時,所述查找模塊按照所述設(shè)置模塊所 設(shè)置的偏移策略,在所述報文緩沖區(qū)域所對應的報文描述符的位置上進行偏移調(diào)整后,確 定所述報文描述符所對應的檢測區(qū)域。
優(yōu)選的,所述單板,還包括自愈模塊,具體用于在所述確定模塊確定所述報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,對內(nèi)存 中全部的所述報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護,或?qū)Πl(fā)生故障的報文緩 沖區(qū)域所對應的緩沖描述符區(qū)域和所述緩沖描述符區(qū)域所對應的全部報文緩沖區(qū)域進行 自愈保護;在所述確定模塊確定所述緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,對內(nèi) 存中全部的所述報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護,或?qū)Πl(fā)生故障的緩沖 描述符區(qū)域和所述緩沖描述符區(qū)域所對應的全部報文緩沖區(qū)域進行自愈保護;其中,所述自愈模塊對報文緩沖區(qū)域和/或緩沖描述符區(qū)域進行自愈保護的同 時,還用于對報文緩沖區(qū)域和/或緩沖描述符區(qū)域所對應的檢測區(qū)域進行自愈保護。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點通過應用本發(fā)明的技術(shù)方案,為報文緩沖區(qū)域和緩沖描述符區(qū)域設(shè)置相應的檢測 區(qū)域,并通過其中的檢測標識是否異常進行故障識別,從而,能夠使分布式系統(tǒng)在因報文緩 沖區(qū)域發(fā)生故障,或因緩沖描述符區(qū)域故障而導致報文緩沖區(qū)域不能正常訪問而影響報文 收發(fā)處理時,能夠快速檢測故障的發(fā)生,避免發(fā)生二次錯誤,具體的檢測方法實現(xiàn)過程簡 單、檢測速度快,對系統(tǒng)資源的占用少,對系統(tǒng)的業(yè)務處理性能影響小。
圖1為現(xiàn)有技術(shù)中分布式系統(tǒng)通用的內(nèi)部通信控制信道的示意圖;圖2為現(xiàn)有技術(shù)中控制報文的內(nèi)存結(jié)構(gòu)示意圖;圖3為本發(fā)明所提出的一種內(nèi)存的故障檢測方法的流程示意圖;圖4為本發(fā)明所提出的一種應用內(nèi)存的故障檢測方法進行改進后的系統(tǒng)控制報 文的內(nèi)存結(jié)構(gòu)示意圖;圖5為本發(fā)明所提出的一種具體應用場景下內(nèi)存的故障檢測方法的流程示意圖;圖6為本發(fā)明所提出的一種單板的結(jié)構(gòu)示意圖。
具體實施例方式針對現(xiàn)有技術(shù)中的不足,需要提出一種內(nèi)存的故障檢測方法,對報文緩沖區(qū)域和 緩沖描述符區(qū)域建立檢測機制,在報文緩沖區(qū)域發(fā)生故障,或因緩沖描述符區(qū)域故障而導 致報文緩沖區(qū)域不能正常訪問時,能夠快速檢測故障,避免影響正常的報文收發(fā)業(yè)務的處
理,防止發(fā)生二次錯誤。基于上述目的,如圖3所示,為本發(fā)明所提出的一種內(nèi)存的故障檢測方法的流程 示意圖,具體包括以下步驟步驟S301、獲取緩沖描述符區(qū)域中記錄的緩沖指針。在具體的應用場景中,本步驟之前,該方法還包括為內(nèi)存中的各報文緩沖區(qū)域分別設(shè)置對應的檢測區(qū)域,并在各檢測區(qū)域中預設(shè)檢 測標識,具體為在各報文緩沖區(qū)域之前和/或之后,按照預設(shè)的字段長度分別設(shè)置各報文緩沖區(qū) 所對應的檢測區(qū)域,并在各檢測區(qū)域中預設(shè)檢測標識。
步驟S302、按照預設(shè)的偏移策略,在緩沖指針所指示的位置上進行偏移調(diào)整后,查 找報文緩沖區(qū)域所對應的檢測區(qū)域。上述的偏移策略為預先設(shè)定的,具體的偏移量可以根據(jù)實際需要進行設(shè)定。步驟S303、判斷報文緩沖區(qū)域所對應的檢測區(qū)域中當前的檢測標識是否與檢測區(qū) 域中所預設(shè)的檢測標識相一致。如果報文緩沖區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致,執(zhí)行步 驟 S304 ;如果報文緩沖區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為一致,確認報文 緩沖區(qū)域所對應的內(nèi)存當前不存在故障。步驟S304、確定報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障。需要進一步指出的是,為了使故障檢測的結(jié)果更加精確,可以在檢測報文緩沖區(qū) 域的同時對緩沖描述符區(qū)域進行檢測,因此,需要在為各報文緩沖區(qū)域設(shè)置對應的檢測區(qū) 域和檢測標識的同時,進一步為緩沖描述符區(qū)域設(shè)置對應的檢測區(qū)域,并在該檢測區(qū)域中 預設(shè)檢測標識,上述的設(shè)置過程具體包括以下兩方面的設(shè)置(1)在各報文緩沖區(qū)域之前和/或之后,按照預設(shè)的字段長度設(shè)置各報文緩沖區(qū) 所對應的檢測區(qū)域,并在各檢測區(qū)域中預設(shè)檢測標識。(2)在緩沖描述符區(qū)域之前和/或之后,按照預設(shè)的字段長度設(shè)置緩沖描述符區(qū) 域所對應的檢測區(qū)域,并在檢測區(qū)域中預設(shè)檢測標識。需要進一步指出的是,根據(jù)不同的檢測精度的要求,緩沖描述符區(qū)域的檢測區(qū)域 的設(shè)置可以分為以下三種情況情況一、按照預設(shè)的字段長度在整個緩沖描述符區(qū)域的之前和/或之后設(shè)置整個 緩沖描述符區(qū)域所對應的檢測區(qū)域,并在該檢測區(qū)域中預設(shè)檢測標識。情況二、將緩沖描述符區(qū)域劃分為一個或多個隊列區(qū)域,在緩沖描述符區(qū)域中所 包含的各隊列區(qū)域的之前和/或之后,按照預設(shè)的字段長度分別設(shè)置緩沖描述符區(qū)域中各 隊列區(qū)域所對應的檢測區(qū)域,并在各隊列區(qū)域所對應的檢測區(qū)域中預設(shè)檢測標識。情況三、在緩沖描述符區(qū)域中所包含的各報文描述符的之前和/或之后,按照預 設(shè)的字段長度分別設(shè)置緩沖描述符區(qū)域中各報文描述符所對應的檢測區(qū)域,并在各報文描 述符所對應的檢測區(qū)域中預設(shè)檢測標識。上述的三種情況對于緩沖描述符區(qū)域的檢測精度逐漸提高的,對于問題的定位也 越來越準確,但是,相應的信息設(shè)置量和需要占用的系統(tǒng)資源也會越來越多,可以根據(jù)實際 需要進行選擇。在實際的應用場景中,具體應用上述的情況進行緩沖描述符區(qū)域的檢測區(qū)域的設(shè) 定,可以根據(jù)實際的需要和檢測精度的要求進行調(diào)整,具體應用哪種情況并不會影響本發(fā) 明的保護范圍。另一方面,在具體的應用場景中,上述的檢測標識的設(shè)定策略也可以根據(jù)實際需 要進行調(diào)整,對于報文緩沖區(qū)域和緩沖描述符區(qū)域所對應的檢測區(qū)域中,所設(shè)置的檢測標 識全部相同,也可以將所有報文緩沖區(qū)域的檢測區(qū)域的檢測標識設(shè)置為同一個值,而將緩 沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識設(shè)置為另一個值,從而增強檢測的精度,這 樣的變化同樣屬于本發(fā)明的保護范圍。
在完成上述設(shè)置后,需要判斷是否發(fā)生了報文收發(fā)操作,如果發(fā)生報文收發(fā)操作, 則執(zhí)行相應的檢測過程,如果沒有發(fā)生報文收發(fā)操作,則返回繼續(xù)判斷。檢測過程首先進行報文緩沖區(qū)域所對應檢測區(qū)域的檢測,判斷報文緩沖區(qū)域所對 應的檢測區(qū)域中當前的檢測標識是否與檢測區(qū)域中所預設(shè)的檢測標識相一致,如果報文緩 沖區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致,則進一步判斷緩沖描述符區(qū) 域所對應的檢測區(qū)域中當前的檢測標識是否與檢測區(qū)域中所預設(shè)的檢測標識相一致。如果緩沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為一致,確定報 文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障;如果緩沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致,確定 緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障。需要進一步指出的是,在對緩沖描述符區(qū)域所對應的檢測區(qū)域進行檢測的過程 中,對應前述的緩沖描述符區(qū)域設(shè)置檢測區(qū)域的三種情況,需要進行以下三種情況的處理, 已確定需要進行一致性判斷的檢測區(qū)域。對應前述的情況一,當內(nèi)存中所設(shè)置的緩沖描述符區(qū)域所對應的檢測區(qū)域具體為 整個緩沖描述符區(qū)域所對應的檢測區(qū)域時,按照預設(shè)的偏移策略,在整個緩沖描述符區(qū)域 的位置上進行偏移調(diào)整后,確定整個緩沖描述符區(qū)域所對應的檢測區(qū)域。對應前述的情況二,當內(nèi)存中所設(shè)置的緩沖描述符區(qū)域所對應的檢測區(qū)域具體 為緩沖描述符區(qū)域中所包含的各隊列區(qū)域所對應的檢測區(qū)域時,按照預設(shè)的偏移策略,在 報文緩沖區(qū)域所對應的隊列區(qū)域的位置上進行偏移調(diào)整后,確定隊列區(qū)域所對應的檢測區(qū) 域。對應前述的情況三,當內(nèi)存中所設(shè)置的緩沖描述符區(qū)域所對應的檢測區(qū)域具體 為緩沖描述符區(qū)域中所包含的各報文描述符的檢測區(qū)域時,按照預設(shè)的偏移策略,在報文 緩沖區(qū)域所對應的報文描述符的位置上進行偏移調(diào)整后,確定報文描述符所對應的檢測區(qū) 域。在具體的應用場景中,上述的對報文緩沖區(qū)域和緩沖描述符區(qū)域的檢測區(qū)域進行 檢測標識是否一致的判斷的方式,具體包括方式一、直接將檢測區(qū)域中當前的檢測標識與檢測區(qū)域中所預設(shè)的檢測標識進行 比較,判斷比較結(jié)果是否一致。方式二、通過循環(huán)冗余校驗碼檢驗方法,判斷檢測區(qū)域中當前的檢測標識是否與 檢測區(qū)域中所預設(shè)的檢測標識相一致。方式三、通過加密/解密算法,判斷檢測區(qū)域中當前的檢測標識是否與檢測區(qū)域 中所預設(shè)的檢測標識相一致。在實際的應用場景中,具體應用上述的哪種方式進行判斷,可以根據(jù)實際的需要 進行調(diào)整,具體應用哪種方式并不影響本發(fā)明的保護范圍。不僅如此,緩沖描述符區(qū)域的檢測區(qū)域的設(shè)定過程中的偏移策略與前述的報文緩 沖區(qū)域的檢測區(qū)域的設(shè)定過程中的偏移策略相類似,同樣需要預先設(shè)定,但是兩者的偏移 量可以相同,也可以不相同,即根據(jù)緩沖描述符區(qū)域的特點進行設(shè)定,這樣的變化并不影響 本發(fā)明的保護范圍。為了達到更好的技術(shù)效果,在步驟S304中確定報文緩沖區(qū)域所對應的內(nèi)存當前
13出現(xiàn)故障之后,還包括自愈保護處理,具體分為以下兩種策略策略一、對內(nèi)存中全部的報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護。策略二、對發(fā)生故障的報文緩沖區(qū)域所對應的緩沖描述符區(qū)域和緩沖描述符區(qū)域 所對應的全部報文緩沖區(qū)域進行自愈保護。兩種策略進行自愈保護的范圍不同,策略一的自愈保護范圍更大,處理簡單,但 是,由于沒有準確的識別發(fā)生故障的位置,因此,可能對未發(fā)生故障的資源也進行了自愈保 護處理,從而,導致?lián)p失的正常數(shù)據(jù)信息也會增多,而策略二的自愈保護范圍更加準確,可 能損失的正常數(shù)據(jù)信息也減少很多,但是,由于需要準確定位發(fā)生故障的位置,因此,需要 進行的識別處理也會更多,相比策略一,處理效率有所降低,而且信息處理量也會增大,對 系統(tǒng)資源的占用也會提高。另一方面,在確定緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,同樣包括自 愈保護處理,具體分為以下兩種策略策略一、對內(nèi)存中全部的報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護。策略二、對發(fā)生故障的緩沖描述符區(qū)域和緩沖描述符區(qū)域所對應的全部報文緩沖 區(qū)域進行自愈保護。與前述的處理相類似的,兩種策略進行自愈保護的范圍不同,相應的優(yōu)劣之處也 與前述說明相類似,在此不再重復說明。需要進一步指出的是,在上述的對報文緩沖區(qū)域和/或緩沖描述符區(qū)域進行自愈 保護的同時,還可以對報文緩沖區(qū)域和/或緩沖描述符區(qū)域所對應的檢測區(qū)域進行自愈保 護,這樣的變化并不影響本發(fā)明的保護范圍。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點通過應用本發(fā)明的技術(shù)方案,為報文緩沖區(qū)域和緩沖描述符區(qū)域設(shè)置相應的檢測 區(qū)域,并通過其中的檢測標識是否異常進行故障識別,從而,能夠使分布式系統(tǒng)在因報文緩 沖區(qū)域發(fā)生故障,或因緩沖描述符區(qū)域故障而導致報文緩沖區(qū)域不能正常訪問而影響報文 收發(fā)處理時,能夠快速檢測故障的發(fā)生,避免發(fā)生二次錯誤,具體的檢測方法實現(xiàn)過程簡 單、檢測速度快,對系統(tǒng)資源的占用少,對系統(tǒng)的業(yè)務處理性能影響小。為了進一步闡述本發(fā)明的技術(shù)思想,現(xiàn)結(jié)合具體的應用場景,對本發(fā)明的技術(shù)方 案進行說明。本發(fā)明公開了一種內(nèi)存的故障檢測方法,該方法的技術(shù)思路包括一、檢測依據(jù)的設(shè)置對于數(shù)據(jù)收發(fā)通道的初始化過程,在初始建立BD區(qū)域和Buffer區(qū)域時,分別為BD 區(qū)域和Buffer區(qū)域增加相應的檢測區(qū)域(為了方便說明,在以下的描述中,緩沖描述符區(qū) 域簡稱為BD區(qū)域,報文緩沖區(qū)域簡稱為Buffer區(qū)域)。如圖4所示,為本發(fā)明一種具體應用場景中的檢測區(qū)域的添加策略的示意圖,其 中,檢測區(qū)域具體為“Check Flag”區(qū)域,具體的設(shè)置包括以下幾個方面一方面,在圖4所示的應用場景中,在BD區(qū)域之前和之后均增加了檢測區(qū)域,用于 BD區(qū)域的檢測。另外一方面,在BD區(qū)域中的BD表項所包含的每一個Buffer Pointer所指向的 Buffer區(qū)域前也都增加了檢測區(qū)域,用于對各Buffer區(qū)域的檢測。
在完成檢測區(qū)域的設(shè)置后,進一步在各檢測區(qū)域中設(shè)置非常規(guī)的值,作為檢測標 識。其中,檢測標識的設(shè)定需要考慮以下問題問題一、BD區(qū)域的檢測區(qū)域和Buffer區(qū)域的檢測區(qū)域中的檢測標識是否設(shè)置為 相同的值。如果對所有BD區(qū)域的檢測區(qū)域和Buffer區(qū)域的檢測區(qū)域中的檢測標識都設(shè)置為 相同的值,可以降低檢測標識的設(shè)置復雜度,提高設(shè)置效率,而且后續(xù)判斷檢測標識是否發(fā) 生變化的標準也將得到統(tǒng)一,但是這樣的設(shè)置在沒有額外的設(shè)置的情況下,對于BD區(qū)域和 Buffer區(qū)域的識別度較低,為了區(qū)分BD區(qū)域和Buffer區(qū)域的檢測,同樣也可以將BD區(qū)域 和Buffer區(qū)域的檢測區(qū)域中的檢測標識設(shè)置的不同,但其中,各Buffer區(qū)域的檢測區(qū)域中 的檢測標識可以相同,而BD區(qū)域的檢測區(qū)域的檢測標識也可以相同。具體檢測標識是否相 同并不會影響本發(fā)明的保護范圍。問題二、檢測標識的值的非常規(guī)性為了避免其他信息對檢測信息識別準確度的干擾,需要將檢測標識的具體數(shù)值設(shè) 置為非常規(guī)的數(shù)值,從而降低將內(nèi)存中的其他數(shù)據(jù)信息誤讀為檢測標識的可能性,并且,為 了提高識別度,對于檢測標識復雜度的要求也可以進一步提高,一方面可以增加檢測標識 的長度,另一方面,也可以降低檢測標識中的各數(shù)值之間的關(guān)聯(lián)性和規(guī)律性。在完成上述的設(shè)置后,即完成了對于BD區(qū)域和Buffer區(qū)域的檢測區(qū)域的設(shè)置,從 而,為檢測BD區(qū)域或Buffer區(qū)域的故障建立了檢測依據(jù)。二、報文收發(fā)過程中的故障檢測當分布式系統(tǒng)通過數(shù)據(jù)收發(fā)通道收發(fā)報文時,需要對前述設(shè)置的Check Flag區(qū)域 進行檢測,檢查Check Flag區(qū)域中的當前值是否符合預先設(shè)置的值,如果符合,則表示該 Check Flag區(qū)域所對應的BD區(qū)域或Buffer區(qū)域當前狀態(tài)正常,可以正常進行報文收發(fā)處 理;而如果Check Flag區(qū)域中的當前值不符合預先設(shè)置的值,則確定該Check Flag區(qū)域所 對應的BD區(qū)域或Buffer區(qū)域故障,其所對應的內(nèi)存區(qū)域可能被破壞,無法正常進行報文收 發(fā)處理,或所進行的報文收發(fā)處理出錯。由此,達到了快速檢測故障的目的。考慮到Buffer區(qū)域直接用來存儲待收發(fā)的報文,對報文收發(fā)處理的影響最為直 接,因此,可以優(yōu)先進行Buffer區(qū)域所對應的Check Flag區(qū)域的檢測,如前,BD區(qū)域包含 的BD表項,而BD表項中的Buffer Pointer域中包含Buffer Pointer (緩沖指針),指向相 應的Buffer區(qū)域的位置,可以據(jù)此找到BD表項所表征的報文所存儲的Buffer區(qū)域,以進 行相應的報文收發(fā)處理。同樣已接收報文的處理過程為例,由本發(fā)明所提出的以上技術(shù)方案可見,每當接 收到報文時,可以在該報文所對應的BD表項中獲取Buffer Pointer,并根據(jù)該Buffer Pointer找到該報文所存儲的Buffer區(qū)域,按照預設(shè)的偏移策略(例如,從Buffer區(qū)域向 前偏移指定的字節(jié)數(shù)),從Buffer Pointer所指示的位置向前偏移固定的長度找到Check Flag區(qū)域,并進而根據(jù)Check Flag區(qū)域的預設(shè)值比較檢測來判斷該Buffer區(qū)域是否發(fā)生 破壞錯誤。在具體的應用場景中,Check Flag區(qū)域的預設(shè)值比較檢測失敗可能是以下兩種原因而導致的原因一、BD區(qū)域被破壞導致不能找到Buffer區(qū)域所對應的正確的Check Flag區(qū) 域。由于Buffer Pointer是從BD區(qū)域的BD表項中獲取的,所以,如果BD區(qū)域本身 被破壞,則獲取的Buffer Pointer可能指向錯誤的內(nèi)存位置,而錯誤的內(nèi)存位置肯定沒有 Check Flag區(qū)域,因此,后續(xù)進行的Check Flag區(qū)域的預設(shè)值比較檢測必然不能通過,故發(fā) 現(xiàn)錯誤,但這樣的錯誤并不一定是Buffer區(qū)域被破換而導致的,因此,需要進一步對BD區(qū) 域的Check Flag區(qū)域進行預設(shè)值比較檢測,如果通過,則必然是Buffer區(qū)域被破壞,相反, 如果沒有通過,則可以確定是BD區(qū)域被破壞。原因二、Buffer區(qū)域被破壞。如果是Buffer區(qū)域發(fā)生內(nèi)存破壞錯誤,則該Buffer區(qū)域?qū)腃heck Flag區(qū)域 被破壞的可能性也非常大,通過本發(fā)明所提出的方法同樣可以完成檢測。需要指出的是,為了達到快速檢測的目的,Check Flag區(qū)域的長度設(shè)計需要進行 考慮,不應過長,但也不應該過短,太短了容易誤檢測或者檢測不到錯誤,太長了則會因預 設(shè)值對比過于復雜而耗時較長,影響性能。在具體的應用場景中,以2個字節(jié)(16個比特)左右的長度設(shè)置Check Flag區(qū)域 比較合適。同時,基于前述的問題二(檢測標識的值的非常規(guī)性)中所描述的情況,Check Flag區(qū)域中的值的設(shè)計應該選擇比較特別的值,不能太符合編程語言里的值,不能設(shè)置為 全零或者全F,以免發(fā)生誤檢測。由以上的描述可以看出,本發(fā)明所提出的技術(shù)方案中的檢測流程簡單有效,可以 分析一下,首先,根據(jù)Buffer Pointer的指示,回偏固定長度,獲取2個字節(jié)的數(shù)據(jù),然后, 將獲取的數(shù)據(jù)與預設(shè)值進行“與”判斷,這樣的兩個步驟的系統(tǒng)資源開銷對于整個收包過程 的系統(tǒng)資源開銷來說,所增加的系統(tǒng)開銷量非常小,小到可以忽略不計,因此,本發(fā)明所提 出的技術(shù)方案中的檢測流程并不會為系統(tǒng)增加過多的額外開銷,對系統(tǒng)性能的影響也非常 小。在實際應用中,以上的錯誤檢測方式還可以聯(lián)合其它的一些技術(shù)進行聯(lián)合排查錯 誤,如結(jié)合報文里的CRC字段檢測,BD區(qū)域的不同狀態(tài)字檢測等,從而,能夠排查各種軟件 和硬件導致的錯誤。對比一下現(xiàn)有技術(shù),由于現(xiàn)有技術(shù)沒有Check Flag區(qū)域,只能直接檢測BD區(qū)域里 的內(nèi)容和Buffer的內(nèi)容,由于需要檢測的數(shù)據(jù)量大,檢測過程很耗時,從而對收發(fā)包性能 影響也會比較明顯,更主要的是沒有可靠的錯誤判斷依據(jù),無法真實有效的發(fā)現(xiàn)錯誤。由此 不難看出,本發(fā)明所提出的的檢測方法很簡單,快速有效,對性能影響很小,相比現(xiàn)有技術(shù) 進步明顯。另外,需要進一步指出的是,如果需要進一步簡化檢測流程,可以在每次收包時都 只檢測Buffer區(qū)前的檢測字段,只要檢測失敗就確定故障發(fā)生,而不再區(qū)分是BD區(qū)域被破 壞還是僅僅是Buffer區(qū)域被破壞,這樣,可以在不檢測BD區(qū)域的情況下,就能發(fā)現(xiàn)問題,從 而,進一步檢測流程,盡量減少收包時的附加工作,盡量減少性能損失。相對應的,在檢測出故障的情況下,本發(fā)明還提供了一種針對故障的自愈保護方 法,該方法主要是考慮故障的快速回復以及故障信息的保留。
在收發(fā)包過程中,通過上述錯誤檢測方法檢測到數(shù)據(jù)區(qū)域被破壞后,將不再操作 當前這些被破壞的數(shù)據(jù)區(qū)域,從而,保護好被破壞的現(xiàn)場,為以后的故障診斷保留證據(jù)和參
考fn息。與此同時,還需要臨時關(guān)閉硬件傳送功能,重新構(gòu)建另一個數(shù)據(jù)管理區(qū)域(BD區(qū) 域)和對應的報文緩沖區(qū)域(Buffer區(qū)域)后,重新設(shè)置硬件索引寄存器,打開硬件報文傳 送功能,恢復收發(fā)包功能,從而實現(xiàn)自愈保護。在檢測到圖4中Buffer區(qū)域的Check Flag錯誤后,進行自愈保護的過程中,可以 根據(jù)不同的系統(tǒng)采用不同的策略。策略一在檢測到故障后,無論故障時發(fā)生在Buffer區(qū)域還是BD區(qū)域,都馬上進 行自愈保護操作。此時自愈保護動作應該是將現(xiàn)有的整個BD區(qū)域和Buffer區(qū)域均重新構(gòu)建,建立 新的BD區(qū)域和Buffer區(qū)域,進行自愈恢復。該策略的優(yōu)點是能夠以最快速度進行數(shù)據(jù)收發(fā)通道通信恢復,系統(tǒng)在最短的時 間內(nèi)達到自愈保護,對業(yè)務轉(zhuǎn)發(fā)造成的影響盡可能小,但是缺點是由于所有的BD區(qū)域和 Buffer區(qū)域均進行了恢復,導致其它沒有遭到破壞的Buffer區(qū)域中已經(jīng)接收到,但沒有及 時處理的報文也被遺棄,恢復過程中被遺棄不再處理的報文數(shù)較多,數(shù)據(jù)損失量較大。策略二 準確檢測故障發(fā)生的位置,針對故障發(fā)生的位置,針對相應的區(qū)域進行自 愈保護,在具體的應用場景中,根據(jù)檢測精度和Check Flag區(qū)域設(shè)置策略的區(qū)別,可以分為 以下三種方式方式一、如圖4所示,在檢測到Buffer區(qū)域的故障后,進一步檢測BD區(qū)域前后的 Check Flag區(qū)域是否正確,其中,該Check Flag區(qū)域?qū)氖钦麄€BD區(qū)域,從而,實現(xiàn)對于 整個BD區(qū)域的錯誤檢測。方式二、整個BD區(qū)域被預先劃分為不同的隊列區(qū)域,且在各隊列區(qū)域前后都設(shè)置 了 Check Flag區(qū)域。在檢測到Buffer區(qū)域的故障后,進一步檢測該Buffer區(qū)域所對應的 隊列區(qū)域前后的Check Flag區(qū)域是否正確,從而,實現(xiàn)對于指定隊列區(qū)域的錯誤檢測。方式三、在BD區(qū)域中的每個BD表項前后都設(shè)置了 Check Flag區(qū)域。在檢測到 Buffer區(qū)域的故障后,進一步檢測該Buffer區(qū)域所對應的BD表項前后的Check Flag區(qū)域 是否正確,從而,實現(xiàn)對于指定BD表項的錯誤檢測。以上三種方式的區(qū)別在于不同的檢測精度,由方式一到方式三,檢測精度逐漸升 高,在實際的操作中,檢測精度越高,越容易發(fā)現(xiàn)問題的具體位置,但耗時較多;檢測精度越 低,耗時越少,檢測到的可能錯誤范圍越大。自愈恢復時可以根據(jù)檢測到的錯誤范圍實現(xiàn)對應區(qū)域的恢復,不同的系統(tǒng)可以選 擇不同的檢測方式。例如很多系統(tǒng)的數(shù)據(jù)收發(fā)通道在進行收包處理時都會使用8個隊列收包,此時, 可以按照上述的方式二的策略進行隊列區(qū)域的劃分,并對其對應隊列區(qū)域的Check Flag 區(qū)域進行檢測,每個隊列區(qū)域都設(shè)置有相應的CheckFlag區(qū)域,在接收報文時,如果發(fā)現(xiàn) Buffer區(qū)域的Check Flag區(qū)域檢測錯誤,則可以將進一步檢測該Buffer在BD區(qū)域中所對 應的隊列區(qū)域,即檢測該隊列區(qū)域的Check Flag區(qū)域是否正確,從而,將檢測的范圍局限在 本隊列之內(nèi),如果該隊列區(qū)域前的Check Flag區(qū)域錯誤,則確定該隊列區(qū)域被破壞,于是重新在BD區(qū)域中申請該隊列區(qū)域,以及該隊列區(qū)域所對應的Buffer區(qū)域,實現(xiàn)該隊列的自愈恢復。由于自愈恢復是有代價的,即恢復前所有已經(jīng)接收到Buffer區(qū)域里的報文均不 會再被處理,會出現(xiàn)部分報文的丟失,因此,如果采用方式二,將檢測和自愈恢復的范圍局 限于隊列范圍內(nèi),則自愈恢復只會丟失該發(fā)生錯誤的隊列的報文,而對其它隊列沒有影響。進一步的,如果使用上述的方式三,在BD區(qū)域中針對每一個BD表項進行檢測并恢 復,則只會丟棄當前發(fā)現(xiàn)錯誤的這個報文,將因自愈恢復而造成的數(shù)據(jù)損失進一步降低。但是,考慮到軟件系統(tǒng)內(nèi)存被破壞時一般都是成片的破壞,故在使用方式三進行 自愈恢復的場景中,由于每次只恢復當前報文所對應的BD表項和Buffer區(qū)域,則很有可能 會發(fā)生多次自愈恢復動作。由于檢測和恢復時間的延長,會影響自愈恢復的及時性。綜上,本發(fā)明的自愈恢復方案可以根據(jù)不同系統(tǒng),不同的處理效率和處理精度要 求,進行不同的選擇,選擇符合目標系統(tǒng)需求的最優(yōu)的方案,具體應用上述哪種方式進行自 愈恢復并不會影響本發(fā)明的保護范圍。在現(xiàn)有的技術(shù)方案中,對于報文控制區(qū)域(BD區(qū)域和Buffer區(qū)域)被意外破壞的 情況,數(shù)據(jù)收發(fā)通道的通信立刻被中止,單板進行重啟,而重啟后內(nèi)存區(qū)域中數(shù)據(jù)被全部清 除了,不僅數(shù)據(jù)被損失,而且此時導致破壞的原因也很難查找。而在本發(fā)明的技術(shù)方案中, 由于增加了自愈功能,數(shù)據(jù)收發(fā)通道在短暫中止后便能夠自愈恢復,保證了系統(tǒng)繼續(xù)正常 運行,另外,原來被破壞的區(qū)域能夠得到保存,為后面查找破壞原因提供很好的現(xiàn)場環(huán)境, 有利于設(shè)備維護。需要進一步指出的是,上述的Check Flag區(qū)域的設(shè)置位置均是本實施例中所給出 的一種優(yōu)選方案,根據(jù)實際的場景需要,可以進一步的進行調(diào)整,這樣的變化并不會影響本 發(fā)明的保護范圍。為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,下面以一種通用CPU處理收 包過程為例,對本發(fā)明進一步詳細說明。如圖5所示,為本發(fā)明所提出的一種具體應用場景下的內(nèi)存的故障檢測方法的流 程示意圖,具體包括以下步驟步驟S501、系統(tǒng)初始化的時候,設(shè)置隊列區(qū)域和Rx Buffer區(qū)域的Check Flag區(qū) 域,并設(shè)置其中的檢測值。在本實施場景中,系統(tǒng)使用8個隊列來處理數(shù)據(jù)收發(fā)通道收到的報文,8個隊列分 別在BD區(qū)域中建立對應的隊列區(qū)域,用于存放該隊列中報文所對應的BD表項,在每個隊列 區(qū)域前增加Queue Check Flag區(qū)域。具體的,通過上述設(shè)置,BD區(qū)域中會有8個Queue Check Flag區(qū)域,每個Queue Check Flag區(qū)域的大小為2Bytes,其中包含預設(shè)值為“9BC5F1A6”。另一方面,初始化每個Rx Buffer區(qū)域時,每個Rx Buffer區(qū)域之前都增加了一個 Buffer Check Flag區(qū)域,大小為2Bytes,其中包含的預設(shè)值為“4AB78CD6”,假如一個隊列 有256個Rx Buffer區(qū)域,那么,對于一個隊列,這里就需要增設(shè)256個Buffer Check Flag 區(qū)域。步驟S502、在接收報文的時候,根據(jù)BD區(qū)域中獲取的Buffer Pointer找到對應的 Rx Buffer區(qū)域的位置,并從該Rx Buffer區(qū)域向前偏移固定長度,找到該Rx Buffer區(qū)域所對應的Buffer Check Flag區(qū)域,讀取其中的2Bytes數(shù)據(jù),與預設(shè)的檢測值“4AB78CD6” 進行比較。如果發(fā)現(xiàn)比較結(jié)果一致,則表示該Rx Buffer區(qū)域正常,可以繼續(xù)進行收包處理。如果發(fā)現(xiàn)比較結(jié)果不一致,則表示該Rx Buffer區(qū)域有錯誤,此時進一步檢測,執(zhí) 行步驟S503。步驟S503、根據(jù)當前報文的隊列信息,找到該報文對應的隊列區(qū)域的Queue Check Flag區(qū)域,,讀取其中的2Bytes數(shù)據(jù),與預設(shè)的檢測值“9BC5F1A6”進行比較。如果比較結(jié)果一致,則執(zhí)行步驟S504 ;如果比較結(jié)果不一致,則執(zhí)行步驟S505。步驟S504、判斷為Rx Buffer區(qū)域的內(nèi)存被破壞,并進行Rx Buffer區(qū)域故障恢
Μ. ο具體恢復過程包括1、不需要重新申請BD區(qū)域,而是直接利用原BD區(qū)域中的空間重新初始化該隊列 區(qū)域,并建立該隊列區(qū)域中的所有BD表項。2、重新申請256個Rx Buffer區(qū)域的內(nèi)存掛接到重新初始化的隊列區(qū)域中的256
個BD表項上,重新設(shè)置對應寄存器進行自愈恢復。此時,原有的包含故障的256個Rx Buffer區(qū)域中的數(shù)據(jù)不再繼續(xù)進行處理,由于 保留了被破壞的Rx Buffer區(qū)域的現(xiàn)場,在后續(xù)的處理過程中,可以進一步根據(jù)保存的現(xiàn)場 查找Rx Buffer區(qū)域內(nèi)存被破壞的原因。步驟S505、判斷為BD區(qū)域的隊列區(qū)域被破壞,并對該隊列區(qū)域進行恢復操作。重新在BD區(qū)域中申請該隊列區(qū)域,并初始化該隊列區(qū)域中的BD表項,重新申請Rx Buffer區(qū)域,并掛接到重新初始化的隊列區(qū)域中的BD表項上,從而,完成自愈恢復動作。此時,不但保留了原256個Rx Buffer區(qū)域,還保留了原隊列區(qū)域中的256個BD 表項,在后續(xù)的處理過程中,可以進一步根據(jù)保存的現(xiàn)場查找BD區(qū)域的隊列區(qū)域的問題。以上的具體實施例中,在對發(fā)生錯誤的隊列區(qū)域進行自愈恢復的同時,本隊列已 經(jīng)緩存下來但還沒有來得及處理的報文被遺棄在內(nèi)存里供定位問題使用,但這樣的處理不 會影響其它隊列的業(yè)務進行;由于恢復過程是比較快速的,不會對整個系統(tǒng)的數(shù)據(jù)收發(fā)通 道造成沖擊,能夠很好的實現(xiàn)自愈恢復。還需要說明的是,本發(fā)明的上述實施用例是針對數(shù)據(jù)收發(fā)通道的收包過程實施 的,但本領(lǐng)域的技術(shù)人員可以在實現(xiàn)各種數(shù)據(jù)收發(fā)通道的其他業(yè)務處理過程時,同樣可以 應用本發(fā)明所提出的技術(shù)方案,這樣的變化同樣屬于本發(fā)明的保護范圍。例如,在業(yè)務轉(zhuǎn)發(fā)芯片將報文送給控制器處理時,控制器處理的是協(xié)議報文,而并 不一定是內(nèi)部通信控制通道的報文,此時,對于相應的BD區(qū)域和Buffer區(qū)域同樣可以應用 本發(fā)明的技術(shù)方案。又例如,在使用其它芯片,如串口、I2C總線接口使用BD區(qū)域和Buffer區(qū)域形式 處理報文時,同樣可以應用本發(fā)明的技術(shù)方案。以上的舉例并非用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi)所做 的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點
通過應用本發(fā)明的技術(shù)方案,為報文緩沖區(qū)域和緩沖描述符區(qū)域設(shè)置相應的檢測 區(qū)域,并通過其中的檢測標識是否異常進行故障識別,從而,能夠使分布式系統(tǒng)在因報文緩 沖區(qū)域發(fā)生故障,或因緩沖描述符區(qū)域故障而導致報文緩沖區(qū)域不能正常訪問而影響報文 收發(fā)處理時,能夠快速檢測故障的發(fā)生,避免發(fā)生二次錯誤,具體的檢測方法實現(xiàn)過程簡 單、檢測速度快,對系統(tǒng)資源的占用少,對系統(tǒng)的業(yè)務處理性能影響小。為了實現(xiàn)本發(fā)明的技術(shù)方案,本發(fā)明還提出了一種單板,其結(jié)構(gòu)示意圖如圖6所 示,包括設(shè)置模塊61,用于為內(nèi)存中的各報文緩沖區(qū)域分別設(shè)置對應的檢測區(qū)域,并在各 檢測區(qū)域中預設(shè)檢測標識,并設(shè)置偏移策略。在具體的應用場景中,設(shè)置模塊61具體用于在各報文緩沖區(qū)域之前和/或之后, 按照預設(shè)的字段長度分別設(shè)置各報文緩沖區(qū)所對應的檢測區(qū)域,并在各檢測區(qū)域中預設(shè)檢 測標識。獲取模塊62,用于獲取緩沖描述符區(qū)域中記錄的緩沖指針;查找模塊63,與設(shè)置模塊61和獲取模塊62相連接,用于按照設(shè)置模塊61所設(shè)置 的的偏移策略,在獲取模塊62所獲取的緩沖指針所指示的位置上進行偏移調(diào)整后,查找報 文緩沖區(qū)域所對應的檢測區(qū)域;判斷模塊64,與設(shè)置模塊61和查找模塊63相連接,用于判斷查找模塊63所查找 到的報文緩沖區(qū)域所對應的檢測區(qū)域中當前的檢測標識是否與設(shè)置模塊61在檢測區(qū)域中 所預設(shè)的檢測標識相一致;確定模塊65,與判斷模塊64相連接,用于在判斷模塊64所生成的報文緩沖區(qū)域所 對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致時,確定報文緩沖區(qū)域所對應的內(nèi)存當 前出現(xiàn)故障。進一步的,設(shè)置模塊61還用于在緩沖描述符區(qū)域之前和/或之后,按照預設(shè)的 字段長度設(shè)置各報文緩沖區(qū)所對應的檢測區(qū)域,并在各檢測區(qū)域中預設(shè)檢測標識,具體包 括按照預設(shè)的字段長度在整個緩沖描述符區(qū)域的之前和/或之后設(shè)置整個緩沖描 述符區(qū)域所對應的檢測區(qū)域,并在該檢測區(qū)域中預設(shè)檢測標識;或,在緩沖描述符區(qū)域中所包含的各隊列區(qū)域的之前和/或之后,按照預設(shè)的字段長 度分別設(shè)置緩沖描述符區(qū)域中各隊列區(qū)域所對應的檢測區(qū)域,并在各隊列區(qū)域所對應的檢 測區(qū)域中預設(shè)檢測標識;或,在緩沖描述符區(qū)域中所包含的各報文描述符的之前和/或之后,按照預設(shè)的字段 長度分別設(shè)置緩沖描述符區(qū)域中各報文描述符所對應的檢測區(qū)域,并在各報文描述符所對 應的檢測區(qū)域中預設(shè)檢測標識。在此基礎(chǔ)上,當設(shè)置模塊61為內(nèi)存中的緩沖描述符區(qū)域設(shè)置對應的檢測區(qū)域,并 在各檢測區(qū)域中預設(shè)檢測標識時,如果判斷模塊64所生成的報文緩沖區(qū)域所對應的檢測 區(qū)域中的檢測標識的判斷結(jié)果為不一致;判斷模塊64,還用于判斷緩沖描述符區(qū)域所對應的檢測區(qū)域中當前的檢測標識是 否與檢測區(qū)域中所預設(shè)的檢測標識相一致;確定模塊65,還用于當判斷模塊64所生成的緩沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為一致時,確定報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障,或當 判斷模塊64所生成的緩沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一 致時,確定緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障。相應的,查找模塊63,還用于當設(shè)置模塊61所設(shè)置的緩沖描述符區(qū)域所對應的檢測區(qū)域具體為整個緩沖描述 符區(qū)域所對應的檢測區(qū)域時,查找模塊63按照設(shè)置模塊61所設(shè)置的偏移策略,在整個緩沖 描述符區(qū)域的位置上進行偏移調(diào)整后,確定整個緩沖描述符區(qū)域所對應的檢測區(qū)域;當設(shè)置模塊61所設(shè)置的緩沖描述符區(qū)域所對應的檢測區(qū)域具體為緩沖描述符區(qū) 域中所包含的各隊列區(qū)域所對應的檢測區(qū)域時,查找模塊63按照設(shè)置模塊61所設(shè)置的偏 移策略,在報文緩沖區(qū)域所對應的隊列區(qū)域的位置上進行偏移調(diào)整后,確定隊列區(qū)域所對 應的檢測區(qū)域;當設(shè)置模塊61所設(shè)置的緩沖描述符區(qū)域所對應的檢測區(qū)域具體為緩沖描述符區(qū) 域中所包含的各報文描述符的檢測區(qū)域時,查找模塊63按照設(shè)置模塊61所設(shè)置的偏移策 略,在報文緩沖區(qū)域所對應的報文描述符的位置上進行偏移調(diào)整后,確定報文描述符所對 應的檢測區(qū)域。進一步的,該單板還包括自愈模塊66,具體用于在確定模塊65確定報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,對內(nèi)存中全 部的報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護,或?qū)Πl(fā)生故障的報文緩沖區(qū)域所 對應的緩沖描述符區(qū)域和緩沖描述符區(qū)域所對應的全部報文緩沖區(qū)域進行自愈保護;在確定模塊65確定緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,對內(nèi)存中 全部的報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護,或?qū)Πl(fā)生故障的緩沖描述符區(qū) 域和緩沖描述符區(qū)域所對應的全部報文緩沖區(qū)域進行自愈保護;其中,自愈模塊66對報文緩沖區(qū)域和/或緩沖描述符區(qū)域進行自愈保護的同時, 還用于對報文緩沖區(qū)域和/或緩沖描述符區(qū)域所對應的檢測區(qū)域進行自愈保護。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點通過應用本發(fā)明的技術(shù)方案,為報文緩沖區(qū)域和緩沖描述符區(qū)域設(shè)置相應的檢測 區(qū)域,并通過其中的檢測標識是否異常進行故障識別,從而,能夠使分布式系統(tǒng)在因報文緩 沖區(qū)域發(fā)生故障,或因緩沖描述符區(qū)域故障而導致報文緩沖區(qū)域不能正常訪問而影響報文 收發(fā)處理時,能夠快速檢測故障的發(fā)生,避免發(fā)生二次錯誤,具體的檢測方法實現(xiàn)過程簡 單、檢測速度快,對系統(tǒng)資源的占用少,對系統(tǒng)的業(yè)務處理性能影響小。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以通 過硬件實現(xiàn),也可以借助軟件加必要的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本發(fā) 明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲 介質(zhì)(可以是⑶-ROM,U盤,移動硬盤等)中,包括若干指令用以使得一臺計算機設(shè)備(可 以是個人計算機,服務器,或者網(wǎng)絡設(shè)備等)執(zhí)行本發(fā)明各個實施場景所述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個優(yōu)選實施場景的示意圖,附圖中的模塊或 流程并不一定是實施本發(fā)明所必須的。本領(lǐng)域技術(shù)人員可以理解實施場景中的裝置中的模塊可以按照實施場景描述進 行分布于實施場景的裝置中,也可以進行相應變化位于不同于本實施場景的一個或多個裝置中。上述實施場景的模塊可以合并為一個模塊,也可以進一步拆分成多個子模塊。上述本發(fā)明序號僅僅為了描述,不代表實施場景的優(yōu)劣。以上公開的僅為本發(fā)明的幾個具體實施場景,但是,本發(fā)明并非局限于此,任何本 領(lǐng)域的技術(shù)人員能思之的變化都應落入本發(fā)明的保護范圍。
權(quán)利要求
一種內(nèi)存的故障檢測方法,其特征在于,具體包括以下步驟獲取緩沖描述符區(qū)域中記錄的緩沖指針;按照預設(shè)的偏移策略,在所述緩沖指針所指示的位置上進行偏移調(diào)整后,查找報文緩沖區(qū)域所對應的檢測區(qū)域;判斷所述報文緩沖區(qū)域所對應的檢測區(qū)域中當前的檢測標識是否與所述檢測區(qū)域中所預設(shè)的檢測標識相一致;如果所述報文緩沖區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致,確定所述報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障。
2.如權(quán)利要求1所述的方法,其特征在于,在獲取緩沖描述符區(qū)域中記錄的緩沖指針 的步驟之前,所述方法還包括為內(nèi)存中的各報文緩沖區(qū)域分別設(shè)置對應的檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè)檢 測標識,具體為在各所述報文緩沖區(qū)域之前和/或之后,按照預設(shè)的字段長度分別設(shè)置各所述報文緩 沖區(qū)所對應的檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè)檢測標識。
3.如權(quán)利要求2所述的方法,其特征在于,所述方法還包括在所述為內(nèi)存中的各報文 緩沖區(qū)域設(shè)置對應的檢測區(qū)域的同時,為內(nèi)存中的緩沖描述符區(qū)域設(shè)置對應的檢測區(qū)域, 并在各所述檢測區(qū)域中預設(shè)檢測標識,具體為在所述緩沖描述符區(qū)域之前和/或之后,按照預設(shè)的字段長度設(shè)置各所述報文緩沖區(qū) 所對應的檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè)檢測標識。
4.如權(quán)利要求3所述的方法,其特征在于,所述在所述緩沖描述符區(qū)域之前和/或之 后,按照預設(shè)的字段長度設(shè)置各所述報文緩沖區(qū)所對應的檢測區(qū)域,并在各所述檢測區(qū)域 中預設(shè)檢測標識,具體為按照預設(shè)的字段長度在整個所述緩沖描述符區(qū)域的之前和/或之后設(shè)置整個所述緩 沖描述符區(qū)域所對應的檢測區(qū)域,并在所述檢測區(qū)域中預設(shè)檢測標識;或,將所述緩沖描述符區(qū)域劃分為一個或多個隊列區(qū)域,在所述緩沖描述符區(qū)域中所包 含的各隊列區(qū)域的之前和/或之后,按照預設(shè)的字段長度分別設(shè)置所述緩沖描述符區(qū)域中 各所述隊列區(qū)域所對應的檢測區(qū)域,并在各所述隊列區(qū)域所對應的檢測區(qū)域中預設(shè)檢測標 識-M,在所述緩沖描述符區(qū)域中所包含的各報文描述符的之前和/或之后,按照預設(shè)的字段 長度分別設(shè)置所述緩沖描述符區(qū)域中各所述報文描述符所對應的檢測區(qū)域,并在各所述報 文描述符所對應的檢測區(qū)域中預設(shè)檢測標識。
5.如權(quán)利要求3所述的方法,其特征在于,當為內(nèi)存中的緩沖描述符區(qū)域設(shè)置對應的 檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè)檢測標識時,如果所述報文緩沖區(qū)域所對應的檢測 區(qū)域中的檢測標識的判斷結(jié)果為不一致,所述方法還包括判斷所述緩沖描述符區(qū)域所對應的檢測區(qū)域中當前的檢測標識是否與所述檢測區(qū)域 中所預設(shè)的檢測標識相一致;如果所述緩沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為一致,確定所 述報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障;如果所述緩沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致,確定所述緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障。
6.如權(quán)利要求4或5所述的方法,其特征在于,所述判斷所述緩沖描述符區(qū)域所對應 的檢測區(qū)域中當前的檢測標識是否與所述檢測區(qū)域中所預設(shè)的檢測標識相一致之前,還包 括當內(nèi)存中所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為整個所述緩沖描述 符區(qū)域所對應的檢測區(qū)域時,按照預設(shè)的偏移策略,在整個所述緩沖描述符區(qū)域的位置上 進行偏移調(diào)整后,確定整個所述緩沖描述符區(qū)域所對應的檢測區(qū)域;當內(nèi)存中所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為所述緩沖描述符區(qū) 域中所包含的各隊列區(qū)域所對應的檢測區(qū)域時,按照預設(shè)的偏移策略,在所述報文緩沖區(qū) 域所對應的隊列區(qū)域的位置上進行偏移調(diào)整后,確定所述隊列區(qū)域所對應的檢測區(qū)域;當內(nèi)存中所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為所述緩沖描述符區(qū) 域中所包含的各報文描述符的檢測區(qū)域時,按照預設(shè)的偏移策略,在所述報文緩沖區(qū)域所 對應的報文描述符的位置上進行偏移調(diào)整后,確定所述報文描述符所對應的檢測區(qū)域。
7.如權(quán)利要求1或5所述的方法,其特征在于,所述確定所述報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,還包括 對內(nèi)存中全部的所述報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護,或?qū)Πl(fā)生故 障的報文緩沖區(qū)域所對應的緩沖描述符區(qū)域和所述發(fā)生故障的緩沖描述符區(qū)域所對應的 全部報文緩沖區(qū)域進行自愈保護;所述確定所述緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,還包括 對內(nèi)存中全部的所述報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護,或?qū)Πl(fā)生故 障的緩沖描述符區(qū)域和所述發(fā)生故障的緩沖描述符區(qū)域所對應的全部報文緩沖區(qū)域進行 自愈保護。
8.如權(quán)利要求7所述的方法,其特征在于,所述對報文緩沖區(qū)域和/或緩沖描述符區(qū)域 進行自愈保護的同時,還包括對報文緩沖區(qū)域和/或緩沖描述符區(qū)域所對應的檢測區(qū)域進行自愈保護。
9.一種單板,其特征在于,包括設(shè)置模塊,用于為內(nèi)存中的各報文緩沖區(qū)域分別設(shè)置對應的檢測區(qū)域,并在各所述檢 測區(qū)域中預設(shè)檢測標識,并設(shè)置偏移策略;獲取模塊,用于獲取緩沖描述符區(qū)域中記錄的緩沖指針;查找模塊,與所述設(shè)置模塊和所述獲取模塊相連接,用于按照所述設(shè)置模塊所設(shè)置的 的偏移策略,在所述獲取模塊所獲取的緩沖指針所指示的位置上進行偏移調(diào)整后,查找報 文緩沖區(qū)域所對應的檢測區(qū)域;判斷模塊,與所述設(shè)置模塊和所述查找模塊相連接,用于判斷所述查找模塊所查找到 的所述報文緩沖區(qū)域所對應的檢測區(qū)域中當前的檢測標識是否與所述設(shè)置模塊在所述檢 測區(qū)域中所預設(shè)的檢測標識相一致;確定模塊,與所述判斷模塊相連接,用于在所述判斷模塊所生成的所述報文緩沖區(qū)域 所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致時,確定所述報文緩沖區(qū)域所對應的 內(nèi)存當前出現(xiàn)故障。
10.如權(quán)利要求9所述的單板,其特征在于,所述設(shè)置模塊,具體用于在各所述報文緩沖區(qū)域之前和/或之后,按照預設(shè)的字段長度分別設(shè)置各所述報文緩沖區(qū)所對應的檢測區(qū) 域,并在各所述檢測區(qū)域中預設(shè)檢測標識。
11.如權(quán)利要求10所述的單板,其特征在于,所述設(shè)置模塊,還用于在所述緩沖描述符 區(qū)域之前和/或之后,按照預設(shè)的字段長度設(shè)置各所述報文緩沖區(qū)所對應的檢測區(qū)域,并 在各所述檢測區(qū)域中預設(shè)檢測標識,具體包括按照預設(shè)的字段長度在整個所述緩沖描述符區(qū)域的之前和/或之后設(shè)置整個所述緩 沖描述符區(qū)域所對應的檢測區(qū)域,并在所述檢測區(qū)域中預設(shè)檢測標識;或,在所述緩沖描述符區(qū)域中所包含的各隊列區(qū)域的之前和/或之后,按照預設(shè)的字段長 度分別設(shè)置所述緩沖描述符區(qū)域中各所述隊列區(qū)域所對應的檢測區(qū)域,并在各所述隊列區(qū) 域所對應的檢測區(qū)域中預設(shè)檢測標識;或,在所述緩沖描述符區(qū)域中所包含的各報文描述符的之前和/或之后,按照預設(shè)的字段 長度分別設(shè)置所述緩沖描述符區(qū)域中各所述報文描述符所對應的檢測區(qū)域,并在各所述報 文描述符所對應的檢測區(qū)域中預設(shè)檢測標識。
12.如權(quán)利要求11所述的單板,其特征在于,當所述設(shè)置模塊為內(nèi)存中的緩沖描述符 區(qū)域設(shè)置對應的檢測區(qū)域,并在各所述檢測區(qū)域中預設(shè)檢測標識時,如果所述判斷模塊所 生成的所述報文緩沖區(qū)域所對應的檢測區(qū)域中的檢測標識的判斷結(jié)果為不一致,所述判斷模塊,還用于判斷所述緩沖描述符區(qū)域所對應的檢測區(qū)域中當前的檢測標識 是否與所述檢測區(qū)域中所預設(shè)的檢測標識相一致;所述確定模塊,還用于當所述判斷模塊所生成的所述緩沖描述符區(qū)域所對應的檢測 區(qū)域中的檢測標識的判斷結(jié)果為一致時,確定所述報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故 障,或當所述判斷模塊所生成的所述緩沖描述符區(qū)域所對應的檢測區(qū)域中的檢測標識的判 斷結(jié)果為不一致時,確定所述緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障。
13.如權(quán)利要求11或12所述的單板,其特征在于,所述查找模塊,還用于當所述設(shè)置模塊所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為整個所述緩 沖描述符區(qū)域所對應的檢測區(qū)域時,所述查找模塊按照所述設(shè)置模塊所設(shè)置的偏移策略, 在整個所述緩沖描述符區(qū)域的位置上進行偏移調(diào)整后,確定整個所述緩沖描述符區(qū)域所對 應的檢測區(qū)域;當所述設(shè)置模塊所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為所述緩沖描 述符區(qū)域中所包含的各隊列區(qū)域所對應的檢測區(qū)域時,所述查找模塊按照所述設(shè)置模塊所 設(shè)置的偏移策略,在所述報文緩沖區(qū)域所對應的隊列區(qū)域的位置上進行偏移調(diào)整后,確定 所述隊列區(qū)域所對應的檢測區(qū)域;當所述設(shè)置模塊所設(shè)置的所述緩沖描述符區(qū)域所對應的檢測區(qū)域具體為所述緩沖描 述符區(qū)域中所包含的各報文描述符的檢測區(qū)域時,所述查找模塊按照所述設(shè)置模塊所設(shè)置 的偏移策略,在所述報文緩沖區(qū)域所對應的報文描述符的位置上進行偏移調(diào)整后,確定所 述報文描述符所對應的檢測區(qū)域。
14.如權(quán)利要求9所述的單板,其特征在于,還包括自愈模塊,具體用于在所述確定模塊確定所述報文緩沖區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,對內(nèi)存中全 部的所述報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護,或?qū)Πl(fā)生故障的報文緩沖區(qū) 域所對應的緩沖描述符區(qū)域和所述緩沖描述符區(qū)域所對應的全部報文緩沖區(qū)域進行自愈保護;在所述確定模塊確定所述緩沖描述符區(qū)域所對應的內(nèi)存當前出現(xiàn)故障之后,對內(nèi)存中 全部的所述報文緩沖區(qū)域和整個緩沖描述符區(qū)域進行自愈保護,或?qū)Πl(fā)生故障的緩沖描述 符區(qū)域和所述緩沖描述符區(qū)域所對應的全部報文緩沖區(qū)域進行自愈保護;其中,所述自愈模塊對報文緩沖區(qū)域和/或緩沖描述符區(qū)域進行自愈保護的同時,還 用于對報文緩沖區(qū)域和/或緩沖描述符區(qū)域所對應的檢測區(qū)域進行自愈保護。
全文摘要
本發(fā)明公開了一種內(nèi)存的故障檢測方法和單板,為報文緩沖區(qū)域和緩沖描述符區(qū)域設(shè)置相應的檢測區(qū)域,并通過其中的檢測標識是否異常進行故障識別,從而,能夠使分布式系統(tǒng)在因報文緩沖區(qū)域發(fā)生故障,或因緩沖描述符區(qū)域故障而導致報文緩沖區(qū)域不能正常訪問而影響報文收發(fā)處理時,能夠快速檢測故障的發(fā)生,避免發(fā)生二次錯誤,具體的檢測方法實現(xiàn)過程簡單、檢測速度快,對系統(tǒng)資源的占用少,對系統(tǒng)的業(yè)務處理性能影響小。
文檔編號H04L12/24GK101908984SQ20101021268
公開日2010年12月8日 申請日期2010年6月30日 優(yōu)先權(quán)日2010年6月30日
發(fā)明者戴霖, 楊秋林 申請人:杭州華三通信技術(shù)有限公司