一种UE内存故障恢复方法、装置、电子设备及介质与流程

文档序号:32401058发布日期:2022-12-02 19:01阅读:269来源:国知局
一种UE内存故障恢复方法、装置、电子设备及介质与流程
一种ue内存故障恢复方法、装置、电子设备及介质
技术领域
1.本技术涉及计算机技术领域,特别是涉及一种ue内存故障恢复方法、装置、电子设备及介质。


背景技术:

2.在服务器系统中,当有进程访问内存时可能会触发内存故障,触发的内存故障的类型可能为可纠正错误(corrected error,ce)类的内存故障,也可能为不可纠正错误(uncorrected error,ue)类的内存故障。
3.对于ue内存故障常用的恢复方法是通过机器检查异常(machine check exception,mce)中断进行ue内存故障恢复。在多个进程访问同一个共享内存页的情况下,当其中一个进程在共享内存页触发ue故障时,具体的故障恢复方案是对该共享内存页进行隔离。由于该内存页是共享内存页,因此会存在其余进程访问到该内存页的情况。当其余进程访问到该内存页时,由于该共享内存页已经作了隔离处理,因此其余进程获取到被隔离的共享内存页,收到sigbus信号退出,从而不能正常启动或运行,最终导致系统内存故障长时间不能恢复,系统无法正常运行。
4.由此可见,如何增强ue内存故障恢复,是本领域技术人员亟待解决的问题。


技术实现要素:

5.本技术的目的是提供一种ue内存故障恢复方法、装置、电子设备及介质,用于增强ue内存故障恢复。
6.为解决上述技术问题,本技术提供一种ue内存故障恢复的方法,包括:
7.当触发ue内存故障时,获取所述ue内存故障的ue内存故障地址;
8.在所述ue内存故障地址所在页为共享内存页的情况下,查找访问所述共享内存页的进程;
9.结束访问所述共享内存页的进程;
10.隔离所述ue内存故障。
11.优选地,所述查找访问所述共享内存页的进程包括:
12.在所述ue故障地址所在页为vdso共享内存页,且所述ue内存故障为srar类型的情况下,或在所述ue故障地址所在页为cmdline共享内存页的情况下,查找访问对应的所述共享内存页的进程;
13.在所述ue故障地址所在页为vdso共享内存页,且所述ue内存故障为srao类型的情况下,当检测到有进程访问所述vdso共享内存页时查找访问所述vdso共享内存页的进程。
14.优选地,在所述ue内存故障为所述srao类型或所述srar类型的情况下,所述结束访问所述共享内存页的进程包括:
15.主动宕机结束访问所述共享内存页的所述进程。
16.优选地,在所述主动宕机结束访问所述共享内存页的所述进程之后,所述隔离所
述ue内存故障之前,还包括:
17.在操作系统dmesg日志上有表征跳过内存数据转储信息的情况下,跳过内存数据转储。
18.优选地,在所述跳过内存数据转储之后,所述隔离所述ue内存故障之前,还包括:
19.记录所述ue内存故障的相关寄存器信息和错误地址。
20.优选地,在所述ue故障地址所在页为cmdline共享内存页的情况下,所述结束访问所述共享内存页的进程包括:
21.在操作系统中添加强制srar标记;
22.通过所述强制srar标记结束与所述共享内存页建立映射关系的所有进程。
23.优选地,在所述获取所述ue内存故障的ue内存故障地址之前,还包括:
24.在所述操作系统中添加apei bypass处理。
25.为了解决上述技术问题,本技术还提供一种ue内存故障恢复的装置,包括:
26.获取模块,用于当触发ue内存故障时,获取所述ue内存故障的ue内存故障地址;
27.查找模块,用于在所述ue内存故障地址所在页为共享内存页的情况下,查找访问所述共享内存页的进程;
28.结束模块,用于结束访问所述共享内存页的进程;
29.隔离模块,用于隔离所述ue内存故障。
30.优选地,所述ue内存故障恢复的装置,还包括:
31.跳过模块,用于在操作系统dmesg日志上有表征跳过内存数据转储信息的情况下,跳过内存数据转储。
32.优选地,所述ue内存故障恢复的装置,还包括:
33.记录模块,用于记录所述ue内存故障的相关寄存器信息和错误地址。
34.优选地,所述ue内存故障恢复的装置,还包括:
35.添加模块,用于在所述操作系统中添加apei bypass处理。
36.为了解决上述技术问题,本技术还提供一种电子设备,包括:
37.存储器,用于存储计算机程序;
38.处理器,用于执行所述计算机程序时实现上述的ue内存故障恢复的方法的步骤。
39.为了解决上述技术问题,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的ue内存故障恢复的方法的步骤。
40.本技术所提供的ue内存故障恢复的方法,该方法中,当触发ue内存故障时,首先获取ue内存故障的ue内存故障地址,然后在ue内存故障地址所在页为共享内存页的情况下,查找访问共享内存页的进程,最后结束访问共享内存页的进程并隔离ue内存故障。由此可见,该方法中在ue故障地址所在页为共享内存页的情况下,对触发ue内存故障的进程进行结束并隔离,使得已经触发ue内存故障的进程不再触发ue内存故障,也就是共享内存页不会再被标记,从而使得其余进程在访问内存时能够获取到未被隔离的共享内存页,故而保证系统内存故障能够在较短的时间内恢复,确保系统正常运行。
41.此外,本技术还提供一种ue内存故障恢复的装置、电子设备及计算机存储介质,与上述提到的ue内存故障恢复的方法相对应,效果同上。
附图说明
42.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
43.图1为本技术提供的一种ue内存故障恢复方法的流程图;
44.图2为常见的ue内存故障恢复方法的流程图;
45.图3为ue内存故障触发apei导致宕机的流程图;
46.图4为添加了apei bypass处理的故障恢复方法的流程图;
47.图5为本技术的一实施例提供的ue内存故障恢复装置的结构图;
48.图6为本技术另一实施例提供的电子设备的结构图;
49.图7本技术实施例提供的在vdso场景下内存故障恢复增强的流程图。
具体实施方式
50.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本技术保护范围。
51.本技术的核心是提供一种ue内存故障恢复方法、装置、电子设备及介质,用于增强ue内存故障恢复。
52.为了便于理解,下面对本技术的技术方案所使用的硬件结构进行介绍。本技术提供的内存故障处理的硬件架构主要包括处理器、硬盘、寄存器等。当进程访问内存时,可能会触发ue内存故障,mce访问硬件寄存器时,其中一个寄存器就是包含内存错误地址的寄存器,通过解析ue错误地址,对访问该错误地址的进程进行处理以及根据在硬盘上的文件系统对内存故障进行固化隔离,使得系统能够在较短的时间内恢复内存故障。
53.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。图1为本技术提供的一种ue内存故障恢复方法的流程图。如图1所示,该方法包括:
54.s10:当触发ue内存故障时,获取ue内存故障的ue内存故障地址。
55.当应用访问内存时,通过纠错码(error correction code,ecc)检验判断是否在读取内存数据时出现错误,当出现ue内存故障时,为了防止ue内存故障对系统的影响,需要对ue内存故障进行恢复。
56.图2为常见的ue内存故障恢复方法的流程图。如图2所示,服务器系统分为硬件层1(平台层),固件层2、操作系统层3以及应用层4。当应用访问内存触发ue故障时,在固件优先模式下,硬件平台会发系统管理中断(system management interrupt,smi)给固件,固件向操作系统同时发出非屏蔽中断(non maskable interrupt,nmi)和mce中断。其中mce中断是恢复ue内存故障的主要流程,在操作系统初始化的时候mce中断和do_machine_check绑定,收到mce中断后,操作系统会调用do_machine_check进行ue内存故障隔离恢复。mce隔离流程主要分为三步:首先获取硬件平台寄存器信息,解析ue内存故障等级,然后查找使用ue故障内存页对应的进程,最后根据ue故障类型向对应的进程发送sigbus信号,结束对应进程
并在故障ue内存页标记hwpoison。mce对ue内存故障隔离恢复后,会记录错误信息到mcelog日志并更新错误检测与纠正(error detection and correction,edac)计数。对于nmi中断是由apei/ghes处理,处理过程中会先解析内存故障等级,包括ce内存故障以及ue内存故障,当ue内存故障会被划分为fatal类型硬件错误,如果是fatal类型硬件故障则会直接宕机。在多个进程访问同一个共享内存页的情况下,当其中一个进程在共享内存页触发ue故障时,具体的故障恢复方案是对该共享内存页进行隔离。由于该内存页是共享内存页,因此会存在其余进程访问到该内存页的情况。当其余进程访问到该内存页时,由于该共享内存页已经作了隔离处理,因此其余进程获取到被隔离的共享内存页,收到sigbus信号退出,从而不能正常启动或运行,最终导致系统内存故障长时间不能恢复,系统无法正常运行。故而,需要对ue内存故障恢复进行增强,使系统内存故障能够在较短的时间内进行恢复,从而能够正常运行。
57.为了增强ue内存故障恢复,首先需要在ue内存故障恢复路径上解析ue内存故障地址。在mce访问硬件寄存器时,其中一个寄存器就是包含内存错误地址的寄存器,因此从该寄存器中便可获取到ue内存故障地址。解析内存故障地址具体是在操作系统层的recovery中进行的。
58.s11:在ue内存故障地址所在页为共享内存页的情况下,查找访问共享内存页的进程。
59.在上述步骤s10中解析了ue内存故障地址,判断ue内存故障地址所在页是否为共享内存页。对于共享内存页分为内核提供的共享内存页以及普通的共享内存页,对于内核提供的共享内存页,如虚拟动态链接库(virtual dynamic shared object,vdso)共享内存页,由于是内核提供的内存页,因此每个进程启动时都需要访问该共享内存页;对于普通的共享内存页,如cmdline共享内存页,当多个进程同时访问该内存页时,该内存页就成为了共享内存页。对于vdso共享内存页可以是多个应用同时访问该内存页,也可以不是同时访问该内存页;对于普通共享内存页,当一个进程访问该内存页时存在其余进程也在访问该内存页。
60.ue内存故障地址所在页不在共享内存页时,当一个进程触发ue内存故障时,对故障地址进行隔离不会影响其余进程的正常运行,因此对于ue故障地址所在页不是共享内存页的情况下,采用现有的ue故障恢复方法即可;ue内存故障地址所在页在共享内存页时,当一个进程触发ue内存故障时,需要对该进程进行处理,防止其余进程出现不能正常运行的情况。因此可以先查找访问共享内存页的进程。
61.s12:结束访问共享内存页的进程。
62.在上述步骤中查找到了使用共享内存页的进程,由于这些进程是触发ue内存故障的原因,因此需要结束访问共享内存页的进程。结束访问内存共享页的进程根据故障的影响范围决定的,可以是通过宕机来结束共享内存页的进程,也可以是结束与共享内存页建立映射关系的进行等,此处不作限定,在实施中,根据具体的故障情况具体选择结束访问共享内存页的进程的方式。
63.s13:隔离ue内存故障。
64.由于mce对ue内存故障隔离恢复后,会记录错误信息到mcelog日志,因此根据日志对故障地址进行固化隔离,使得已经触发过ue内存故障的地址不再触发ue内存故障。在对
ue内存故障进行隔离之后,由于故障地址被隔离,因此不会再导致共享内存页被隔离,当其余进程访问共享内存页时,访问的便不是被标记的共享内存页,从而能够正常启动,系统能够正常运行。
65.本实施例所提供的ue内存故障恢复的方法,该方法中,当触发ue内存故障时,首先获取ue内存故障的ue内存故障地址,然后在ue内存故障地址所在页为共享内存页的情况下,查找访问共享内存页的进程,最后结束访问共享内存页的进程并隔离ue内存故障。由此可见,该方法中在ue故障地址所在页为共享内存页的情况下,对触发ue内存故障的进程进行结束并隔离,使得已经触发ue内存故障的进程不再触发ue内存故障,也就是共享内存页不会再被标记,从而使得其余进程在访问内存时能够获取到未被隔离的共享内存页,故而保证系统内存故障能够在较短的时间内恢复,确保系统正常运行。
66.上述实施例中在故障地址所在页是共享内存页的情况下,查找访问使用共享内存页的进程。由于不同内存故障的影响范围不同,因此对于不同场景的共享内存页,查找访问共享内存页的进程不同。在实施中,作为优选地方式,查找访问共享内存页的进程包括:
67.在ue故障地址所在页为vdso共享内存页,且ue内存故障为srar类型的情况下,或在ue故障地址所在页为cmdline共享内存页的情况下,查找访问对应的共享内存页的进程;
68.在ue故障地址所在页为vdso共享内存页,且ue内存故障为srao类型的情况下,当检测到有进程访问vdso共享内存页时查找访问vdso共享内存页的进程。
69.共享内存页包含不同场景下的共享内存页,常见场景下的共享内存页有vdso共享内存页以及cmdline共享内存页。根据场景的不同选择对应的故障恢复方式。
70.在vdso场景下,当vdso共享内存页触发ue内存故障时,常见的ue内存故障恢复逻辑会向所有访问到vdso页的进程发送sigbus信号,结束对应进程。vdso页面由于是所有应用层共享的基础内存,若经过memory_failure处理后打了hwpoison标记,后续新进程启动产生缺页获取到hwpoison页面,进而sigbus退出,这种情况下除了已经映射了该vdso页面的进程外,新起进程都无法正常运行,应用层无法进行更多的恢复处理,在vdso共享内存页存在ue内存故障状态下,系统无法拉起新进程,无法正常运行对于vdso共享内存页。因此当内存故障出现在vdso共享内存页的情况下,新进程无法启动,系统无法正常运行。为了使出现在vdso共享内存页的内存故障能够在较短时间内恢复,使得系统能够正常运行,需要对触发故障的进程进行处理。因此先查找访问vdso共享内存页的进程。需要说明的是,对于vdso共享内存页,ue内存故障的类型可能是软件可恢复操作可选(software recoverable action optional,srao)类型,也可能是需要软件可恢复操作(software recoverable action required,srar)类型,srao类型错误表明系统中的某些数据srao类型错误表明系统中的某些数据已损坏,但该数据未被使用,操作系统可以根据情况选择是否执行恢复动作,而对于srar类型错误表示系统中数据已损坏,且数据被使用,操作系统需要进行恢复操作。因此在确定内存故障是出现在vdso共享内存页时,需要进一步地判断内存故障是srao类型或srar类型。对于vdso共享内存页中的srao类型的错误,可以执行恢复动作,也可以不执行恢复动作,此处不作限定。对于没有执行恢复动作的srao类型的错误,可以先忽略处理,当检测到有进程访问vdso共享内存页,也就是表明系统中的已被损坏的额数据被使用时,此时为了使得系统能正常运行,需要对内存故障进行及时恢复。在对内存故障进行恢复的过程中,首先查找访问vdso共享内存页的进程。对于srar类型的内存故障由于数据已损
坏,且数据被使用,因此需要对内存故障进行及时恢复,同样地,先查找访问vdso共享内存页的进程。
71.在cmdline场景下,当多个进程共同访问cmdline内存页时,此时cmdline内存页为共享内存页。在cmdline共享内存页上存在ue内存故障时,如当a、b、c三个进程同时访问cmdline内存页时,假设进程b触发了cmdline内存页上的ue内存故障,操作系统会判定本次的ue内存故障与a进程、c进程无关,只会结束b进程,并隔离cmdline内存页。由于cmdline内存页是a、b、c三个进程共同访问的,因此,若将该页进行隔离之后,会导致a进程、c进程显示异常(无法通过ps命令查看进程参数,包括特定id),如果有其他监控进程用ps命令过滤cmdline关键字(比如特定id)检测a进程、c进程的状态,那么此时就会认为a进程、c进程已经异常终止,会尝试重新拉起a进程、c进程,但是a进程、c进程还是占用网络端口等资源,监控进程拉起a进程、c进程失败,从而影响系统的正常运行。为了使出现在cmdline共享内存页的内存故障能够在较短时间内恢复,使得系统能够正常运行,需要对触发故障的进程进行处理。在对内存故障进行及时恢复,同样地,先查找访问cmdline共享内存页的进程。
72.本实施例所提供的对于不同场景下ue内存故障分别查找访问对应共享内存页的进程。由于不同场景下ue内存故障影响范围不同,因此对不同场景下的ue内存故障进行对应的处理,从而针对不同场景下内存故障能够采用对应的措施进行恢复。
73.在实施中,由于vdso共享内存页是内核提供的共享内存页,因此当进程访问时,会先访问该共享内存页,若该共享内存页被标记,则后续的进程均无法正常启动。由此可见,vdso共享内存页触发ue内存故障的影响程度比较严重。在实施中,作为优选地实施方式,在ue内存故障为srao类型或srar类型的情况下,结束访问共享内存页的进程包括:
74.主动宕机结束访问共享内存页的进程。
75.对于srar类型的ue内存故障,由于srar类型表明数据已被损坏且数据被使用,因此通过主动宕机结束访问共享内存页的进程。对于srao类型的ue内存故障,由于srao类型错误表明系统中的某些数据已损坏,但该数据未被使用,因此对于srao类型的ue内存故障可以先忽略处理,当延迟到后续有进程读取vdso内存页数据时触发srar类型的ue内存故障再对内存故障进行处理。对于内存故障的处理方法是主动宕机结束访问vdso共享内存页的进程。需要说明的是,由于上述实施例中对于srao类型的ue内存故障,当有进程检测到有进程访问vdso共享内存页时才开始查找访问vdso共享内存页的进程,因此可以将该srao类型的内存故障按srar类型的内存故障进行处理,通过主动宕机结束访问vdso共享内存页的进程。
76.本实施例所提供的在ue内存故障为srao类型或srar类型的情况下,结束访问共享内存页的进程。由于位于vdso共享内存页是进程启动时均会访问到的内存页,因此当vdso共享内存页触发ue内存故障的影响程度比较严重,通过主动宕机结束访问共享内存页的进程,及时地对ue内存故障进行处理,使得系统能够正常运行。
77.在触发ue内存故障宕机之后,coredump会自动复制内存数据,在复制过程中,会再次访问到ue内存故障所在地址,造成内存故障升级,从而触发internal error(ierr)错误的问题。在实施中,作为优选地实施方式,在主动宕机结束访问共享内存页的进程之后,隔离ue内存故障之前,还包括:
78.在操作系统dmesg日志上有表征跳过内存数据转储信息的情况下,跳过内存数据
转储。
79.在触发ue内存故障宕机之后,为了防止coredump自动复制内存数据,也就是防止coredump收集内存镜像,在操作系统执行宕机调用宕机接口前,先向操作系统dmesg日志打印特殊标记“forbid:kdump-core”,然后操作系统调用panic执行的宕机动作,宕机时触发makedumpfile转储过程,在转储系统内存数据之前,先判断操作系统dmesg日志是否有打印特殊标记“forbid:kdump-core”,如果有特殊标记,则跳过内存数据转储。
80.本实施例所提供的在主动宕机结束访问共享内存页的进程之后,当日志上有特殊标记时,跳过内存数据转储,可以防止在触发ue内存故障宕机之后coredump自动复制内存数据,造成内存故障升级,触发ieer错误问题的发生。
81.在上述实施例的基础上,为了防止已经发生的内存故障再次对系统的影响以及方便查看已经发生的内存故障。在实施中,在跳过内存数据转储之后,隔离ue内存故障之前,还包括:
82.记录ue内存故障的相关寄存器信息和错误地址。
83.在mce访问硬件寄存器时,其中一个寄存器就是包含内存错误地址的寄存器,因此从该寄存器中便可获取到ue内存故障地址。在跳过内存数据转储之后,记录该寄存器的信息以及在该寄存器中存储的错误地址。在实施中,在ue故障恢复失败宕机的执行路径上添加hook,hook重新定义coredump转储动作,让ue内存故障导致的宕机不再进行内存数据转储,只记录内存故障相关的寄存器信息和错误地址。
84.本实施例所提供的在跳过内存数据转储之后,只记录ue内存故障的相关寄存器信息和错误地址,通过记录的故障信息能够方便查看已经发生的内存故障,从而能够对已经发生的内存故障做出进一步地隔离,从而尽可能地保证系统正常运行。
85.对于不同场景的ue内存故障,故障的影响范围不同,因此不同场景的结束访问共享内存页的进程的方式不同。在实施中,在ue故障地址所在页为cmdline共享内存页的情况下,结束访问共享内存页的进程包括:
86.在操作系统中添加强制srar标记;
87.通过强制srar标记结束与共享内存页建立映射关系的所有进程。
88.当内存故障落在vdso共享内存页时,由于进程在启动时均需要访问该共享内存页,因此当vdso共享内存页被打上hwpoison标记,隔离之后,后续新起的进程都无法启动,而对于内存故障落在cmdline共享内存页时,由于是几个进程同时在访问该内存页,对于其余不访问该共享内存页的进程则会正常运行,当cmdline共享内存页被隔离后,只有使用到该共享内存页的进程受到影响,因此对于vdso场景下的内存故障相比于cmdline场景下的内存故障影响严重。在上述实施例中对于vdso场景下的内存故障,通过主动宕机结束访问vdso共享内存页的进程,在本实施例中,由于cmdline场景下的内存故障影响较小,因此只需要结束访问cmdline共享内存页的进程即可。在操作系统recover逻辑上添加逻辑,当ue内存故障落在cmdline范围内时,强制结束与共享内存页建立映射关系的所有进程,防止系统中有异常状态的进程的出现。在实施中,具体的结束访问共享内存页的进程是在操作系统中添加强制srar标记;通过强制srar标记结束与共享内存页建立映射关系的所有进程。
89.本实施例所提供的对于cmdline场景下的ue内存故障,强制结束与共享内存页建立共享内存页建立映射关系的所有进程,防止系统中有异常状态的进程的出现,从而使得
系统能够正常运行。
90.上述实施例中是采用mce中断处理对内存故障进行恢复,但是,在实施中,应用内存读写操作触发ue内存故障时,底层会同时产生nmi中断和mce中断,在apei的处理流程里面,没有ue内存故障恢复的能力,会直接导致服务器宕机。因此,为了防止ue内存故障触发apei导致宕机,作为优选地实施方式,在获取ue内存故障的ue内存故障地址之前,还包括:
91.在操作系统中添加apei bypass处理。
92.应用内存读写操作触发ue内存故障时,底层会同时产生nmi中断和mce中断。nmi中断对应apei的处理流程,mce中断对应mce恢复流程。在apei的处理流程里面,没有ue内存故障恢复的能力,会直接导致服务器宕机。mce有恢复能力,可以在支持范围内对ue内存故障进行恢复。当nmi中断和mce中断同时发出时,服务器执行到apei处理流时就会触发宕机。图3为ue内存故障触发apei导致宕机的流程图。如图3所示,当应用访问内存触发ue故障时,在固件优先模式下,硬件平台会发smi中断给固件,固件向操作系统同时发出nmi和mce中断。在nmi中断处理过程中,触发apei导致宕机,对于mce中断中无法进行故障恢复的操作,如图3中,无法向vm发送sigbus信号结束进程,也无法进行recovery的操作。
93.为了解决被apei优先处理导致宕机的问题,本技术添加apei bypass处理逻辑,在识别到服务器支持machine check architecture(mca)时,绕过apei的宕机流程,让服务器直接进mce ue内存故障恢复流程,降低ue内存故障导致宕机概率。图4为添加了apei bypass处理的故障恢复方法的流程图。如图4所示,添加了apei bypass处理后,绕过原来的apei处理,mce中断处理能够向vm发送sigbus信号结束进程,以及通过recovery进行故障恢复的操作。
94.本实施例所提供的在使用mce中断处理进行故障恢复之前,在操作系统中添加apei bypass处理,防止服务器执行到apei处理时触发宕机,进而增强了系统的内存故障恢复的能力。
95.在上述实施例中,对于ue内存故障恢复方法进行了详细描述,本技术还提供ue内存故障恢复装置以及电子设备对应的实施例。需要说明的是,本技术从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
96.图5为本技术的一实施例提供的ue内存故障恢复装置的结构图。本实施例基于功能模块的角度,包括:
97.获取模块10,用于当触发ue内存故障时,获取ue内存故障的ue内存故障地址;
98.查找模块11,用于在ue内存故障地址所在页为共享内存页的情况下,查找访问共享内存页的进程;
99.结束模块12,用于结束访问共享内存页的进程;
100.隔离模块13,用于隔离ue内存故障。
101.由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
102.此外,ue内存故障恢复的装置,还包括:跳过模块,用于在操作系统dmesg日志上有表征跳过内存数据转储信息的情况下,跳过内存数据转储;记录模块,用于记录ue内存故障的相关寄存器信息和错误地址;添加模块,用于在操作系统中添加apei bypass处理。
103.本实施例所提供的ue内存故障恢复装置,当触发ue内存故障时,首先通过获取模
块获取ue内存故障的ue内存故障地址;然后在ue内存故障地址所在页为共享内存页的情况下,通过查找模块,查找访问共享内存页的进程;在查找到访问共享内存页的进程之后,通过结束模块,结束访问共享内存页的进程;最后通过隔离模块,隔离ue内存故障。由此可见,该装置中在ue故障地址所在页为共享内存页的情况下,对触发ue内存故障的进程进行结束并隔离,使得已经触发ue内存故障的进程不再触发ue内存故障,也就是共享内存页不会再被标记,从而使得其余进程在访问内存时能够获取到未被隔离的共享内存页,故而保证系统内存故障能够在较短的时间内恢复,确保系统正常运行。
104.图6为本技术另一实施例提供的电子设备的结构图。本实施例基于硬件角度,如图6所示,电子设备包括:
105.存储器20,用于存储计算机程序;
106.处理器21,用于执行计算机程序时实现如上述实施例中所提到的ue内存故障恢复的方法的步骤。
107.本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
108.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(digital signal processor,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有图像处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
109.存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的ue内存故障恢复的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于上述所提到的ue内存故障恢复的方法所涉及到的数据等。
110.在一些实施例中,电子设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
111.本领域技术人员可以理解,图6中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
112.本技术实施例提供的电子设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:ue内存故障恢复的方法,效果同上。
113.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介
质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
114.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
115.本技术提供的计算机可读存储介质包括上述提到的ue内存故障恢复的方法,效果同上。
116.为了使本领域的技术人员更好的理解本技术的技术方案,下面结合附图7对上述本技术作进一步的详细说明,图7本技术实施例提供的在vdso场景下内存故障恢复增强的流程图。该方法具体包括:
117.s14:触发ue内存故障;
118.s15:解析ue错误地址;
119.s16:判断是否vdso页面;若否,则进入步骤s17,之后进入步骤s21;若否,则进入步骤s18;
120.s17:解析ue错误地址;
121.s18:判断是否srao;若否,则进入步骤s19,若是,则进入步骤s21;
122.s19:srar宕机处理;
123.s20:跳过内存数据转储;
124.s21:隔离ue内存故障。
125.本实施例所提供的在vdso场景下内存故障恢复增强的方法,该方法中,当触发ue内存故障时,在ue内存故障恢复路径上解析ue地址,判断ue地址是否落于vdso页面。对于落在vdso的srar类型的错误,主动宕机,同时避免生成内存转储文件。对于落在vdso的srao类型的错误,忽略处理,延迟到后续有进程读取vdso内存页数据时触发srar类型的ue内存故障宕机处理。由此可见,该方法中在ue故障地址所在页为vdso共享内存页的情况下,对srar类型的错误进行主动宕机,使得已经触发ue内存故障的进程不再触发ue内存故障,也就是共享内存页不会再被标记,从而使得其余进程在访问内存时能够获取到未被隔离的共享内存页,故而保证系统内存故障能够在较短的时间内恢复,确保系统正常运行。
126.以上对本技术所提供的一种ue内存故障恢复方法、装置、电子设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
127.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将
一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1