一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

内存错误处理方法和装置与流程

2022-06-05 07:30:26 来源:中国专利 TAG:

内存错误处理方法和装置
1.本技术是分案申请,原申请的申请号是201910157218.0,原申请日是2019年03月01日,原申请的全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及计算机技术领域,尤其涉及内存错误处理方法和装置。


背景技术:

3.针对服务器中的应用层软件,suse、redhat等厂商提供了内存页隔离(page offline)等技术,以保障应用层软件使用内存空间的健康性。内存页隔离是操作系统(operating system,os)层隔离使用内存页的技术。内存页被隔离后,不能再供应用层软件使用。
4.目前,os层对可纠正错误(corrected errors,ce)不进行处理,仅在内存页发生不可纠正错误(uncorrected errors,uce),且具体是选择处理(sw recoverable action optional,srao)错误、不需要处理(uncorrected no action,ucna)错误和必须处理(sw recoverable action required,srar)错误时,杀死正在使用该内存页的进程(即关闭正在使用该内存页的应用),从而实现对该内存页进行隔离。其中,sw是软件(software)的英文缩写。但是,可纠正错误会影响内存空间的健康度,从而影响内存的可靠性可用性可服务性(reliability,availability,and serviceability,ras)。


技术实现要素:

5.本技术实施例提供了内存错误处理方法和装置,有助于提高内存的ras。
6.为达到上述目的,本技术实施例提供了如下技术方案:
7.第一方面,本技术实施例提供了一种内存错误处理方法,应用于计算机装置(如服务器等),该方法包括:获取第一错误描述信息,根据第一错误描述信息确定第一内存页发生的错误是可纠正错误中的非镜像回写成功错误;响应上述确定,当第一内存页发生该非镜像回写成功错误的次数(即累计次数)达到m(即预设次数)时,对第一内存页进行隔离,m为大于1的整数。这是在考虑到可纠正错误中的非镜像回写成功错误虽然不会导致服务器宕机,但是会对内存的健康度造成一定的影响而提出的技术方案。然而,如果对这类内存错误进行立即隔离,则会导致系统产生不可用碎片化内存,从而影响系统性能,因此,相比立即隔离,本技术方案中采用阈值隔离可以减少因内存页隔离而导致的对系统性能的影响。另外,由于相比立即隔离,阈值隔离可以降低内存页隔离对底层硬件ras特性(adddc/sddc/ranksparing/smi风暴抑制)触发的影响,因此,可以提高硬件ras技术和软件ras技术的兼容性。
8.在一种可能的设计中,对第一内存页进行隔离之后,将第一内存页发生的可纠正错误中的非镜像回写成功错误类型的错误的累计次数清零。
9.在一种可能的设计中,当第一内存页发生的错误是可纠正错误中的非镜像回写成
功错误时,且发生本次错误时,第一内存页发生非镜像回写成功错误的累计次数没有达到预设次数,则将第一内存页发生非镜像回写成功错误的累计次数加1,且不对第一内存页进行隔离。
10.在一种可能的设计中,非镜像回写成功错误包括:巡检可纠正错误、读写可纠正错误、搬移可纠正错误或镜像回写失败错误中的任意一种。
11.第二方面,本技术实施例提供了一种内存错误处理方法,包括:获取第二错误描述信息,第二错误描述信息用于描述第二内存页发生的错误的类型;根据第二错误描述信息确定第二内存页发生的错误是不可纠正错误中的非突发致命错误;响应上述确定,对第二内存页进行隔离。这是考虑到“使能内存镜像功能时,如果执行内存页隔离功能,则会碎片化内存可用空间,大幅降低服务器内存系统可靠性”而提出的技术方案。这样,可以降低软件ras技术与硬件ras技术之间的耦合关系,从而提高了整体内存系统的可靠性。
12.在一种可能的设计中,非突发致命错误包括:不需要处理ucna错误、选择处理srao错误、必须处理srar错误或巡检不可纠正错误中的任意一种。
13.在一种可能的设计中,当非突发致命错误是srao错误、ucna错误或srar错误时,在对第二内存页进行隔离之后,不关闭使用第二内存页的应用。这不会对用户业务造成影响。
14.第三方面,本技术实施例提供了一种内存错误处理装置,包括:用于执行第一方面或第一方面的任一种可能的设计提供的方法。该装置具体可以是服务器,或者是一个芯片。
15.在一种可能的设计中,该装置包括用于执行第一方面或第一方面任一种可能的设计提供的方法的各个模块。
16.在另一种可能的设计中,该装置包括存储器和处理器,存储器用于用于存储计算机指令,该装置运行时,该处理器执行存储器中的计算机指令以利用该装置中的硬件资源执行第一方面或第一方面任一种可能的设计所提供的方法的操作步骤。
17.第四方面,本技术实施例提供了一种内存错误处理装置,包括:用于执行第二方面或第二方面的任一种可能的设计提供的方法。该装置具体可以是服务器,或者是一个芯片。
18.在一种可能的设计中,该装置包括用于执行第二方面或第二方面任一种可能的设计提供的方法的各个模块。
19.在另一种可能的设计中,该装置包括存储器和处理器,存储器用于用于存储计算机指令,该装置运行时,该处理器执行存储器中的计算机指令以利用该装置中的硬件资源执行第二方面或第二方面任一种可能的设计所提供的方法的操作步骤。
20.本技术实施例还提供了一种计算机可读存储介质,其上储存有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第一至第二方面或其任一种可能的设计提供的方法的操作步骤。
21.本技术实施例还提供了一种计算机程序产品,当其在计算机上运行时,使得第一至第二方面或其任一种可能的设计提供的方法的操作步骤。
22.可以理解的是,上述提供的任一种内存错误处理装置或计算机可读存储介质或计算机程序产品等均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
附图说明
23.图1为可适用于本技术实施例的一种服务器的硬件结构示意图;
24.图2为可适用于本技术实施例的一种服务器的层级结构示意图;
25.图3为本技术实施例提供的一种内存错误处理方法的流程图;
26.图4为本技术实施例提供的一种内存错误处理装置的结构示意图。
具体实施方式
27.如图1所示,为可适用于本技术实施例的一种服务器的硬件结构示意图。其中,该服务器可以是支持内存页隔离技术的任意类型的服务器,例如x86架构的服务器,具体可以是刀片服务器、高密服务器、机架服务器或高性能服务器等。图1所示的服务器可以包括处理器101、内存控制器102和内存103。处理器101与内存控制器102可以集成在一起,也可以是独立设置的。其中,处理器101是服务器的控制中心,具体可以是中央处理单元(central processing unit,cpu)。内存103是缓存空间。内存103中可以缓存操作系统程序和软件应用程序等。内存控制器102用于对内存103中的数据/程序进行管理。
28.图1所示的服务器仅为可适用于本技术实施例的一种服务器的结构示意图,其不对本技术实施例所适用的服务器构成限定,例如,服务器中还可以包括持久性存储介质、通信接口、通信线路等,图1中未示出。
29.服务器包括硬件层和软件层,软件层是运行在硬件层上的程序代码。软件层又可以分成若干个层,层与层之间通过软件接口通信。软件层从上至下包括应用层、操作系统(operating system,os)层和基本输入输出系统(basic input output system,bios)层,如图2所示。
30.硬件层,包括处理器(如cpu)、内存和内存控制器等计算机硬件,如图1所示。
31.bios层,是加载在计算机硬件系统上的最基本的软件代码。bios层是在os层之下的底层运行程序,是计算机硬件和os层之间的抽象层,用来设置硬件,为os层运行做准备。bios层的主要功能是上电、自检、cpu初始化、内存初始化、检测输入输出设备以及可启动设备并最终引导操作系统启动。需要说明的是,下文中描述的bios层执行某个步骤(如以下步骤s101),可以理解为是:处理器101调用bios层执行该步骤。
32.os层,包括操作系统程序代码。操作系统可以是linux、windows或vxwarks等。os层基本处理单元是内存页。需要说明的是,下文中描述的os层执行某个步骤(如以下步骤s104),可以理解为是:处理器101调用os层执行该步骤。
33.应用层,包括一系列运行应用程序的程序代码。
34.以下,对本技术实施例中涉及的关键技术和术语进行介绍,以方便读者理解。
35.1)、内存ras技术
36.内存ras技术,是为了提高内存的可靠性、可服务性、可实用性而提出的技术,可以包括硬件ras技术和软件ras技术。具体的:
37.硬件ras技术可以包括:自适应双颗粒数据纠正(adaptive double device data correction,adddc)、单颗粒数据纠正(single-device data correction,sddc)、内存镜像(memory mirror)、内存热备(rank sparing)、系统管理中断(system management interrupt,smi)风暴抑制等技术。硬件ras技术可以降低由于内存可纠正错误累计变化成
不可纠正错误而导致的服务器宕机的概率。硬件ras技术强依赖于硬件层与bios层。
38.软件ras技术可以包括内存隔离页技术等。软件ras技术依赖于os层,具体的,bios层在检测到内存错误之后,通过smi中断将该错误上报至os层,os层可以在用户业务(即应用层正在执行的业务)不中断的情况下,实时响应smi中断信息,从而对发生错误的内存页进行隔离。隔离之后,被隔离的内存页不能再被应用层使用,因此,可以保障应用层数据运行在健康的内存地址空间中。
39.一种ras技术对应一种ras功能。例如,内存镜像技术对应内存镜像功能,内存隔离技术对应内存隔离功能。其他示例不再一一列举。
40.服务器可以支持一种或多种硬件ras技术。当服务器支持多种硬件ras技术时,同一时刻,bios层可以使能一种硬件ras技术,或使能多种不互斥的硬件ras技术。如果两种硬件ras技术互斥,则其中一种ras技术对应的ras功能使能时,另一种ras技术所对应的ras功能不能被使能。例如,adddc功能和镜像功能互斥。
41.当adddc功能、sddc功能、内存镜像功能或内存热备功能使能时,内存隔离功能可以处于使能状态。当smi风暴抑制功能使能时,内存隔离功能失效。
42.2)、内存镜像技术
43.内存镜像,是指将服务器的内存分为两个部分,其中的一个部分的数据是另一个部分的数据的镜像,用于创建内存的冗余副本。而内存镜像技术,是对内存地址空间进行冗余备份的技术。其中,内存镜像包括百分比镜像、全镜像和关键地址镜像等。
44.bios层使能内存镜像功能时内存的可靠性,远高于os层使能内存页隔离功能时内存的可靠性。当bios层使能内存镜像功能时,如果os层使能内存页隔离功能,则会碎片化内存可用空间,大幅降低服务器内存系统可靠性。
45.3)、smi风暴抑制技术
46.smi风暴抑制技术,是为了防止频繁中断信息上报干扰系统正常运行的一种机制。
47.如果内存瞬间出现大量的可纠正错误,则bios层会产生并向os层上报大量的smi中断信息,这会对系统的正常运行造成影响。因此,目前常用的解决方案是,当bios层确定内存瞬间出现大量的可纠正错误时,触发smi风暴抑制功能,并将表示“已触发smi风暴抑制功能”的信息上报给os层。os层接收到该信息之后,控制内存页隔离功能失效。
48.4)、内存错误分类
49.内存错误可以分为可纠正错误和不可纠正错误。进一步地,可纠正错误和不可纠正错误又可细分为如下几类:
50.可纠正错误可以包括:
51.①
巡检可纠正错误(ce patrol error),发生在未被使用的内存页,是被处理器(如cpu)的巡检引擎发现的内存可纠正错误。
52.②
读写可纠正错误(ce read/write error),发生在系统正在使用的内存页。
53.③
搬移可纠正错误(ce sparing error),发生在触发硬件颗粒搬移之后,例如bios层使能了adddc功能后发生的错误。
54.④
镜像回写失败错误(mirrorscrub failover error),是bios层使能了内存镜像功能后,通过回写机制无法纠正,但能使用镜像数据保证bios层正常向os层上报错误信息的错误。
55.⑤
镜像回写成功错误(mirrorscrub error),是使能了内存镜像功能后,通过回写机制纠正成功的错误,bios层可以成功向os层上报该错误的错误信息。
56.不可纠正错误可以包括:
57.⑥
突发致命错误(fatal error),是由于内存条实体硬件错误造成系统宕机的不可纠正错误。
58.⑦
srao错误,是选择处理的不可纠正错误。
59.⑧
ucna错误,是不需要处理的不可纠正错误。
60.⑨
srar错误,是必须处理的不可纠正错误。
61.⑩
巡检不可纠正错误(uce patrol error),发生在未被使用的内存页,被处理器(如cpu)的巡检引擎发现的内存不可纠正错误。
62.在一个示例中,上述错误



