CN116662117A - 基于定时器监控linux系统的方法、装置及存储介质 - Google Patents
基于定时器监控linux系统的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN116662117A CN116662117A CN202310646023.9A CN202310646023A CN116662117A CN 116662117 A CN116662117 A CN 116662117A CN 202310646023 A CN202310646023 A CN 202310646023A CN 116662117 A CN116662117 A CN 116662117A
- Authority
- CN
- China
- Prior art keywords
- cpu
- linux system
- monitoring
- monitored
- timer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 119
- 238000012544 monitoring process Methods 0.000 title claims abstract description 76
- 230000008569 process Effects 0.000 claims abstract description 88
- 238000011084 recovery Methods 0.000 claims description 69
- 230000002159 abnormal effect Effects 0.000 claims description 38
- 230000006870 function Effects 0.000 claims description 29
- 238000004891 communication Methods 0.000 claims description 21
- 239000000725 suspension Substances 0.000 claims description 19
- 230000008859 change Effects 0.000 claims description 7
- 230000005856 abnormality Effects 0.000 description 20
- 238000005192 partition Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种基于定时器监控linux系统的方法、装置及存储介质,涉及linux系统监控的技术领域,方法包括:利用linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,判断被监控的CPU是否出现挂死情况,如果被监控的CPU出现挂死情况,则linux系统运行异常,启动与当前用于监控的CPU连接的信息记录模块,将被监控的CPU上出现挂死情况前的有用进程信息记录,再保存至非易失性存储模块中,利用快速恢复模块重启恢复运行异常的系统,本发明能够使linux系统运行时能准时的调度执行低优先级的应用层任务,实现了linux系统内核线程的监控。
Description
技术领域
本发明涉及linux系统监控的技术领域,特别涉及一种基于定时器监控linux系统的方法、装置及存储介质。
背景技术
linux系统在当前工作生产中应用广泛,不论是服务器还是嵌入式设备都大量的部署了linux系统,广泛的应用就对系统运行的安全稳健提出了更高的要求,在实际的生产运行过程中有时候可能会出现内核线程无法调度、系统甚至无法响应中断的情况,对外表现就是系统卡住了,任何业务程序都无法执行,遇到这种情况,只能重新断电重启,因此,对Linux系统运行过程进行监控能够保障系统运行的安全稳健。
现有专利文献公开了操作系统内核级实时看门狗监控装置及其监控方法,通过定时器实现的看门狗模块监控应用程序,定时器模块用于当定时器内规定时间轮转到后进行监控每个已注册的应用程序是否超时,如果监控的应用层任务没有在规定的时间内执行则认为出了问题,后面就会执行复位等一系列操作;一方面,在面对给实时linux操作系统打RT-patch补丁的过程中,由于中断都线程化了,低精度定时器是由软中断实现的,所以低精度定时器的回调函数由中断执行变成了由线程执行,从而使得该监控方法遵循进程调度的机制,这将可能导致的结果是低优先级的应用层任务有可能不会被准时的调度执行;另一方面,该方法是利用定时器实现门狗模块监控应用程序,但监控的应用程序属于应用层,仅能实现应用层任务的监控,无法实现linux系统内核线程的监控。
发明内容
为解决在现有操作系统监控方法中,无法准时的调度执行低优先级的应用层任务和无法监控系统内核线程的问题,本发明旨在提供一种基于定时器监控linux系统的方法、装置及存储介质,使linux系统运行时能准时的调度执行低优先级的应用层任务,实现了linux系统内核线程的监控。
为了达到上述技术效果,本发明的技术方案如下:
一种基于定时器监控linux系统的方法,包括以下步骤:
linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,判断被监控的CPU是否出现挂死情况,若是,所述linux系统运行异常,启动与当前用于监控的CPU连接的信息记录模块;否则,继续监控其他CPU的运行状态;
所述信息记录模块将被监控的CPU出现挂死情况前的有用进程信息,全部记录至与所述信息记录模块连接的非易失性存储模块中;
所述非易失性存储模块保存所述有用进程信息,待所述有用进程信息保存结束后,启动与所述非易失性存储模块连接的快速恢复模块;
所述快速恢复模块重启恢复运行异常的linux系统。
进一步,所述linux系统中的每一个CPU注册一个高精度定时器,具体为:所述linux系统中的每一个CPU通过利用初始化函数hrtimer_init()和开启函数hrtimer_start()注册一个函数参数指定参数HRTIMER_MODE_REL_PINNED_HARD的高精度定时器。
进一步,所述挂死情况包括进程无法调度情况和中断无法响应情况。
进一步,所述判断被监控的CPU是否出现挂死情况,具体判断过程为:
首先利用每一个CPU的高精度定时器的回调函数,在每一个CPU中分别定义第一系统变量A和第二系统变量B,当每一个CPU的高精度定时器定时到期后,让每一个CPU上的第一系统变量A增加1;
然后在被监控的CPU上获取变化后的第一系统变量A,将被监控的CPU上变化后的第一系统变量A与上一个用于监控的CPU的第二系统变量B比较,若二者比较结果相等,则被监控的CPU上出现进程无法调度和中断无法响应的挂死情况,启动与当前用于监控的CPU连接的信息记录模块;否则,被监控的CPU的运行状态正常,将被监控的CPU上变化后的第一系统变量A赋值给上一个用于监控的CPU的第二系统变量B。
进一步,所述非易失性存储模块采用嵌入式多媒体控制器保存所述有用进程信息。
进一步,所述有用进程信息包括调用栈信息,所有通用寄存器信息和任务调度轨迹信息。
进一步,所述快速恢复模块重启恢复运行异常的linux系统,具体为:所述快速恢复模块选择所述linux系统存在的重启恢复类型,基于所述重启恢复类型,利用所述linux系统存在的底层重启接口重启恢复运行异常的linux系统。
本发明还提出了一种基于定时器监控linux系统的装置,包括:多个监控模块、多个信息记录模块、多个非易失性存储模块和多个快速恢复模块;
所述监控模块,用于通过linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,判断被监控的CPU是否出现挂死情况,若是,所述linux系统运行异常,启动与当前用于监控的CPU连接的信息记录模块;否则,继续监控其他CPU的运行状态;
所述信息记录模块,用于将被监控的CPU上出现挂死情况前的有用进程信息,全部记录至与所述信息记录模块连接的非易失性存储模块中;
所述非易失性存储模块,用于保存所述有用进程信息,待所述有用进程信息保存结束后,启动与所述非易失性存储模块连接的快速恢复模块;
所述快速恢复模块,用于重启恢复运行异常的linux系统。
本发明还提出了一种计算机设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行所述的基于定时器监控linux系统的方法的操作。
本发明还提出了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令在计算机设备上运行时,使得计算机设备执行所述的基于定时器监控linux系统的方法的操作。
与现有技术相比,本发明技术方案的有益效果是:
本发明提出一种基于定时器监控linux系统的方法、装置及存储介质,首先通过linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,目的是使linux系统中的每一个CPU的高精度定时器通过软件方式实现的看门狗来实现CPU间互相监控,而不需要依赖与外部的硬件看门狗设备,同时保障了linux系统内核线程能得到监控,有效防止了linux系统运行异常时系统由中断执行变成了由线程执行,然后判断被监控的CPU是否出现挂死情况,如果被监控的CPU出现挂死情况,则说明linux系统运行异常,此时迅速启动与当前用于监控的CPU连接的信息记录模块,信息记录模块将被监控的CPU上出现挂死情况前的有用进程信息记录,再保存至非易失性存储模块中,便于研发人员后期对被监控的CPU出现挂死情况进行异常原因分析,最后利用快速恢复模块重启恢复运行异常的linux系统,使得运行异常的linux系统中运行的低优先级的应用层任务也能得到及时恢复,本发明能够使linux系统运行时能准时的调度执行低优先级的应用层任务,实现了linux系统内核线程的监控。
附图说明
图1表示本发明实施例中提出的一种基于定时器监控linux系统的方法的流程示意图;
图2表示本发明实施例中提出的一种基于定时器监控linux系统的装置的结构示意图;
图3表示本发明实施例中提出的一种计算机设备的结构示意图;
201.监控模块;202.信息记录模块;203.非易失性存储模块;204.快速恢复模块;301.处理器;302存储器;303.通信接口;304.通信总线;305.可执行指令。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好地说明本实施例,附图某些部位会有省略、放大或缩小,并不代表实际尺寸,“上”“下”等部位方向的描述非对本专利的限制;
对于本领域技术人员来说,附图中某些公知内容说明可能省略是可以理解的;
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
下面结合附图和实施例对本发明的技术方案做进一步的说明。
如图1所示,一种基于定时器监控linux系统的方法,包括以下步骤:
S1.linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,判断被监控的CPU是否出现挂死情况,若是,所述linux系统运行异常,启动与当前用于监控的CPU连接的信息记录模块;否则,继续监控其他CPU的运行状态;
在步骤S1中,所述linux系统中的每一个CPU注册一个高精度定时器,具体为:所述linux系统中的每一个CPU通过利用初始化函数hrtimer_init()和开启函数hrtimer_start()注册一个函数参数指定参数HRTIMER_MODE_REL_PINNED_HARD的高精度定时器;所述挂死情况包括进程无法调度情况和中断无法响应情况;所述判断被监控的CPU是否出现挂死情况,具体判断过程为:
S11.首先利用每一个CPU的高精度定时器的回调函数,在每一个CPU中分别定义第一系统变量A和第二系统变量B,当每一个CPU的高精度定时器定时到期后,让每一个CPU上的第一系统变量A增加1;
S12.然后在被监控的CPU上获取变化后的第一系统变量A,将被监控的CPU上变化后的第一系统变量A与上一个用于监控的CPU的第二系统变量B比较,若二者比较结果相等,则被监控的CPU上出现进程无法调度和中断无法响应的挂死情况,启动与当前用于监控的CPU连接的信息记录模块;否则,被监控的CPU的运行状态正常,将被监控的CPU上变化后的第一系统变量A赋值给上一个用于监控的CPU的第二系统变量B。
S2.所述信息记录模块将被监控的CPU出现挂死情况前的有用进程信息,全部记录至与所述信息记录模块连接的非易失性存储模块中;
在步骤S2中,信息记录模块通过linux系统中自带的一些命令接口,再通过进一步扩展功能,当用于监控的CPU检测到到被监控的CPU出现无法调度和中断无法响应的挂死情况时,用于监控的CPU上的信息记录模块就会把被监控的CPU出现挂死情况前的调用栈信息,所有通用寄存器信息和任务调度轨迹信息等有用进程信息全部记录至与所述信息记录模块连接的非易失性存储模块中。
S3.所述非易失性存储模块保存所述有用进程信息,待所述有用进程信息保存结束后,启动与所述非易失性存储模块连接的快速恢复模块;
在步骤S3中,如果linux系统运行过程掉电了,非易失性存储模块能够保证linux系统中的每一个里面保存的信息也不会丢失,这里采用嵌入式多媒体控制器保存所述有用进程信息,嵌入式多媒体控制器专门划分出了一块用来存储log的可读写的独立分区用于保存所述有用进程信息,用于监控的CPU在linux系统运行过程掉电时信息记录模块会将被监控的CPU上的有用进程信息记录起来,然后存放到非易失性存储模块中的嵌入式多媒体控制器中,嵌入式多媒体控制器是指由闪存和集成在同一硅片上的闪存控制器组成的封装,具有具有体积小,功耗低,容量大等优点,适合用作电子设备的存储介质。
S4.所述快速恢复模块重启恢复运行异常的linux系统。
在步骤S4中,所述快速恢复模块重启恢复运行异常的linux系统,具体为:所述快速恢复模块选择所述linux系统存在的重启恢复类型,基于所述重启恢复类型,利用所述linux系统存在的底层重启接口重启恢复运行异常的linux系统,所述重启恢复类型包括linux系统原本存在的主动重启、panic、ops等重启类型,还包括经过扩展的system_hal重启类型,而不同的启恢复类型,在重启过程中执行的流程有所不同,扩展出来的system_hal类型就是linux系统在执行过程中不输出串口日志,同时也不缓存日志,这样会加快运行异常linux系统的恢复启动。
在本实施例中,首先通过linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,目的是使linux系统中的每一个CPU的高精度定时器通过软件方式实现的看门狗来实现CPU间互相监控,而不需要依赖与外部的硬件看门狗设备,同时保障了linux系统内核线程能得到监控,有效防止了linux系统运行异常时系统由中断执行变成了由线程执行,然后判断被监控的CPU是否出现挂死情况,如果被监控的CPU出现挂死情况,则说明linux系统运行异常,此时迅速启动与当前用于监控的CPU连接的信息记录模块,信息记录模块将被监控的CPU上出现挂死情况前的有用进程信息记录,再保存至非易失性存储模块中,便于研发人员后期对被监控的CPU出现挂死情况进行异常原因分析,最后利用快速恢复模块重启恢复运行异常的linux系统,使得运行异常的linux系统中运行的低优先级的应用层任务也能得到及时恢复,本发明能够使linux系统运行时能准时的调度执行低优先级的应用层任务,实现了linux系统内核线程的监控。
本实施例还提出了一种基于定时器监控linux系统的装置,参见图2,在linux系统中,多个CPU通过环形总线连接,具体为:第1个CPU1通过环形总线连接第2个CPU2,第2个CPU2通过环形总线连接连接第3个CPU3,依次类推,第n个CPUn通过环形总线连接回第1个CPU4,实现linux系统中的多个CPU的回环连接,其中n表示linux系统中的CPU的总数量,本实施例提出的一种基于定时器监控linux系统的装置包括:多个监控模块201、多个信息记录模块202、多个非易失性存储模块203和多个快速恢复模块204;
所述监控模块,用于通过linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,如,第1个CPU1监控第2个CPU2,第2个CPU2监控第3个CPU3,以此类推,第n个CPUn监控回第1个CPU1,使得整个linux系统中的所有CPU实现了回环式的监控;判断被监控的CPU是否出现挂死情况,若是,所述linux系统运行异常,启动与当前用于监控的CPU连接的信息记录模块202;否则,继续监控其他CPU的运行状态;
在监控模块201中,所述linux系统中的每一个CPU注册一个高精度定时器,具体为:所述linux系统中的每一个CPU通过利用初始化函数hrtimer_init()和开启函数hrtimer_start()注册一个函数参数指定参数HRTIMER_MODE_REL_PINNED_HARD的高精度定时器;所述挂死情况包括进程无法调度情况和中断无法响应情况;所述判断被监控的CPU是否出现挂死情况,具体判断过程为:
首先利用每一个CPU的高精度定时器的回调函数,在每一个CPU中分别定义第一系统变量A和第二系统变量B,当每一个CPU的高精度定时器定时到期后,让每一个CPU上的第一系统变量A增加1;
然后在被监控的CPU上获取变化后的第一系统变量A,将被监控的CPU上变化后的第一系统变量A与上一个用于监控的CPU的第二系统变量B比较,若二者比较结果相等,则被监控的CPU上出现进程无法调度和中断无法响应的挂死情况,启动与当前用于监控的CPU连接的信息记录模块202;否则,被监控的CPU的运行状态正常,将被监控的CPU上变化后的第一系统变量A赋值给上一个用于监控的CPU的第二系统变量B;比如检测到了第2个CPU2上的第二系统变量B与被监控的第3个CPU3上变化后的变量A相等,则说明第3个CPU3上出现进程无法调度和中断无法响应的挂死情况,此时第3个CPU3已经失去了继续运行应用层task的能力,这时候就需要与第2个CPU2上的信息记录模块202开始工作。
所述信息记录模块202,用于将被监控的CPU上出现挂死情况前的有用进程信息,全部记录至与所述信息记录模块202连接的非易失性存储模块203中;
在信息记录模块202中,信息记录模块202通过linux系统中自带的一些命令接口,再通过进一步扩展功能,当用于监控的CPU检测到到被监控的CPU出现无法调度和中断无法响应的挂死情况时,用于监控的CPU上的信息记录模块就会把被监控的CPU出现挂死情况前的调用栈信息,所有通用寄存器信息和任务调度轨迹信息等有用进程信息全部记录至与所述信息记录模块202连接的非易失性存储模块203中;比如当第2个CPU2监控到第3个CPU3上出现进程无法调度和中断无法响应的挂死情况,与第2个CPU2连接的信息记录模块202就会把CPU3上出问题前的调用栈信息,所有通用寄存器信息、之前运行的task调度轨迹信息等都记录下来且把这些信息记录到与第2个CPU2的信息记录模块202连接的非易失性存储模块203中。
所述非易失性存储模块203,用于保存所述有用进程信息,待所述有用进程信息保存结束后,启动与所述非易失性存储模块203连接的快速恢复模块204;
在非易失性存储模块203中,如果linux系统运行过程掉电了,非易失性存储模块203能够保证linux系统中的每一个里面保存的信息也不会丢失,这里采用嵌入式多媒体控制器保存所述有用进程信息,嵌入式多媒体控制器专门划分出了一块用来存储log的可读写的独立分区用于保存所述有用进程信息,比如第2个CPU2就会被监控的第3个CPU3上出现挂死情况前的有用进程信息通过与第2个CPU2连接的信息记录模块202收集起来,然后存放到与第2个CPU2的信息记录模块202连接的非易失性存储模块203中,待非易失性存储模块203把进程信息全部保存完成后,则与第2个CPU2的信息记录模块202连接的快速恢复模块204立刻重启恢复整个linux系统,让linux系统重新运行起来。
所述快速恢复模块204,用于重启恢复运行异常的linux系统。
在快速恢复模块204中,所述快速恢复模块204重启恢复运行异常的linux系统,具体为:所述快速恢复模块204选择所述linux系统存在的重启恢复类型,基于所述重启恢复类型,利用所述linux系统存在的底层重启接口重启恢复运行异常的linux系统,所述重启恢复类型包括linux系统原本存在的主动重启、panic、ops等重启类型,还包括经过扩展的system_hal重启类型,而不同的启恢复类型,在重启过程中执行的流程有所不同,扩展出来的system_hal类型就是linux系统在执行过程中不输出串口日志,同时也不缓存日志,这样会加快运行异常linux系统的恢复启动。
在本实施例中,首先利用环形总线将linux系统中的多个CPU连接,首先通过linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,目的是使linux系统中的每一个CPU的高精度定时器通过软件方式实现的看门狗来实现CPU间互相监控,而不需要依赖与外部的硬件看门狗设备,同时保障了linux系统内核线程能得到监控,有效防止了linux系统运行异常时系统由中断执行变成了由线程执行,然后判断被监控的CPU是否出现挂死情况,如果被监控的CPU出现挂死情况,则说明linux系统运行异常,此时迅速启动与当前用于监控的CPU连接的信息记录模块,信息记录模块将被监控的CPU上出现挂死情况前的有用进程信息记录,再保存至非易失性存储模块中,便于研发人员后期对被监控的CPU出现挂死情况进行异常原因分析,最后利用快速恢复模块重启恢复运行异常的linux系统,使得运行异常的linux系统中运行的低优先级的应用层任务也能得到及时恢复,本发明能够使linux系统运行时能准时的调度执行低优先级的应用层任务,实现了linux系统内核线程的监控。
本实施例还提出了一种计算机设备,参见图3,包括:处理器301、存储器302、通信接口303和通信总线304,所述处理器301、所述存储器302和所述通信接口303通过所述通信总线304完成相互间的通信;
其中:处理器301、存储器302以及通信接口303通过通信总线304完成相互间的通信。通信接口303,用于与其它设备比如客户端或其它服务器等的网元通信。处理器301,用于执行可执行指令305,具体可以执行上述基于定时器监控linux系统的方法实施例中的相关步骤。
具体地,可执行指令305可以包括程序代码。处理器301可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算机设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器302,用于存放可执行指令305。存储器302可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
可执行指令305具体可以被处理器301调用使计算机设备执行以下操作:
S1.linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,判断被监控的CPU是否出现挂死情况,若是,所述linux系统运行异常,启动与当前用于监控的CPU连接的信息记录模块;否则,继续监控其他CPU的运行状态;
在步骤S1中,所述linux系统中的每一个CPU注册一个高精度定时器,具体为:所述linux系统中的每一个CPU通过利用初始化函数hrtimer_init()和开启函数hrtimer_start()注册一个函数参数指定参数HRTIMER_MODE_REL_PINNED_HARD的高精度定时器;所述挂死情况包括进程无法调度情况和中断无法响应情况;所述判断被监控的CPU是否出现挂死情况,具体判断过程为:
S11.首先利用每一个CPU的高精度定时器的回调函数,在每一个CPU中分别定义第一系统变量A和第二系统变量B,当每一个CPU的高精度定时器定时到期后,让每一个CPU上的第一系统变量A增加1;
S12.然后在被监控的CPU上获取变化后的第一系统变量A,将被监控的CPU上变化后的第一系统变量A与上一个用于监控的CPU的第二系统变量B比较,若二者比较结果相等,则被监控的CPU上出现进程无法调度和中断无法响应的挂死情况,启动与当前用于监控的CPU连接的信息记录模块;否则,被监控的CPU的运行状态正常,将被监控的CPU上变化后的第一系统变量A赋值给上一个用于监控的CPU的第二系统变量B。
S2.所述信息记录模块将被监控的CPU出现挂死情况前的有用进程信息,全部记录至与所述信息记录模块连接的非易失性存储模块中;
在步骤S2中,信息记录模块通过linux系统中自带的一些命令接口,再通过进一步扩展功能,当用于监控的CPU检测到到被监控的CPU出现无法调度和中断无法响应的挂死情况时,用于监控的CPU上的信息记录模块就会把被监控的CPU出现挂死情况前的调用栈信息,所有通用寄存器信息和任务调度轨迹信息等有用进程信息全部记录至与所述信息记录模块连接的非易失性存储模块中。
S3.所述非易失性存储模块保存所述有用进程信息,待所述有用进程信息保存结束后,启动与所述非易失性存储模块连接的快速恢复模块;
在步骤S3中,如果linux系统运行过程掉电了,非易失性存储模块能够保证linux系统中的每一个里面保存的信息也不会丢失,这里采用嵌入式多媒体控制器保存所述有用进程信息,嵌入式多媒体控制器专门划分出了一块用来存储log的可读写的独立分区用于保存所述有用进程信息,用于监控的CPU在linux系统运行过程掉电时信息记录模块会将被监控的CPU上的有用进程信息记录起来,然后存放到非易失性存储模块中的嵌入式多媒体控制器中,嵌入式多媒体控制器是指由闪存和集成在同一硅片上的闪存控制器组成的封装,具有具有体积小,功耗低,容量大等优点,适合用作电子设备的存储介质。
S4.所述快速恢复模块重启恢复运行异常的linux系统。
在步骤S4中,所述快速恢复模块重启恢复运行异常的linux系统,具体为:所述快速恢复模块选择所述linux系统存在的重启恢复类型,基于所述重启恢复类型,利用所述linux系统存在的底层重启接口重启恢复运行异常的linux系统,所述重启恢复类型包括linux系统原本存在的主动重启、panic、ops等重启类型,还包括经过扩展的system_hal重启类型,而不同的启恢复类型,在重启过程中执行的流程有所不同,扩展出来的system_hal类型就是linux系统在执行过程中不输出串口日志,同时也不缓存日志,这样会加快运行异常linux系统的恢复启动。
在本实施例中,首先通过linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,目的是使linux系统中的每一个CPU的高精度定时器通过软件方式实现的看门狗来实现CPU间互相监控,而不需要依赖与外部的硬件看门狗设备,同时保障了linux系统内核线程能得到监控,有效防止了linux系统运行异常时系统由中断执行变成了由线程执行,然后判断被监控的CPU是否出现挂死情况,如果被监控的CPU出现挂死情况,则说明linux系统运行异常,此时迅速启动与当前用于监控的CPU连接的信息记录模块,信息记录模块将被监控的CPU上出现挂死情况前的有用进程信息记录,再保存至非易失性存储模块中,便于研发人员后期对被监控的CPU出现挂死情况进行异常原因分析,最后利用快速恢复模块重启恢复运行异常的linux系统,使得运行异常的linux系统中运行的低优先级的应用层任务也能得到及时恢复,本发明能够使linux系统运行时能准时的调度执行低优先级的应用层任务,实现了linux系统内核线程的监控。
本实施例还提出了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令在计算机设备上运行时,使得计算机设备执行所述的基于定时器监控linux系统的方法的操作,具体包括以下步骤:
S1.linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,判断被监控的CPU是否出现挂死情况,若是,所述linux系统运行异常,启动与当前用于监控的CPU连接的信息记录模块;否则,继续监控其他CPU的运行状态;
在步骤S1中,所述linux系统中的每一个CPU注册一个高精度定时器,具体为:所述linux系统中的每一个CPU通过利用初始化函数hrtimer_init()和开启函数hrtimer_start()注册一个函数参数指定参数HRTIMER_MODE_REL_PINNED_HARD的高精度定时器;所述挂死情况包括进程无法调度情况和中断无法响应情况;所述判断被监控的CPU是否出现挂死情况,具体判断过程为:
S11.首先利用每一个CPU的高精度定时器的回调函数,在每一个CPU中分别定义第一系统变量A和第二系统变量B,当每一个CPU的高精度定时器定时到期后,让每一个CPU上的第一系统变量A增加1;
S12.然后在被监控的CPU上获取变化后的第一系统变量A,将被监控的CPU上变化后的第一系统变量A与上一个用于监控的CPU的第二系统变量B比较,若二者比较结果相等,则被监控的CPU上出现进程无法调度和中断无法响应的挂死情况,启动与当前用于监控的CPU连接的信息记录模块;否则,被监控的CPU的运行状态正常,将被监控的CPU上变化后的第一系统变量A赋值给上一个用于监控的CPU的第二系统变量B。
S2.所述信息记录模块将被监控的CPU出现挂死情况前的有用进程信息,全部记录至与所述信息记录模块连接的非易失性存储模块中;
在步骤S2中,信息记录模块通过linux系统中自带的一些命令接口,再通过进一步扩展功能,当用于监控的CPU检测到到被监控的CPU出现无法调度和中断无法响应的挂死情况时,用于监控的CPU上的信息记录模块就会把被监控的CPU出现挂死情况前的调用栈信息,所有通用寄存器信息和任务调度轨迹信息等有用进程信息全部记录至与所述信息记录模块连接的非易失性存储模块中。
S3.所述非易失性存储模块保存所述有用进程信息,待所述有用进程信息保存结束后,启动与所述非易失性存储模块连接的快速恢复模块;
在步骤S3中,如果linux系统运行过程掉电了,非易失性存储模块能够保证linux系统中的每一个里面保存的信息也不会丢失,这里采用嵌入式多媒体控制器保存所述有用进程信息,嵌入式多媒体控制器专门划分出了一块用来存储log的可读写的独立分区用于保存所述有用进程信息,用于监控的CPU在linux系统运行过程掉电时信息记录模块会将被监控的CPU上的有用进程信息记录起来,然后存放到非易失性存储模块中的嵌入式多媒体控制器中,嵌入式多媒体控制器是指由闪存和集成在同一硅片上的闪存控制器组成的封装,具有具有体积小,功耗低,容量大等优点,适合用作电子设备的存储介质。
S4.所述快速恢复模块重启恢复运行异常的linux系统。
在步骤S4中,所述快速恢复模块重启恢复运行异常的linux系统,具体为:所述快速恢复模块选择所述linux系统存在的重启恢复类型,基于所述重启恢复类型,利用所述linux系统存在的底层重启接口重启恢复运行异常的linux系统,所述重启恢复类型包括linux系统原本存在的主动重启、panic、ops等重启类型,还包括经过扩展的system_hal重启类型,而不同的启恢复类型,在重启过程中执行的流程有所不同,扩展出来的system_hal类型就是linux系统在执行过程中不输出串口日志,同时也不缓存日志,这样会加快运行异常linux系统的恢复启动。
在本实施例中,首先通过linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,目的是使linux系统中的每一个CPU的高精度定时器通过软件方式实现的看门狗来实现CPU间互相监控,而不需要依赖与外部的硬件看门狗设备,同时保障了linux系统内核线程能得到监控,有效防止了linux系统运行异常时系统由中断执行变成了由线程执行,然后判断被监控的CPU是否出现挂死情况,如果被监控的CPU出现挂死情况,则说明linux系统运行异常,此时迅速启动与当前用于监控的CPU连接的信息记录模块,信息记录模块将被监控的CPU上出现挂死情况前的有用进程信息记录,再保存至非易失性存储模块中,便于研发人员后期对被监控的CPU出现挂死情况进行异常原因分析,最后利用快速恢复模块重启恢复运行异常的linux系统,使得运行异常的linux系统中运行的低优先级的应用层任务也能得到及时恢复,本发明能够使linux系统运行时能准时的调度执行低优先级的应用层任务,实现了linux系统内核线程的监控。
显然,本发明的上述实施例仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。
Claims (10)
1.一种基于定时器监控linux系统的方法,其特征在于,包括以下步骤:
linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,判断被监控的CPU是否出现挂死情况,若是,所述linux系统运行异常,启动与当前用于监控的CPU连接的信息记录模块;否则,继续监控其他CPU的运行状态;
所述信息记录模块将被监控的CPU出现挂死情况前的有用进程信息,全部记录至与所述信息记录模块连接的非易失性存储模块中;
所述非易失性存储模块保存所述有用进程信息,待所述有用进程信息保存结束后,启动与所述非易失性存储模块连接的快速恢复模块;
所述快速恢复模块重启恢复运行异常的linux系统。
2.根据权利要求1所述的基于定时器监控linux系统的方法,其特征在于,所述linux系统中的每一个CPU注册一个高精度定时器,具体为:所述linux系统中的每一个CPU通过利用初始化函数hrtimer_init()和开启函数hrtimer_start()注册一个函数参数指定参数HRTIMER_MODE_REL_PINNED_HARD的高精度定时器。
3.根据权利要求1所述的基于定时器监控linux系统的方法,其特征在于,所述挂死情况包括进程无法调度情况和中断无法响应情况。
4.根据权利要求3所述的基于定时器监控linux系统的方法,其特征在于,所述判断被监控的CPU是否出现挂死情况,具体判断过程为:
首先利用每一个CPU的高精度定时器的回调函数,在每一个CPU中分别定义第一系统变量A和第二系统变量B,当每一个CPU的高精度定时器定时到期后,让每一个CPU上的第一系统变量A增加1;
然后在被监控的CPU上获取变化后的第一系统变量A,将被监控的CPU上变化后的第一系统变量A与上一个用于监控的CPU的第二系统变量B比较,若二者比较结果相等,则被监控的CPU上出现进程无法调度和中断无法响应的挂死情况,启动与当前用于监控的CPU连接的信息记录模块;否则,被监控的CPU的运行状态正常,将被监控的CPU上变化后的第一系统变量A赋值给上一个用于监控的CPU的第二系统变量B。
5.根据权利要求1所述的基于定时器监控linux系统的方法,其特征在于,所述非易失性存储模块采用嵌入式多媒体控制器保存所述有用进程信息。
6.根据权利要求1所述的基于定时器监控linux系统的方法,其特征在于,所述有用进程信息包括调用栈信息,所有通用寄存器信息和任务调度轨迹信息。
7.根据权利要求1所述的基于定时器监控linux系统的方法,其特征在于,所述快速恢复模块重启恢复运行异常的linux系统,具体为:所述快速恢复模块选择所述linux系统存在的重启恢复类型,基于所述重启恢复类型,利用所述linux系统存在的底层重启接口重启恢复运行异常的linux系统。
8.一种基于定时器监控linux系统的装置,其特征在于,包括:多个监控模块、多个信息记录模块、多个非易失性存储模块和多个快速恢复模块;
所述监控模块,用于通过linux系统中的每一个CPU的高精度定时器监控相邻的CPU的运行状态,判断被监控的CPU是否出现挂死情况,若是,所述linux系统运行异常,启动与当前用于监控的CPU连接的信息记录模块;否则,继续监控其他CPU的运行状态;
所述信息记录模块,用于将被监控的CPU上出现挂死情况前的有用进程信息,全部记录至与所述信息记录模块连接的非易失性存储模块中;
所述非易失性存储模块,用于保存所述有用进程信息,待所述有用进程信息保存结束后,启动与所述非易失性存储模块连接的快速恢复模块;
所述快速恢复模块,用于重启恢复运行异常的linux系统。
9.一种计算机设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7任意一项所述的基于定时器监控linux系统的方法的操作。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一可执行指令,所述可执行指令在计算机设备上运行时,使得计算机设备执行如权利要求1-7任意一项所述的基于定时器监控linux系统的方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310646023.9A CN116662117A (zh) | 2023-06-01 | 2023-06-01 | 基于定时器监控linux系统的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310646023.9A CN116662117A (zh) | 2023-06-01 | 2023-06-01 | 基于定时器监控linux系统的方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116662117A true CN116662117A (zh) | 2023-08-29 |
Family
ID=87713291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310646023.9A Pending CN116662117A (zh) | 2023-06-01 | 2023-06-01 | 基于定时器监控linux系统的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116662117A (zh) |
-
2023
- 2023-06-01 CN CN202310646023.9A patent/CN116662117A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101236515B (zh) | 多核系统单核异常的恢复方法 | |
US20170147422A1 (en) | External software fault detection system for distributed multi-cpu architecture | |
US7305578B2 (en) | Failover method in a clustered computer system | |
JPH0820965B2 (ja) | プログラムの実行を続行する方法 | |
JP2001101033A (ja) | オペレーティングシステム及びアプリケーションプログラムの障害監視方法 | |
JPH09258995A (ja) | 計算機システム | |
CN105550057B (zh) | 嵌入式软件系统故障检测恢复方法和系统 | |
EP3025233B1 (en) | Robust hardware/software error recovery system | |
CN115237644B (zh) | 系统故障处理方法、中央运算单元以及车辆 | |
CN113535448B (zh) | 一种多重看门狗控制方法及其控制系统 | |
JPH10214208A (ja) | ソフトウェアの異常監視方式 | |
CN115904793B (zh) | 一种基于多核异构系统的内存转存方法、系统及芯片 | |
CN113672421A (zh) | 一种嵌入式系统全程喂狗策略及实现方法 | |
CN116662117A (zh) | 基于定时器监控linux系统的方法、装置及存储介质 | |
JP2004302731A (ja) | 情報処理装置および障害診断方法 | |
JPH02294739A (ja) | 障害検出方式 | |
JP2965075B2 (ja) | プログラム実行状態監視方法 | |
KR101300806B1 (ko) | 다중 프로세스 시스템에서 오동작 처리 장치 및 방법 | |
CN111143127B (zh) | 监管网络设备的方法、装置、存储介质及设备 | |
JP2002149437A (ja) | ソフトウェア再起動方法 | |
JP7000797B2 (ja) | 起動管理装置、起動管理システム、起動管理方法、および、起動管理プログラム | |
CN109062718B (zh) | 一种服务器及数据处理方法 | |
JP2785992B2 (ja) | サーバプログラムの管理処理方式 | |
JPH10116261A (ja) | 並列計算機システムのチェックポイントリスタート方法 | |
CN117234787B (zh) | 系统级芯片运行状态监控方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |