当前位置: 首页 > 专利查询>伊姆西公司专利>正文

检测进程无响应的方法和装置制造方法及图纸

技术编号:14337517 阅读:64 留言:0更新日期:2017-01-04 10:42
本公开的实施例公开了一种用于检测进程无响应的方法和装置,该方法包括:针对多个目标进程中的每个目标进程,在系统内核侧创建并激活定时器,以针对所述目标进程进行计时;以及在对应的所述定时器的计时超过预定的时间阈值时,确定所述目标进程无响应,并且执行预定的相关联的动作。本公开的实施例能够支持多个监控目标并对其进行动态扩展,在系统内核层实现了对用户空间事务的监控,通过系统调用的方式来进行监控目标和检测器之间的通信,同时能够管理并利用底层的硬件看门狗,有效地提高了进程无响应检测的可扩展性和可靠性并克服了硬件依赖性。

【技术实现步骤摘要】

本公开的实施例总体涉及对进程无响应的检测,更具体地,涉及一种用于检测进程无响应的方法和装置
技术介绍
对于操作系统而言,在系统不同级别上的挂起(hang)或无响应检测是使系统具有更好的可支持性和可调试性的关键。挂起检测器(hangdetector),例如看门狗(watchdog),是用以实现该目标的一种机制。通常,挂起检测器试图将挂起或无响应问题转换成内核失措(kernelpanic)或者进程核心转储(processcoredump)问题,从而避免工程团队在客户环境上进行调试工作,这在多数客户案例中通常是不可能的。通过内核或者进程核心转储,工程团队能够进行离线分析,使得能够应用进一步的支持性行动以修复客户问题。一般而言,挂起检测器涉及两个部分:监控目标以及检测器(或者看门狗)。监控目标是需要由挂起检测器检查的硬件或软件上下文,它可以是进程、线程、软件中断或硬件中断、或者用户/内核空间应用程序编程接口(API)。检测器是周期性地检查来自相关的监控目标的硬件或软件事件的另一硬件或软件上下文。如果硬件或软件事件指示挂起发生,则检测器可以采取行动以恢复监控目标,例如,触发进程核心转储、内核或者平台硬重启。根据实现方式,挂起检测器可以分为两类:硬件挂起检测器和软件挂起检测器。硬件挂起检测器通常需要附加的硬件支持并且通常不由主机操作系统所拥有,因此即使主机死掉它仍然可以控制系统。操作系统和进程可以向硬件挂起检测器发送心跳消息,当硬件挂起检测器在一定时间段内没有收到心跳消息,它可以触发内核失措或者系统重启。软件挂起检测器是主机操作系统中的软件部件,它可以从目标>进程(或线程)接收心跳消息。如果没有接收到心跳消息,软件挂起检测器可以使系统失措或者仅仅杀掉目标进程。根据使用场景,挂起检测器可以分为两类:内核空间挂起检测器和用户空间挂起检测器。一般而言,内核空间挂起检测器需要处理两类问题:由中央处理单元(CPU)加锁引起的进程挂起,通常这类挂起是由不合适的中断禁止时间或者由自旋锁(spinlock)死锁导致的任务饥饿;以及由进程睡眠引起的进程受困,通常这类挂起是由非自旋锁之间的死锁或者存储器或输入输出(I/O)资源所导致。用户空间挂起检测器最常见的实现方式是在用户空间中引入另一检测器进程以检测具体用户进程挂起的问题。例如,进程A是监控目标而进程B是挂起检测器。进程A向进程B周期性地发送心跳消息。如果B不能够及时地收到该心跳消息,则B将杀掉进程A或者使系统失措。然而,现有的这些挂起检测器存在各种缺点或不足。典型的硬件挂起检测器,例如,智能平台管理界面(IPMI)看门狗以及平台控制器中心(PCH)或I/O控制器中心(ICH)看门狗,存在硬件依赖性问题和可扩展性问题。硬件挂起检测器通常仅能够用于特定类型的硬件,并且通常仅存在由硬件提供的一个定时器实例,因此难以被用于多个进程的挂起检测,尤其在不同进程具有不同的时序要求时。内核空间挂起检测器通常仅具有内核调度信息,而用户空间的事务性挂起需要知道用户空间事务的时间要求,因此内核空间检测器往往具有其局限性。用户空间挂起检测器具有用户空间事务的信息,通过适当的设计能够检测用户空间挂起问题,但是在可靠性和可扩展性方面存在严重的不足或局限。例如,当内核出现问题时,用户空间挂起检测器本身可能受困;当挂起检测器想要采取行动时,触发该行动的代码可能也出现了问题。又如,用户空间挂起检测器通常是自组织实现方式,因此不能够有效地扩展其功能以支持新的用户空间事务。通常监控目标和检测器两侧都需要修改代码。因此,本领域中需要一种更为有效的技术方案来检测系统中的进程挂起或无响应,以解决上述问题。
技术实现思路
本公开的实施例旨在提供一种用于检测进程无响应的方法和装置,以解决上述问题。根据本公开的一个方面,提供了一种用于检测进程无响应的方法,所述方法包括:针对多个目标进程中的每个目标进程,在系统内核侧创建并激活定时器,以针对所述目标进程进行计时;以及在对应的所述定时器的计时超过预定的时间阈值时,确定所述目标进程无响应,并且执行预定的相关联的动作。在一个实施例中,所述目标进程是用户空间进程。在另一实施例中,预定的所述时间阈值以及预定的所述相关联的动作是响应于来自所述目标进程的设置命令而设置的。在又一实施例中,所述方法进一步包括:响应于接收到来自所述目标进程的心跳消息,重新启动对应的所述定时器,以针对所述目标进程重新计时。在再一实施例中,所述定时器记录指示接收到来自所述目标进程的预定字符的标志。在再一实施例中,响应于接收到来自所述目标进程的心跳消息,重新启动对应的所述定时器,以针对所述目标进程重新计时包括:从所述心跳消息中获取由所述目标进程写入的字符;以及响应于确定所述字符是所述预定字符,设置所述标志以指示接收到来自所述目标进程的所述特定字符。在再一实施例中,所述方法进一步包括:响应于接收到来自所述目标进程的关闭消息,基于指示接收到来自所述目标进程的所述预定字符的所述标志来执行相应的操作。在再一实施例中,响应于接收到来自所述目标进程的关闭消息,基于指示接收到来自所述目标进程的所述预定字符的所述标志来执行相应的操作包括:在所述标志指示接收到来自所述目标进程的所述预定字符时,停止对应的所述定时器;以及在所述标志没有指示接收到来自所述目标进程的所述特定字符时,使得对应的所述定时器继续运行。在再一实施例中,所述方法进一步包括:在所述系统内核侧创建实时的内核线程,以周期性地向硬件看门狗发送心跳消息;以及在发生致命问题时,因内核无法正常工作而停止向所述硬件看门狗发送所述心跳消息,以便于由所述硬件看门狗对系统执行重新启动。在再一实施例中,所述硬件看门狗是具有一种或者多种类型的一个或者多个硬件看门狗。根据本公开的另一方面,提供了一种用于检测进程无响应的装置,所述装置包括:计时模块,被配置为针对多个目标进程中的每个目标进程,在系统内核侧创建并激活定时器,以针对所述目标进程进行计时;以及无响应确定模块,被配置为在对应的所述定时器的计时超过预定的时间阈值时,确定所述目标进程无响应,并且执行预定的相关联的动作。在一个实施例中,所述目标进程是用户空间进程。在另一实施例中,预定的所述时间阈值以及预定的所述相关联的动作是响应于来自所述目标进程的设置命令而设置的。在再一实施例中,所述装置进一步包括:心跳响应模块,被配置为响应于接收到来自所述目标进程的心跳消息,重新启动对应的所述定时器,以针对所述目标进程重新计时。在再一实施例中,所述定时器记录指示接收到来自所述目标进程的预定字符的标志。在再一实施例中,所述心跳响应模块被配置为:从所述心跳消息中获取由所述目标进程写入的字符;以及响应于确定所述字符是所述预定字符,设置所述标志以指示接收到来自所述目标进程的所述特定字符。在再一实施例中,所述装置进一步包括:关闭响应模块,被配置为响应于接收到来自所述目标进程的关闭消息,基于指示接收到来自所述目标进程的所述预定字符的所述标志来执行相应的操作。在再一实施例中,所述关闭响应模块被配置为:在所述标志指示接收到来自所述目标进程的所述预定字符时,停止对应的所述定时器;以及在所述标志没有指示接收到来自所述目标进程的所述特本文档来自技高网...
检测进程无响应的方法和装置