的错误码如下:
63.①
巡检可纠正错误的错误码为:error_type:ce;mscode:0x0008。
64.②
读写可纠正错误的错误码为:error_type:ce;mscode:0x0101。
65.③
搬移可纠正错误的错误码为:error_type:ce;mscode:0x0020。
66.④
镜像回写失败错误的错误码为:error_type:ce;mscode:0x0101;mci_misc:bit(63)。
67.⑤
镜像回写成功错误的错误码为:error_type:ce;mscode:0x0101;mci_misc:bit(62)。
68.⑥
突发致命错误的错误码为:error_type:uce。
69.⑦
srao错误的错误码为:error_type:uce;mscode:0x0010。
70.⑧
ucna错误的错误码为:error_type:uce;mscode:0x0101。
71.⑨
srar错误的错误码为:error_type:uce;mscode:0x0010。
72.⑩
巡检不可纠正错误的错误码为:error_type:ce;mscode:0x0010。
73.需要说明的是,在一些实施例中,cpu支持uce降级功能。本技术实施例中描述的“srao错误”是指uce降级功能关闭时的巡检不可纠正错误。本技术实施例中描述的“巡检不可纠正错误”是指uce降级功能开启时的巡检不可纠正错误。或者,在一种实现方式中,可以将上述“srao错误的错误码error_type:uce;mscode:0x0010”理解为“srao错误在uce降级功能关闭时的错误码”,将上述“巡检不可纠正错误的错误码error_type:ce;mscode:0x0010”理解为“srao错误在uce降级功能开启时的错误码”。
74.另外,针对上述“巡检不可纠正错误的错误码为:error_type:ce;mscode:0x0010”,os层在确定该错误码的error_type是ce的情况下,如果确定到mscode是0x0010,则认为当前错误是巡检不可纠正错误(即uce降级功能开启时的巡检不可纠正错误)。
75.5)、阈值隔离,立即隔离
76.在使用内存页隔离技术时,为了区分不同的使用条件下所执行的内存页隔离,在本技术的一些实施例中,提出了“阈值隔离”和“立即隔离”的概念。具体的:
77.阈值隔离,是指:如果当前内存页发生同一类型的错误的累计次数达到预设次数,则对当前内存页进行隔离。其中,预设次数是大于1的整数。
78.立即隔离,是指,如果当前内存页发生一次某一类型的错误,则对当前内存页进行隔离。
79.6)、硬件ras技术和软件ras技术的兼容性
80.当服务器支持两种技术时,如果其中一种技术使能时,不对另一种技术造成影响或对另一种技术造成的影响较小,则认为这两种技术兼容性好。
81.硬件ras技术和软件ras技术作为服务器内存可靠性的手段被广泛应用。然而,二者同时使用时,会相互影响。例如,os层执行内存页隔离之后,被隔离的内存页不再有读写操作,这会导致可纠正错误减少,从而导致底层的硬件ras特性被触发的概率同步降低。又如,当使能了内存镜像功能,若再次发生内存页隔离,则会导致整体内存可靠性下降。
82.7)、其他术语
83.在本技术中,“至少一个”包括一个或多个。“多个”是指两个或两个以上。例如,a、b和c中的至少一个,包括:单独存在a、单独存在b、同时存在a和b、同时存在a和c、同时存在b和c,以及同时存在a、b和c。在本技术中,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
84.以下,结合附图对本技术实施例提供的内存错误处理方法进行说明。
85.如图3所示,为本技术实施例提供的一种内存错误处理方法的流程图。图3所示的方法包括如下步骤:
86.s101:bios层检测到内存发生错误,并记录该错误的错误码。该步骤的具体实现方式可以参考现有技术,此处不再赘述。
87.s102:bios层向os层发送smi中断信息。
88.s103:os层响应于smi中断信息,从bios层获取内存错误信息。
89.其中,内存错误信息包括发生错误的内存页(下文中称为“当前内存页”)的标识和错误描述信息,该错误描述信息用于描述当前内存页发生的该错误的类型。当前内存页的标识可以是当前内存页的地址。
90.错误描述信息,可以是当前内存页发生的错误的错误码,或者是bios层对当前内存页发生的错误的错误码进行分析后得到的该错误的类型的标识信息如类型的编号等。在一些实施例中,bios层和os层之间可以预定义每种错误的类型的编号。
91.本技术实施例对当前内存页发生的错误的类型不进行限定,以下列举几种实现方式:
92.方式1:当前内存页发生的错误的类型可以是上述错误



