车载系统故障检测方法、装置、设备及可读存储介质制造方法及图纸

技术编号:35223265 阅读:14 留言:0更新日期:2022-10-15 10:41
本申请提供了一种车载系统故障检测方法、装置、设备及可读存储介质,可加载车载系统的内核模块;并在所述内核模块中为每个CPU创建对应的内存环形缓冲区,同时还可在进程发生切换和唤醒的函数点插入自定义的第一处理函数;当进程发生切换和唤醒时,可以调用第一处理函数,并将调用第一处理函数及调用进程的调度记录写入进程对应的CPU对应的内存环形缓冲区里,以便可记录进程的调用记录。当车载系统发生故障或告警时,可以通知内核模块将各个CPU的内存环形缓冲区里的调度记录写入磁盘。以供检测所述车载系统的故障用。以便可以帮助维护人员及时排除故障,以确保车载系统可以正常运行。行。行。

【技术实现步骤摘要】
车载系统故障检测方法、装置、设备及可读存储介质


[0001]本申请涉及进程故障分析
,尤其涉及一种车载系统故障检测方法、装置、设备及可读存储介质。

技术介绍

[0002]随着科学技术的发展,车辆的车载系统的性能也有了较大的发展。在实际应用过程中,由于资源有限,车载系统有可能会发生一些故障,例如,车载系统的一些进程可能会发生调度延迟的现象。进程调度延迟是指:一个进程从就绪可运行的状态转移到运行中状态所需的时间。当车载系统的进程遭遇较大的调度延迟时,可能会对车载系统产生很大的影响:譬如无法及时收到传感器的数据,无法及时处理收到的数据等。
[0003]造成车载系统的进程调度延迟的原因很多:譬如CPU处理不过来,或者某个进程在运行过程中把硬件中断关闭导致CPU无法及时地进行进程调度,或者CPU在短暂的时间内被优先级高的进程一直占据等。此外,进程调度延迟的问题还具有持续时间非常短暂,出现概率低的特点,通常调度延迟会出现约10ms到200ms便会消失,而且很难预估什么时候会出现调度延迟。为了确保车载系统可以稳定运行,需要分析造成调度延迟的具体原因,以便可以及时排除故障。

技术实现思路

