一种避免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日