中的任一种。具体可以参考下述表1。
93.方式2:当前内存页发生的错误的类型可以是上述错误



以及非致命错误中的任一种。具体可以参考下述表2。
94.方式3:当前内存页发生的错误的类型可以是可纠正错误中的非镜像回写成功错误、不可纠正错误中的非突发致命错误和其他错误中的任一种。具体可以参考下述表3。
95.可以理解的是,在背景技术提供的技术方案,当前内存页发生的错误的类型可以是可纠正错误、不可纠正错误中的突发致命错误和不可纠正错误中的非突发致命错误中的任一种。本技术实施例中,对当前页发生的错误的类型与背景技术提供的技术方案不同。在一些实现方式中,本技术实施例对内存页发生的错误的类型进行了更细粒度的分类。
96.可以理解的是,s102和s103中是以bios层通过smi中断向os层上报内存错误信息,
为例进行说明的,本技术实施例不限于此。也就是说,os层还可以通过其他方式获取到内存错误信息。
97.s104:os层根据错误描述信息确定当前内存页发生的错误的类型。
98.假设os层获取到的错误描述信息是错误码,且将错误码中的“error_type”称为第一错误码,将“mscode”称为第二错误码,将“mci_misc”称为第三错误码,那么:
99.基于上述方式1,s103可以包括:
100.如果第一错误码是ce,则os层基于第二错误码的内容获知该错误是错误