[0004]本申请旨在至少能解决上述的技术缺陷之一,有鉴于此,本申请提供了一种车载系统故障检测方法、装置、设备及可读存储介质,用于解决现有技术中车载系统故障检测困难的技术缺陷。
[0005]一种车载系统故障检测方法,包括:
[0006]加载车载系统的内核模块;
[0007]在所述内核模块中为每个CPU创建对应的内存环形缓冲区,其中,所述内存环形缓冲区用于循环存放对应CPU的调度记录;
[0008]在第一目标进程发生切换和唤醒的函数点,插入自定义的第一处理函数;
[0009]当所述第一目标进程发生切换和唤醒时,调用所述第一处理函数,并将调用所述第一处理函数及调用所述第一目标进程的调度记录写入与所述第一目标进程对应的CPU对应的内存环形缓冲区里;
[0010]当车载系统发生故障或告警,通知所述内核模块将各个CPU的内存环形缓冲区里的调度记录写入磁盘,以供检测所述车载系统的故障。
[0011]优选地,该方法还包括:
[0012]基于所述第一目标进程的调度记录,计算所述第一目标进程的每次调度延迟的时长。
[0013]优选地,该方法还包括:
[0014]判断所述第一目标进程的调度延迟时长是否超出预设第一阈值;
[0015]若所述第一目标进程的调度延迟时长超出预设第一阈值,则基于所述第一目标进程的调度延迟时长,确定所述第一目标进程发生调度延迟的故障原因。
[0016]优选地,所述基于所述第一目标进程的调度记录,计算所述第一目标进程的每次调度延迟的时长,包括:
[0017]基于所述第一目标进程的调度记录,确定所述第一目标进程被调入被允许执行的CPU的时刻、最后一次被调离被允许执行的CPU处于就绪状态的时刻或所述第一目标进程最后一次被唤醒的时刻;
[0018]基于所述第一目标进程被调入被允许执行的CPU的时刻和最后一次被调离被允许执行的CPU处于就绪状态的时刻,计算所述第一目标进程的每次调度延迟的时长,其中,所述第一目标进程的每次调度延迟的时长等于所述第一目标进程被调入被允许执行的CPU的时刻与所述第一目标进程最后一次被调离被允许执行的CPU处于就绪状态的时刻之间的时间间隔;
[0019]或,
[0020]基于所述第一目标进程被调入被允许执行的CPU的时刻和所述第一目标进程最后一次被唤醒的时刻,计算所述第一目标进程的每次调度延迟的时长,其中,所述第一目标进程的每次调度延迟的时长等于所述第一目标进程被调入被允许执行的CPU的时刻与所述第一目标进程最后一次被唤醒的时刻之间的时间间隔。
[0021]优选地,该方法还包括:
[0022]实时监控每个进程的运行状态,确定每个进程的运行时长,其中,每个进程的运行时长等于每个进程被调入CPU进行执行的时刻与每个进程被调离CPU的时刻之间的时间间隔;
[0023]判断是否存在运行时长超过预设第二阈值的进程;
[0024]若存在运行时长超过所述预设的第二阈值的进程,则确定运行时长超过所述预设第二阈值的进程为第二目标进程;
[0025]在系统的日志里记录所述第二目标进程在内核态的调用栈,以便利用所述第二目标进程所在的调用栈来分析所述第二目标进程运行过久的原因。
[0026]优选地,所述判断每个进程的运行时长是否超过预设第二阈值,包括:
[0027]修改系统的内核模块里的每个进程的数据结构,并在各个进程的数据结构中增加一个目标字段,其中,所述进程的数据结构的目标字段用于存放进程状态发生转变的时间点;
[0028]加载系统的内核模块,同时启动一个内核定时器,并设置所述内核定时器在硬件终端的执行条件;
[0029]在每个进程发生切换的函数点插入所述第一处理函数,在所插入的所述第一处理函数里,当进程被调离CPU或调入CPU时,在进程的数据结构的目标字段里记录当时的时间点;
[0030]在所述内核定时器的处理函数里,根据进程的数据结构的目标字段的记录,判断当前的进程的运行时长是否超过预设第二阈值。
[0031]优选地,所述基于所述第一目标进程的调度延迟时长,确定所述第一目标进程发生调度延迟的故障原因,包括:
[0032]确定所述第一目标进程出现调度延迟所处的目标时间段;
[0033]确定在所述目标时间段内,系统的内核模块中被允许执行所述第一目标进程的目标CPU集合;
[0034]统计在所述目标时间段内,所述目标CPU集合中,各个进程使用各个CPU的时长;
[0035]基于预设第一条件,确定所述第一目标进程发生调度延迟的故障原因,其中,所述预设第一条件包括:
[0036]所述目标CPU集合中的各个进程的优先级;
[0037]或,
[0038]所述目标CPU集合中的各个进程的优先级和各个CPU被使用的时长;
[0039]或,
[0040]所述目标CPU集合中的各个进程的优先级、各个CPU被使用的时长、所述目标CPU集合中的各个CPU的使用率和所述目标CPU集合中的各个进程的运行时长。
[0041]优选地,所述基于所述目标CPU集合中的各个进程的优先级,确定所述第一目标进程发生调度延迟的故障原因,包括:
[0042]基于所述目标CPU集合中的各个进程的优先级,判断所述目标CPU集合中是否存在优先级比所述第一目标进程的优先级高的进程;
[0043]若所述目标CPU集合中存在优先级比所述第一目标进程的优先级高的进程,则确定所述第一目标进程发生调度延迟的故障原因为所述目标CPU集合中的各个进程的优先级设置不合理。
[0044]优选地,所述基于所述目标CPU集合中的各个进程的优先级和各个CPU被使用的时长,确定所述第一目标进程发生调度延迟的故障原本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种车载系统故障检测方法,其特征在于,包括:加载车载系统的内核模块;在所述内核模块中为每个CPU创建对应的内存环形缓冲区,其中,所述内存环形缓冲区用于循环存放对应CPU的调度记录;在第一目标进程发生切换和唤醒的函数点,插入自定义的第一处理函数;当所述第一目标进程发生切换和唤醒时,调用所述第一处理函数,并将调用所述第一处理函数及调用所述第一目标进程的调度记录写入与所述第一目标进程对应的CPU对应的内存环形缓冲区里;当车载系统发生故障或告警,通知所述内核模块将各个CPU的内存环形缓冲区里的调度记录写入磁盘,以供检测所述车载系统的故障。2.根据权利要求1所述的方法,其特征在于,该方法还包括:基于所述第一目标进程的调度记录,计算所述第一目标进程的每次调度延迟的时长。3.根据权利要求2所述的方法,其特征在于,该方法还包括:判断所述第一目标进程的调度延迟时长是否超出预设第一阈值;若所述第一目标进程的调度延迟时长超出预设第一阈值,则基于所述第一目标进程的调度延迟时长,确定所述第一目标进程发生调度延迟的故障原因。4.根据权利要求2所述的方法,其特征在于,所述基于所述第一目标进程的调度记录,计算所述第一目标进程的每次调度延迟的时长,包括:基于所述第一目标进程的调度记录,确定所述第一目标进程被调入被允许执行的CPU的时刻、最后一次被调离被允许执行的CPU处于就绪状态的时刻或所述第一目标进程最后一次被唤醒的时刻;基于所述第一目标进程被调入被允许执行的CPU的时刻和最后一次被调离被允许执行的CPU处于就绪状态的时刻,计算所述第一目标进程的每次调度延迟的时长,其中,所述第一目标进程的每次调度延迟的时长等于所述第一目标进程被调入被允许执行的CPU的时刻与所述第一目标进程最后一次被调离被允许执行的CPU处于就绪状态的时刻之间的时间间隔;或,基于所述第一目标进程被调入被允许执行的CPU的时刻和所述第一目标进程最后一次被唤醒的时刻,计算所述第一目标进程的每次调度延迟的时长,其中,所述第一目标进程的每次调度延迟的时长等于所述第一目标进程被调入被允许执行的CPU的时刻与所述第一目标进程最后一次被唤醒的时刻之间的时间间隔。5.根据权利要求1所述的方法,其特征在于,该方法还包括:实时监控每个进程的运行状态,确定每个进程的运行时长,其中,每个进程的运行时长等于每个进程被调入CPU进行执行的时刻与每个进程被调离CPU的时刻之间的时间间隔;判断是否存在运行时长超过预设第二阈值的进程;若存在运行时长超过所述预设的第二阈值的进程,则确定运行时长超过所述预设第二阈值的进程为第二目标进程;在系统的日志里记录所述第二目标进程在内核态的调用栈,以便利用所述第二目标进程所在的调用栈来分析所述第二目标进程运行过久的原因。
6.根据权利要求5所述的方法,其特征在于,所述判断每个进程的运行时长是否超过预设第二阈值,包括:修改系统的内核模块里的每个进程的数据结构,并在各个进程的数据结构中增加一个目标字段,其中,所述进程的数据结构的目标字段用于存放进程状态发生转变的时间点;加载系统的内核模块,同时启动一个内核定时器,并设置所述内核定时器在硬件终端的执行条件;在每个进程发生切换的函数点插入所述第一处理函数,在所插入的所述第一处理函数里,当进程被调离CPU或调入CPU时,在进程的数据结构的目标字段里记录当时的时间点;在所述内核定时器的处理函数里,根据进程的数据结构的目标字段的记录,判断当前的进程的运行时长是否超过预设第二阈值。7.根据权利要求3所述的方法,其特征在于,所述基于所述第一目标进程的调度延迟时长,确定所述第一目标进程发生调度延迟的故障原因,包括:确定所述第一目标进程出现调度延迟所处的目标时间段;确定在所述目标时间段内,系统的内核模块中被允许执行所述第一目标进程的目标CPU集合;统计在所述目标时间段内,所述目标CPU集合中,各个进程使用各个CPU的时长;基于预设第一条件,确定所述第一目标进程发生调度延迟的故障原因,其中,所述预设第一条件包括:所述目标CPU集合中的各个进程的优先级;或,所述目标CPU集合中的各个进程的优先级和各个CPU被使用的时长;或,所述目标CPU集合中的各个进程的优先级、各个CPU被使用的时长、所述目标CPU集合中的各个CPU的使用率和所述目标CPU集合中的各个进程的运行时长。8.根据权利要求7所述的方法,其特征在于,所述基于所述目标CPU集合中的各个进程的优先级,确定所述第一目标进程发生调度延迟的故障原因,包括:基于所述目标CPU集合中的各个进程的优先级,判断所述目标CPU集合中是否存在优先级比所述第一目标进程的优先级高的进程;若所述目标CPU集合中存在优先级比所述第一目标进程的优先级高的进程,则确定所述第一目标进程发生调度延迟的故障原因为所述目标CPU集合中的各个进程的优先级设置不合理。9.根据权利要求7所述的方法,其特征在于,所述基于所述目标CPU集合中的各个进程的优先级和各个CPU被使用的时长,确定所述第一目标进程发生调度延迟的故障原因,包括:基于所述目标CPU集合中的各个进程的优先级,判断所述目标CPU集合中是否存在优先级比所述第一目标进程的优先级高的进程;若所述目标CPU集合中不存在优先级比所述第一目标进程的优先级高的进程,则判断所述目标CPU集合中是否存在单个CPU被使用的时长超过预设第...

【专利技术属性】
技术研发人员:曹景华李云华
申请(专利权)人:广州文远知行科技有限公司
类型:发明
国别省市:

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

1