【技术保护点】
一种用于检测进程无响应的方法,所述方法包括:针对多个目标进程中的每个目标进程,在系统内核侧创建并激活定时器,以针对所述目标进程进行计时;以及在对应的所述定时器的计时超过预定的时间阈值时,确定所述目标进程无响应,并且执行预定的相关联的动作。

【技术特征摘要】
1.一种用于检测进程无响应的方法,所述方法包括:针对多个目标进程中的每个目标进程,在系统内核侧创建并激活定时器,以针对所述目标进程进行计时;以及在对应的所述定时器的计时超过预定的时间阈值时,确定所述目标进程无响应,并且执行预定的相关联的动作。2.根据权利要求1所述的方法,其中所述目标进程是用户空间进程。3.根据权利要求1所述的方法,其中预定的所述时间阈值以及预定的所述相关联的动作是响应于来自所述目标进程的设置命令而设置的。4.根据权利要求1所述的方法,进一步包括:响应于接收到来自所述目标进程的心跳消息,重新启动对应的所述定时器,以针对所述目标进程重新计时。5.根据权利要求4所述的方法,其中所述定时器记录指示接收到来自所述目标进程的预定字符的标志。6.根据权利要求5所述的方法,其中响应于接收到来自所述目标进程的心跳消息,重新启动对应的所述定时器,以针对所述目标进程重新计时包括:从所述心跳消息中获取由所述目标进程写入的字符;以及响应于确定所述字符是所述预定字符,设置所述标志以指示接收到来自所述目标进程的所述特定字符。7.根据权利要求6所述的方法,进一步包括:响应于接收到来自所述目标进程的关闭消息,基于指示接收到来自所述目标进程的所述预定字符的所述标志来执行相应的操作。8.根据权利要求7所述的方法,其中响应于接收到来自所述目标进程的关闭消息,基于指示接收到来自所述目标进程的所述预定字符的所述标志来执行相应的操作包括:在所述标志指示接收到来自所述目标进程的所述预定字符时,停止对应的所述定时器;以及在所述标志没有指示接收到来自所述目标进程的所述特定字符时,使得对应的所述定时器继续运行。9.根据权利要求1所述的方法,进一步包括:在所述系统内核侧创建实时的内核线程,以周期性地向硬件看门狗发送心跳消息;以及在发生致命问题时,因内核无法正常工作而停止向所述硬件看门狗发送所述心跳消息,以便于由所述硬件看门狗对系统执行重新启动。10.根据权利要求9所述的方法,其中所述硬件看门狗是具有一种或者多种类型的一个或者多个硬件看门狗。11.一种用于检测进程无响应的装置,所述装置包括:计时模块,被配置为针对多个目标进程中的每个目标进程,在系统内核侧创...

【专利技术属性】
技术研发人员:张绪峰杨勇
申请(专利权)人:伊姆西公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1