、镜像回写错误或错误

。进一步地,如果基于第二错误码的内容获知该错误是镜像回写错误,则基于第三错误码的内容获知该错误是错误

还是错误


101.如果第一错误码是uce,则当错误描述信息不包含第二错误码时,os层确定该错误是突发致命错误;当错误描述信息包含第二错误码时,os层确定该错误是非突发致命错误,并进一步基于第二错误码的内容,确定该错误是哪一种非突发致命错误。
102.基于上述方式2时s103的具体实现方式,与上述基于方式1时s103的具体实现方式的区别在于,如果第一错误码是uce,则os层不需要基于第二错误码的内容,确定该错误是哪一种非突发致命错误。
103.基于上述方式3时s103的具体实现方式,与基于上述方式2时s103的具体实现方式的区别在于,如果第一错误码是ce,则os层可以基于第二错误码的内容判断该错误是否是镜像回写错误。进一步地,当不是镜像回写错误时,则确定该错误的类型是类型1;当是镜像回写错误时,基于第三错误码的内容获知该错误是错误

还是错误

,即可确定该错误的类型是类型1还是类型3。
104.上文所列举的s103的具体实现方式仅为示例,其不对本技术实施例提供的s103的具体实现方式构成限定。例如,基于上述方式3时,bios层和os层可以预定义通过两个比特的二进制数来表示错误的类型,如采用二进制数“00”来指示类型1,采用“01”来指示类型2,采用“10”来指示类型3,基于此,错误描述信息可以包括表示错误的类型的二进制数,os层可以基于该二进制数的值来确定当前内存页发生的错误的类型。其他方式也可以基于二进制数来表示错误的类型,此处不再一一说明。
105.s105:os层根据当前内存页发生的错误的类型对当前内存页进行处理。
106.以下,通过具体示例说明s105的具体实现方式。
107.示例1:基于上述方式1,内存页发生的错误的类型与对该内存页的处理方式之间的对应关系可以如表1所示:
108.表1
[0109][0110]
基于表1,如果当前内存页发生的错误的类型是类型i,且发生类型i的错误的累计次数达到预设次数,则os层对当前内存页进行隔离;其中,i=1、2、3或4。当i取不同值时,所对应的预设次数可以相同,也可以不同。如果当前内存页发生的错误的类型是类型5或类型6,则os层对当前内存页进行隔离。如果当前内存页发生的错误的类型是类型7~10,则os层不对当前内存页进行隔离。也就是说,os层需要识别具体是错误



