[发明专利]一种检测及解决Linux系统死锁的方法有效
申请号: | 201310522839.7 | 申请日: | 2013-10-29 |
公开(公告)号: | CN103530197B | 公开(公告)日: | 2017-06-13 |
发明(设计)人: | 蔡和;洪文 | 申请(专利权)人: | 浙江宇视科技有限公司 |
主分类号: | G06F11/00 | 分类号: | G06F11/00;G06F11/26 |
代理公司: | 北京博思佳知识产权代理有限公司11415 | 代理人: | 李杰 |
地址: | 310051 浙江省杭州市滨江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 检测 解决 linux 系统 死锁 方法 | ||
技术领域
本发明涉及计算机及信息技术领域,尤其涉及一种检测及解决Linux系统死锁的方法。
背景技术
Linux操作系统被广泛运用在各种服务器上,但是不管是系统软件还是应用软件总会存在bug,从而导致系统出现死锁(lockup)。现有技术的Linux操作系统中的死锁包括软死锁和硬死锁(soft/hard lockup),如果检测到系统发生死锁,则切换到另一系统,用户还可以收集发生死锁的系统的环境信息,并且如果存在紧急业务,则处理所述紧急业务,之后重启发生死锁的系统。
但现有技术方案存在如下缺陷:
1)只检测本CPU是否发生死锁,未检测其它CPU是否发生死锁。
2)硬死锁发生后,检测到发生硬死锁的时间过长,从1分钟到5分钟不等,甚至更长。并且由于检测到发生硬死锁的时间过长,导致无法收集发生死锁的系统的环境信息,以及无法进行紧急业务的处理。
发明内容
有鉴于此,本发明提供一种检测及解决Linux系统死锁的方法,本发明可以通过处理器的至少两个CPU之间的相互检测,确定所述至少两个CPU是否发生死锁。
具体来说,本发明一种检测及解决Linux系统死锁的方法,该方法应用于包含至少两个CPU的处理器上;
所述至少两个CPU具有各自的定时器,并且分别绑定自身的软件看门狗线程,每个软件看门狗线程对应自身的调度计数变量;
该方法包括如下步骤:
a)每个CPU空闲时,执行对自身绑定的软件看门狗线程的调度,该软件看门狗线程被调度后其对应的调度计数变量值进行累加;
b)每个CPU对应的定时器到达预设的定时时间,该CPU执行对各CPU软件看门狗线程对应的调度计数变量的检测;
c)如果所述调度计数变量连续在预设次数未发生变化,则判断其对应的CPU发生死锁。
进一步地,所述步骤b)每个CPU对应的定时器到达预设的定时时间后该CPU执行对各CPU软件看门狗线程对应的调度计数变量的检测前进一步包括:
该CPU判断本轮是否已有CPU执行对各CPU软件看门狗线程对应的调度计数变量的检测;如果是,则返回步骤a);否则,执行对各CPU软件看门狗线程对应的调度计数变量的检测。
进一步地,各CPU对应一个已检测标志变量,该已检测标志变量包括若干比特位,每一个CPU的检测状态用一个比特位对应表示,该已检测标志变量值初始值为零;
所述该CPU判断本轮是否已有CPU执行对各CPU软件看门狗线程对应的调度计数变量的检测包括:已检测标志变量是否已赋值,且其对应的比特位是否未置位,如果是,则确认本轮已有CPU执行检测,否则确认本轮没有CPU执行检测;
当确认本轮已有CPU执行检测时,该CPU将已检测标志变量中对应自身的比特位置位,返回步骤a);当确认本轮没有CPU执行检测时,该CPU执行对各CPU软件看门狗线程对应的调度计数变量的检测,同时先将已检测标志变量赋零值,再将该CPU已检测标志变量中对应自身的比特位置位。
进一步地,所述软件看门狗线程还进一步包括在软件看门狗线程中设置可中断标志,保证软件看门狗线程睡眠后能被其他信号唤醒。
进一步地,该方法还包括通过硬件看门狗及NMI中断在预设的时间内检测系统是否发生死锁。
进一步地,设定NMI的中断触发时间,当NMI中断来临,从NMI中断处理函数中读取时间差值,如果时间差值大于预设的时间值,则判定发生死锁。
进一步地,所述的时间差值为硬件看门狗最后一次清零到NMI中断发生时的时长。
由此可见,本发明通过CPU之间的相互检测,改善了现有技术中各CPU只能对自身进行死锁检测的局限问题,并且通过合理设置软件看门狗定时器计数时间及NMI中断与硬件看门狗定时器配合中断检测时间,缩短了检测出系统发生死锁的时长,使得用户能够及时的收集环境信息及紧急业务的处理,让系统及时回到可用状态。
附图说明
图1是本发明软件看门狗定时器中断处理函数CPU相互检测流程图;
图2是本发明NMI中断处理函数流程图。
具体实施方式
下面结合附图及以计算机程序实现为例对本发明再作进一步详细的说明。
本发明一种的实施方式中(以计算机程序实现为例)的本发明一种检测及解决Linux系统死锁的方法,该方法应用于包含至少两个CPU的处理器上;
在优选的实施方式中,本发明方法具体如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江宇视科技有限公司,未经浙江宇视科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310522839.7/2.html,转载请声明来源钻瓜专利网。