一種避免cpu被耗盡導致看門狗重啟的方法
【技術領域】
[0001]本發明涉及EOC局端設備流量報文處理領域,尤其是一種避免CPU被耗盡導致看門狗重啟的方法。
【背景技術】
[0002]EOC原文是“Ethernet over Coax”,也就是以太網信號在同軸電纜上的一種傳輸技術。
[0003]EOC分為EOC局端設備和EOC終端設備,EOC終端設備直接連接到用戶,EOC局端設備則連接到數據網絡,如圖1所示,用戶通過EOC終端和局端設備與數據網絡進行通信。
[0004]看門狗技術被廣泛應用于嵌入式軟件系統,充當系統“警察”的角色,當系統發生嚴重錯誤(比如程序進入死循環或者其它異常狀態)不能恢復的時候,看門狗能重啟系統,避免
系統在無人干預被長時間掛起或處于嚴重異常的狀態。看門狗技術在嵌入式系統中實現有多種方法,在采用嵌入式Linux的EOC系統中,通常在用戶態APP中創建一個看門狗應用程序,它定時調用內核接口去對看門狗內核標志位進行置位,告知看門狗內核程序進行喂狗,避免看門狗計數器溢出導致系統復位。
[0005]如果EOC局端在某段時間(超過定時喂狗周期)內持續進行大量數據報文轉發,使得CPU被內核轉發完全占據(因為其收發包使用軟中斷優先級很高,用戶態程序無法獲取CPU),用戶態看門狗應用程序由于無法獲得CPU,不能調用看門狗內核接口進行喂狗操作,導致在正常高速數據轉發中,系統誤以為異常而被看門狗重啟。現有技術方案一般是采取一次收發處理完上限個數的報文,內核轉發主動退出以釋放CPU,這種技術降低了突發流量處理能力。
【發明內容】
[0006]本發明所要解決的技術問題是:針對現有技術中EOC局端在某時間段因為大流量報文轉發導致CPU被耗盡導致看門狗重啟的問題,本發明提供了一種避免CPU被耗盡導致看門狗重啟的方法,其在內核轉發模塊進行檢測并幫助看門狗應用程序喂狗,當出現用戶態看門狗程序沒有正常喂狗時候,內核轉發模塊進入檢測狀態,在檢測時間內統計報文個數,如果報文個數超過定義閥值(該值即CPU轉發報文最大臨界值,可動態配置),則認為系統進入了 CPU被內核轉發耗盡的狀態,內核轉發模塊代替用戶態看門狗程序執行內核喂狗,避免看門狗重啟系統。而報文個數未超過定義閥值,則不屬于CPU被轉發耗盡狀態,而是系統出現了異常,看門狗重啟系統。在該方案中,內核轉發模塊與看門狗內核程序交互作用,很好地解決前面場景出現的問題。
[0007]本發明采用的技術方案如下:
一種避免CPU被耗盡導致看門狗重啟的方法包括:
步驟1:用戶態看門狗內核定時器初始化,設置喂狗時間周期等相關參數,開啟周期檢測任務;
步驟2:內核定時器周期t檢測用戶態看門狗模塊能否獲得CPU調度,若能獲得CPU調度,則系統正常,用戶態看門狗模塊喂狗正常;否則,執行步驟3 ;
步驟3:內核轉發模塊延遲看門狗的重啟,并在延遲的時間周期內進行轉發報文統計;若在延遲的時間周期P內統計轉發報文個數達到閥值S,則CPU被轉發耗盡,內核轉發模塊幫助喂狗,執行步驟4;否則,用戶態看門狗模塊未獲得CPU調度,系統異常,用戶態看門狗豐吳塊重新啟動;
步驟4:判斷內核轉發模塊幫助喂狗持續時間m是否達到上限,若是達到上限,則系統異常,用戶態看門狗模塊重啟;否則,內核轉發模塊幫助喂狗,執行步驟5 ;
步驟5:當用戶態看門狗模塊得到CPU調度,則結束內核轉發模塊幫助喂狗狀態,將內核轉發模塊相關數據和狀態清除,重新進入用戶態喂狗的初始狀態。
[0008]進一步的,所述步驟I中內核定時器周期t檢測用戶態看門狗模塊能否獲得CPU調度的判斷依據:根據用戶態看門狗模塊喂狗周期時間到達時,喂狗狀態標志是否置位判斷,若置位,則表示用戶態看門狗模塊獲得CPU調度,否則,表示用戶態看門狗模塊未獲得CHJ調度。
[0009]進一步的,所述t范圍是1s到20s,所述m范圍是100s到1500s。
[0010]進一步的,所述P范圍是3s到5s。
[0011]綜上所述,由于采用了上述技術方案,本發明的有益效果是:
本方法采用內核轉發模塊與看門狗交互判斷CPU當前狀態,簡單有效的解決EOC局端在某時間段因為大流量報文轉發導致CPU被耗盡導致看門狗重啟的問題。
[0012]使用該方法,不會影響當前數據轉發性能和突發。
【附圖說明】
[0013]本發明將通過例子并參照附圖的方式說明,其中:
圖1為EOC典型場景;
圖2為本方法流程圖。
【具體實施方式】
[0014]本說明書中公開的所有特征,或公開的所有方法或過程中的步驟,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。
[0015]本說明書(包括任何附加權利要求、摘要和附圖)中公開的任一特征,除非特別敘述,均可被其他等效或具有類似目的的替代特征加以替換。即,除非特別敘述,每個特征只是一系列等效或類似特征中的一個例子而已。
[0016]本專利相關說明:
用戶態看門狗模塊指的是用戶態看門狗程序能正常得到CPU調度,調用看門狗內核程序進行喂狗處理。
[0017]本方法中使用到的一些檢測參數,包括內核定時器檢測周期t,延遲狀態報文轉發統計周期P,報文個數閾值S與設備使用的CPU有很大的關系,CPU處理能力越強,那么這些參數值和范圍越小。要確立這些參數值,需要在具體設備上進行測試驗證,獲取穩定的測試數據后進行設置。筆者在使用Intel IXP420和PPC405EP兩款CPU的EOC產品上,內核定時器對用戶態看門狗喂狗檢測周期t為10秒,延遲狀態報文轉發統計周期P為3秒,延遲狀態內報文個數閾值S為27000個(9000個/秒)
工作原理:
用戶態看門狗程序能正常得到CPU調度,調用看門狗內核程序進行喂狗處理,該情況無需內核轉發模塊參與。當用戶態看門狗模塊無法得到CPU調度,看門狗內核定時器周期檢測,發現缺省喂狗時間周期到達而內核喂狗狀態標志未置位(即未能喂狗將執行重啟),此時看門狗不立即執行重啟,而是進入內核轉發模塊臨界檢測,在檢測周期(一般3-5秒)內統計轉發報文個數是否達到定義的閥值,若是則認為系統進入CPU被轉發耗盡狀態,此種情況由內核轉發模塊幫助喂狗避免重啟;否則認為系統進入異常狀態,看門狗重啟系統。內核轉發模塊持續幫助喂狗最長時間應有上限,作為系統參數該閥值可配置,當超過閥值則認為這種較長時間CPU被轉發耗盡狀態也屬于異常狀態,需要重啟;在內核轉發模塊幫助喂狗持續時間未超過上限閥值的過程中,一旦用戶態看門狗模塊得到CPU調度,則結束內核轉發模塊幫助喂狗狀態,將內核轉發模塊相關數據和狀態清除,重新進入用戶態喂狗的初始狀態。
[0018]【具體實施方式】:如圖2所述,
1.看門狗內核定時器初始化,設置喂狗時間周期等相關參數,開啟周期檢測任務。
[0019]2.用戶態看門狗模塊是否獲得CPU調度判斷邏輯,根據喂狗周期時間到達時喂狗狀態標志是否置位判斷,若置位則表示獲得CPU調度,否則表示未獲得CPU。
[0020]3.用戶態看門狗模塊獲得CPU調度,看門狗對系統進行了正常的喂狗操作;
4.用戶態看門狗模塊不能獲得CPU調度,進入內核轉發模塊臨界檢測處理。
[0021]5.內核轉發模塊臨界檢測處理延遲看門狗的重啟,在延遲的時間周期內進行轉發報文統計,根據統計的轉發報文個數進行CPU是否進入轉發耗盡狀態的判定。
[0022]6.CPU是否被轉發耗盡判定,臨界檢測周期內轉發報文個數達到定義的閥值,則認為CPU進入轉發耗盡狀態;否則未進入轉發耗盡狀態。
[0023]7.CPU未進入轉發耗盡狀態,用戶態看門狗應用程序也未獲得調度,系統異常,看門狗重啟系統。
[0024]8.CPU進入轉發耗盡狀態狀態,檢測到當前為止內核轉發模塊持續幫助喂狗時間是否達到上限閥值。
[0025]9.CPU在轉發耗盡狀態下,內核轉發模塊幫助看門狗喂狗持續時間達到上限閥值,認為系統處于異常狀態,不再幫助喂狗,而是由看門狗重啟系統。
[0026]10.CPU在轉發耗盡狀態下,內核轉發模塊幫助看門狗喂狗持續時間在規定門限內,內核轉發模塊幫助看門狗喂狗。
[0027]本發明并不局限于前述的【具體實施方式】。本發明擴展到任何在本說明書中披露的新特征或任何新的組合,以及披露的任一新的方法或過程的步驟或任何新的組合。
【主權項】
1.一種避免CPU被耗盡導致看門狗重啟的方法,其特征在于包括: 步驟1:用戶態看門狗內核定時器初始化,設置喂狗時間周期等相關參數,開啟周期檢測任務; 步驟2:內核定時器周期t檢測用戶態看門狗模塊能否獲得CPU調度,若能獲得CPU調度,則系統正常,用戶態看門狗模塊喂狗正常;否則,執行步驟3 ; 步驟3:內核轉發模塊延遲看門狗的重啟,并在延遲的時間周期內進行轉發報文統計;若在延遲的時間周期P內統計轉發報文個數達到閥值S,則CPU被內核轉發耗盡,內核轉發模塊幫助喂狗,執行步驟4 ;否則,用戶態看門狗模塊未獲得CPU調度,系統異常,用戶態看門狗模塊重新啟動; 步驟4:判斷內核轉發模塊幫助喂狗持續時間m是否達到上限,若是達到上限,則系統異常,用戶態看門狗模塊重啟;否則,內核轉發模塊幫助喂狗,執行步驟5 ; 步驟5:當用戶態看門狗模塊得到CPU調度,則結束內核轉發模塊幫助喂狗狀態,將內核轉發模塊相關數據和狀態清除,重新進入用戶態喂狗的初始狀態。2.根據權利要求1所述的一種避免CPU被耗盡導致看門狗重啟的方法,其特征在于所述步驟I中內核定時器周期t檢測用戶態看門狗模塊能否獲得CPU調度的判斷依據:根據用戶態看門狗模塊喂狗周期時間到達時,喂狗狀態標志是否置位判斷,若置位,則表示用戶態看門狗模塊獲得CPU調度,否則,表示用戶態看門狗模塊未獲得CPU調度。3.根據權利要求1所述的一種避免CPU被耗盡導致看門狗重啟的方法,其特征在于所述t范圍是1s到20s,所述m范圍是100s到1500s。4.根據權利要求1所述的一種避免CPU被耗盡導致看門狗重啟的方法,其特征在于所述P范圍是3s到5s。
【專利摘要】本發明涉及EOC局端設備流量報文處理領域,尤其是一種避免CPU被耗盡導致看門狗重啟的方法。本發明針對現有技術中存在的問題,本發明提供了一種避免CPU被耗盡導致看門狗重啟的方法,內核轉發模塊與看門狗內核程序交互作用,很好地解決前面場景出現的問題。本發明技術方式當出現用戶態看門狗程序沒有正常喂狗時候,內核轉發模塊進入檢測狀態,在檢測時間內統計報文個數,如果報文個數超過定義閥值,則系統進入了CPU被內核轉發耗盡的狀態,內核轉發模塊代替用戶態看門狗程序執行內核喂狗,避免看門狗重啟系統。而報文個數未超過定義閥值,則不屬于CPU被轉發耗盡狀態,而是系統出現了異常,看門狗重啟系統。
【IPC分類】G06F11/07
【公開號】CN105224411
【申請號】CN201510612825
【發明人】王飛
【申請人】成都廣達新網科技股份有限公司
【公開日】2016年1月6日
【申請日】2015年9月24日