中的哪一种。
[0111]
示例2:基于上述方式2,内存页发生的错误的类型与对该内存页的处理方式之间的对应关系可以如表2所示:
[0112]
表2
[0113][0114]
基于表2,如果当前内存页发生的错误的类型是类型i,且发生类型i的错误的累计次数达到预设次数,则os层对当前内存页进行隔离。i=1、2、3或4。当i取不同值时,所对应的预设次数可以相同,也可以不同。如果当前内存页发生的错误的类型是类型5或类型6,则os层对当前内存页进行隔离。如果当前内存页发生的错误的类型是类型7,则os层不对当前内存页进行隔离。也就是说,os层只需要识别当前内存页发生的错误的类型是表2中所示的类型1~7中的哪一种,对于类型7来说,不需要识别具体是错误



中的哪一种。
[0115]
示例3:基于上述方式3,内存页发生的错误的类型与对该内存页的处理方式之间的对应关系可以如表3所示:
[0116]
表3
[0117][0118]
基于表3,s105可以包括:如果当前内存页发生的错误是可纠正错误中的非镜像回写成功错误,且发生该类型的错误的累计次数达到预设次数,则os层对当前内存页进行隔离。如果当前内存页发生的错误是不可纠错误中的正非突发致命错误,则os层对当前内存页进行隔离。如果当前内存页发生的错误是其他错误,则os层不对当前内存页进行隔离。图3是以此为例进行说明的。也就是说,os层只需要识别当前内存页发生的错误的类型是表1中所示的类型1~3中的哪一种,不需要识别具体是错误



中的哪一种。
[0119]
基于示例3,s105可以描述为:os层采用不同的处理方式处理不同类型的错误。
[0120]
基于上文提供的任一种示例,对于

srao错误、

ucna错误和

srar错误来说,现有技术中是通过关闭使用当前内存页的应用实现内存页隔离的,这会对用户业务造成一定的影响。可选的,在本技术实施例提供的技术方案中,os层可以直接对当前内存页进行隔离,而不关闭使用当前内存页的应用,这样不会对用户业务造成影响。
[0121]
基于上文提供的任一种示例,如果当前内存页发生的错误的类型是阈值隔离方式所对应的错误类型,那么:可选的,若当前内存页发生该类型的错误的累计次数达到预设次数,则os层对当前内存页进行隔离,并将当前内存页发生该类型的错误的累计次数清零。若当前内存页发生该类型的错误的累计次数没有达到预设次数,则os层对当前内存页进行隔离,并将当前内存页发生该类型的错误的累计次数加1。其中,服务器中可以设置用于记录当前内存页发生该类型的错误的次数的计数器,该计数器可以通过软件和/或硬件实现。
[0122]
本技术实施例中,当内存发生可纠正错误中的非镜像回写成功错误(如巡检可纠正错误、读写可纠正错误、搬移可纠正错误或镜像回写失败错误)时,采用阈值隔离的方式。这是在考虑到可纠正错误中的非镜像回写成功错误虽然不会导致服务器宕机,但是会对内存的健康度造成一定的影响而提出的技术方案。并且,由于立即隔离会导致系统产生不可用碎片化内存从而影响系统性能,因此,相比立即隔离,采用阈值隔离可以减少因内存页隔离而导致的对系统性能的影响。另外,由于相比立即隔离,阈值隔离可以降低内存页隔离对底层硬件ras特性(adddc/sddc/ranksparing/smi风暴抑制)触发的影响,因此,可以提高硬件ras技术和软件ras技术的兼容性。
[0123]
其中,本技术实施例对预设次数的具体取值以及根据何种因素确定预设次数的取值不进行限定,例如,可以综合考虑内存页隔离对系统性能的影响,以及当前发生的内存错误对内存的健康度的影响等因素来确定预设次数的取值。对于可纠正错误中的不同类型的非镜像回写成功错误(如巡检可纠正错误、读写可纠正错误、搬移可纠正错误或镜像回写失败错误)来说,预设次数可以相等,也可以不相等。
[0124]
本技术实施例中,当内存发生镜像回写成功错误时,采用不隔离的方式。这是考虑到“使能内存镜像功能时,如果执行内存页隔离功能,则会碎片化内存可用空间,大幅降低服务器内存系统可靠性”而提出的技术方案。这样,可以降低软件ras技术与硬件ras技术之
间的耦合关系,从而提高了整体内存系统的可靠性。
[0125]
本技术实施例中,当内存发生巡检不可纠正错误时,采用立即隔离的方式。这是考虑到“巡检不可纠正错误是非宕机不可纠正错误,发生该错误时,服务器处于内存宕机边缘”而提出的技术方案。这样可以防止病态内存导致服务器宕机。
[0126]
需要说明的是,对于镜像回写失败错误来说,由于内存地址空间镜像为内存数据读写提供了冗余备份的空间,其可靠性高于内存页隔离;但是当数据备份空间发现错误,进行错误回写时,若回写失败,则会演化出新的镜像回写失败错误;若产生该类错误,则内存空间的工作区与备份区将解绑,恢复为可用内存,此时,备份区与普通内存(即镜像内存功能处于非使能状态时的内存)相同,因此,对其采用阈值隔离。
[0127]
上述主要从方法的角度对本技术实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0128]
本技术实施例可以根据上述方法示例对内存错误处理装置进行功能模块的划分,例如可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0129]
如图4所示,为本技术实施例提供的一种内存错误处理装置40的结构示意图。作为一个示例,内存错误处理装置40可以是服务器。内存错误处理装置40可以用于执行图3所示的内存错误处理方法。内存错误处理装置40可以包括获取单元401、确定单元402和隔离单元403。在一个示例中,结合图1所示的服务器,上述获取单元401、确定单元402和隔离单元403均可以通过图1中的处理器101来实现。在另一个示例中,结合图2所示的服务器,上述获取单元401、确定单元402和隔离单元403均可以通过图2中的os层实现。
[0130]
在一些实施例中,获取单元401用于获取第一错误描述信息;第一错误描述信息用于描述第一内存页发生的错误的类型。确定单元402用于根据第一错误描述信息确定第一内存页发生的错误是可纠正错误中的非镜像回写成功错误。隔离单元403用于响应上述确定,当第一内存页发生非镜像回写成功错误的次数达到m时,对第一内存页进行隔离,m为大于1的整数。例如,结合图3,获取单元401可以用于执行s103中os层获取内存错误信息的步骤。确定单元402可以用于执行s104。隔离单元403可以用于执行s105中的“如果当前内存页发生的错误是可纠正错误中的非镜像回写成功错误,且发生该类型的错误的累计次数达到m,则对当前内存页进行隔离”的步骤。
[0131]
可选的,非镜像回写成功错误包括:巡检可纠正错误、读写可纠正错误、搬移可纠正错误或镜像回写失败错误中的任意一种。
[0132]
在一些实施例中,获取单元401用于获取第二错误描述信息;第二错误描述信息用于描述第二内存页发生的错误的类型。确定单元402还用于,根据第二错误描述信息确定第二内存页发生的错误是不可纠正错误中的非突发致命错误。隔离单元403用于如果根据第
二错误描述信息确定第二内存页发生的错误是不可纠正错误,则当第二内存页发生的错误是非突发致命错误时,对第二内存页进行隔离。例如,结合图3,获取单元401可以用于执行s103中os层获取内存错误信息的步骤。确定单元402可以用于执行s104。隔离单元403可以用于执行s105中的“如果当前内存页发生的错误是不可纠正错误中的非突发致命错误,则对当前内存页进行隔离”的步骤。
[0133]
可选的,非突发致命错误包括:ucna错误、srao错误、srar错误或巡检不可纠正错误中的任意一种。
[0134]
可选的,当非突发致命错误是srao错误、ucna错误或srar错误时,在对第二内存页进行隔离之后,不关闭使用第二内存页的应用。
[0135]
在一些实施例中,如果当前内存页发生的错误是其他错误(即除可纠正错误中的非镜像回写成功错误和不可纠正错误中的非突发致命错误外的错误),则不对当前内存页进行隔离。
[0136]
上述提供的任一种内存错误处理装置40中相关内容的解释以及有益效果的描述等均可参考上述对应的方法实施例,此处不再赘述。
[0137]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本技术实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0138]
尽管在此结合各实施例对本技术进行了描述,然而,在实施所要求保护的本技术过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
[0139]
尽管结合具体特征及其实施例对本技术进行了描述,显而易见的,在不脱离本技术的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本技术的示例性说明,且视为已覆盖本技术范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献