1.本技术涉及计算机技术领域,尤其涉及一种内存故障处理方法及计算设备。
背景技术:2.内存是计算设备的重要组成部分之一。例如,内存可以是动态随机存取存储器(dynamic random access memory,dram),dram在存储和计算机领域中的应用越来越广泛。通常情况下,内存可以由一个内存条或者多个内存条组成。并且,每个内存条中包括多个存储阵列(bank)。内存条在使用过程中,可能会发生多次bank故障。
技术实现要素:3.本技术提供了一种内存故障处理方法及计算设备,对内存发生的bank故障进行处理,可以避免计算设备发生宕机。
4.第一方面,本技术提供了一种内存故障处理方法。该方法包括:确定内存发生的存储阵列故障的地址信息,所述地址信息中包括内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识;若所述存储阵列故障的地址信息与历史存储阵列故障的地址信息相同,根据包括所述内存颗粒的内存条的历史内存故障的信息确定所述内存条的故障严重程度;当所述故障严重程度满足预设条件时,故障严重程度,向用户的设备发送告警,所述告警可以用于提醒所述用户更换所述内存条、或者迁移所述内存条对应的业务。
5.上述实施方式,在确定内存条中的一个内存颗粒发生bank故障的情况下,如果存储阵列故障的地址信息与历史存储阵列故障的地址信息相同,则可以确定该内存颗粒非首次发生bank故障。在该内存颗粒非首次发生bank故障的情况下,根据故障模型计算的该内存条的故障严重程度向用户发送告警,可以避免修复同一内存条中同一内存颗粒发生的多次bank故障时降低计算设备性能,避免计算设备发生业务卡顿、业务中断或者甚至宕机的问题。
6.在一种可能的实施方式中,所述方法还包括:若所述地址信息与所述历史存储阵列故障的地址信息不同,发送修复所述存储阵列故障的请求。
7.上述实施方式,当确定内存条中的一个内存颗粒是首次发生bank故障时,可以在不影响计算设备的性能的情况下,可以向基本输入输出系统(basic input output system,bios)发送修复该bank故障的请求,以修复该bank故障。
8.在一种可能的实施方式中,所述存储阵列故障的地址信息与所述历史存储阵列故障的地址信息相同包括:当所述存储阵列故障的地址信息的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识,与个历史存储阵列故障的地址信息的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识分别相同时,确定所述存储阵列故障的地址信息与所述历史存储阵列故障的地址信息相同,即所述存储阵列故障的地址信息中的内存颗粒非首次发生所述存储阵列故障。
9.在一种可能的实施方式中,所述存储阵列故障的地址信息与所述历史存储阵列故
障的地址信息不同包括:当所述存储阵列故障对应的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识,与所有历史存储阵列故障对应的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识中均存在至少一个标识不相同时,确定所述存储阵列故障的地址信息与所述历史存储阵列故障的地址信息不相同,即存储阵列故障的地址信息中的内存颗粒首次发生所述存储阵列故障。
10.需要说明的是,上述两个实施方式均是,将当前bank故障的地址信息中的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识,与所有的历史bank故障的地址信息中的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识进行对比,如果当前bank故障对应的这4个标识与所有历史bank故障中的一个或多个bank故障中的4个标识完全相同时确定当前bank故障不是其内存颗粒(device)首次发生的bank故障,如果当前bank故障对应的4个标识与所有历史bank故障中的标识均存在至少一个标识不相同时,确定当前bank故障不是其device的首次bank故障。
11.上述两个实施方式,通过比较bank故障与历史bank故障的地址信息中的内存通道的标识、内存条的标识、内存列的标识、内存颗粒的标识,可以确定发生该bank故障的内存颗粒是否为首次发生bank故障。
12.在一种可能的实施方式中,所述历史内存故障的信息包括如下的一种或多种:所述历史内存故障的地址信息、所述历史内存故障的时间信息和所述历史内存故障的数量。
13.上述实施方式,历史内存故障的信息包括地址信息、时间信息和/或数量可以更全面的考虑内存条的历史故障情况,从而更准确地分析内存条的故障严重程度。
14.在一种可能的实施方式中,所述根据所述内存条的历史内存故障的信息,确定所述内存条的故障严重程度包括:将所述历史内存故障的地址信息、时间信息和/或数量输入故障模型,获得所述故障模型输出的所述内存条的故障严重程度。
15.上述实施方式,故障模型根据内存条的历史内存故障的地址信息、时间信息以及历史内存故障的数量中的一种或多种预测内存条的故障严重程度,可以提高模型预测内存条的故障严重程度的准确度。同时,通过故障模型获得内存条的故障严重程度的方式简单且准确有效。
16.在一种可能的实施方式中,所述故障模型通过下述步骤训练获得:获取内存故障的信息样本、以及所述信息样本对应的故障严重程度标签;根据所述信息样本和所述信息样本对应的故障严重程度标签,更新所述故障模型的参数。
17.上述实施方式,故障模型根据内存故障的信息样本及其对应的故障严重程度标签训练获得,可以使故障模型可以用于预测内存条的故障严重程度。
18.第二方面,本技术还提供一种内存故障处理装置。该装置包括:确定模块、识别模块和发送模块。
19.其中,确定模块用于确定内存发生的存储阵列故障的地址信息,所述地址信息中包括内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识。
20.其中,识别模块用于若所述存储阵列故障的地址信息与历史存储阵列故障的地址信息相同,根据包括所述内存颗粒的内存条的历史内存故障的信息确定所述内存条的故障严重程度。
21.其中,发送模块用于当所述故障严重程度满足预设条件时,向用户的设备发送告
警,所述告警可以用于提醒所述用户更换所述内存条、或者迁移设备的业务。
22.在一种可能的实施方式中,所述确定模块还用于:当所述内存颗粒首次发生所述存储阵列故障时,确定修复所述存储阵列故障。
23.在一种可能的实施方式中,所述识别模块具体用于:当所述存储阵列故障对应的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识,与一个或多个历史存储阵列故障对应的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识分别相同时,确定所述存储阵列故障对应的内存颗粒非首次发生所述存储阵列故障,或者,当所述存储阵列故障对应的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识,与所述一个或多个历史存储阵列故障对应的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识中存在至少一个标识不相同时,确定所述存储阵列故障对应的内存颗粒首次发生所述存储阵列故障。
24.在一种可能的实施方式中,所述历史内存故障的信息包括如下的一种或多种:历史内存故障的地址信息、历史内存故障的时间信息和历史内存故障的数量。
25.在一种可能的实施方式中,所述确定模块具体用于:将所述历史内存故障的地址信息、时间信息和/或数量输入所述故障模型,获得所述故障模型输出的所述内存条的故障严重程度。
26.在一种可能的实施方式中,所述故障模型通过下述步骤训练获得:获取所述内存条的历史故障的信息样本、以及所述信息样本对应的故障严重程度标签;根据所述信息样本和所述信息样本对应的故障严重程度标签,更新所述故障模型的参数。
27.第三方面,本技术还提供一种计算设备,包括内存和基板管理控制器,所述内存与所述基板管理控制器耦合。
28.其中,所述基板管理控制器用于:若所述内存发生的存储阵列故障的地址信息与历史存储阵列故障的地址信息相同,根据包括所述内存颗粒的内存条的历史内存故障的信息确定所述内存条的故障严重程度;所述地址信息中包括内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识;当所述故障严重程度满足预设条件时,发送告警。
29.上述实施方式,计算设备的基板管理控制器在确定内存发生存储阵列故障的地址信息与历史存储阵列故障的地址信息相同的情况下,如果发生该故障的内存条的故障严重程度满足预设条件时发送告警,而不启动该存储阵列故障的修复环节,可以避免由于修复同一内存颗粒发生的多次存储阵列故障导致计算设备性能下降的问题,还可以避免计算设备发生业务卡顿、业务中断或者甚至宕机的问题。
30.在一种可能的实施方式中,所述基板管理控制器具体用于:当所述存储阵列故障的地址信息的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识,与历史存储阵列故障对应的地址信息的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识分别相同时,确定所述存储阵列故障的地址信息与所述历史存储阵列故障的地址信息相同。
31.在一种可能的实施方式中,所述历史内存故障的信息包括如下的一种或多种:所述历史内存故障的地址信息、所述历史内存故障的时间信息或所述历史内存故障的数量。
32.在一种可能的实施方式中,所述基板管理控制器具体用于将所述历史内存故障的地址信息、时间信息和/或数量输入故障模型,获得所述故障模型输出的所述内存条的故障
严重程度。
33.第四方面,本技术还提供一种计算设备。该计算设备包括:处理器和存储器,所述处理器用于执行存储于所述存储器内的计算机程序以实现前述第一方面或者其可能的实施方式中的方法。
34.第五方面,本技术还提供一种计算机可读存储介质。该计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面或者其可能的实施方式中的方法。
35.第六方面,本技术还提供一种计算机程序产品,其特征在于,包括程序代码,当计算机运行所述计算机程序产品时,使得所述计算机执行如第一方面或者其可能的实施方式中的方法。
36.上述提供的任一种装置或计算机存储介质或计算机程序产品,均用于执行上文所提供的方法,因此,其所能达到的有益效果可参考上文提供的对应方法中的对应方案的有益效果,此处不再赘述。
附图说明
37.图1是本技术实施例提供的一种内存故障处理的场景示意图;
38.图2是本技术实施例提供的另一种内存故障处理的场景示意图;
39.图3是本技术实施例提供的一种内存故障处理方法的流程图;
40.图4是本技术实施例提供的一种内存条中的内存颗粒首次发生bank故障的处理示意图;
41.图5是本技术实施例提供的一种内存条中的内存颗粒非首次发生bank故障的处理示意图;
42.图6是本技术实施例提供的一种故障模型的训练方法的流程图;
43.图7是本技术实施例提供的一种内存故障处理装置的结构示意图;
44.图8是本技术实施例提供的一种计算设备的结构示意图;
45.图9是本技术实施例提供的一种计算设备的结构示意图。
具体实施方式
46.为了使本技术实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本技术实施例中的技术方案进行描述。
47.在本技术实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
48.在本技术实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,单独存在b,同时存在a和b这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。
49.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性
或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
50.为了更清楚的理解本技术的方案,在介绍本技术实施例之前,下面先对本技术中出现的名词进行介绍。
51.计算设备的内存指的是计算设备中的随机存取存储器(random access memory,ram),例如,在存储和互联网技术(internet technology,it)领域有广泛应用的动态随机存取存储器(dynamic random access memory,dram)。
52.内存具体根据其中内存条的数量可以分为单通道内存或者多通道内存。一般地,单通道内存由一个内存条组成,多通道内存由多个内存条组成,例如,四通道内存由四个内存条组成。其中,内存条可以是双列直插式存储模块(dual inline memory module,dimm)、单内联存储模块(single inline memory module,simm)或者内联存储模块(rambus inline memory module,rimm)。
53.每个内存条位于计算设备中的一个内存插槽内。每个内存条中可以包括多个内存列(rank),每个rank中可以包括多个内存颗粒(device),每个device中可以包括多个存储阵列(bank),每个bank中包括由多行(row)多列(column)的存储单元(cell),每个cell包含多个存储比特位(bit)。其中,device是内存条的核心部件,直接关系到内存的性能。
54.因此,计算设备的内存的物理粒度可以分为:内存条(dimm)、内存列(rank)、内存颗粒(device)、存储阵列组(bank-group)、存储阵列(bank)、存储行(row)/存储列(column)、存储单元(cell)、位(bit)。
55.在使用过程中,内存条发生内存故障可能会造成其所在的计算设备发生宕机。并且,基于前述的介绍,内存故障的类别可以包括:bit故障、cell故障;row故障、column故障、bank故障和device故障等可纠正错误(corrected error,ce),以及不可纠正错误(uncorrected error,uce)。
56.一般地,当内存条发生bank故障时,可以使用自适应型双颗粒数据纠正(adaptive double device data correction sparing,adddc)sparing的修复机制进行修复。但是,当内存条发生多次bank故障时,使用adddc sparing进行修复会对内存条的数据读写性能造成不同程度的影响。
57.以服务器为例,服务器中可以包括存储在存储芯片中的基本输入输出系统(basic input output system,bios)和基板管理控制器(baseboard management controller,bmc)。其中,bios用于收集服务器的内存的内存故障,并将内存故障发送给bmc。bmc用于根据该内存故障识别内存的故障类型,并制定相应的故障修复策略。bios还用于根据bmc制定的修复策略修复服务器的内存故障。
58.在一个实施例中,如图1所示,bmc从内存条dimm中收集内存故障,当根据该内存故障确定内存条dimm中发生了bank故障时,bmc可以向bios发送修复请求,以使bios使用adddc sparing修复机制修复该内存条dimm中的bank故障。该方案在每次确定内存发生bank故障时,均采用相同的修复策略。
59.如前所述的,服务器中的一个内存条可以包括多个device,每个device中均包括多个bank,因此,每个device均可能发生一次或多次的bank故障。该方案虽然可以修复内存
中的bank故障,但是其忽略了adddc sparing在修复bank故障后,会影响bank所在的device的数据读写速率。特别地,当内存中发生了多次bank故障、并且均位于同一device时,adddc sparing如果修复同一device中的多个bank故障,对该device的数据读写速率造成的影响更大,严重时会增加服务器业务卡顿、业务中断甚至宕机的概率。
60.本技术实施例提供一种内存故障处理方法,可以解决上述的问题。
61.本技术实施例提供的方法中,如图2所示,bmc在确定内存条dimm中发生bank故障时,识别内存条dimm中发生该bank故障的内存颗粒是否是首次发生bank故障。当确定该内存颗粒是首次发生bank故障时,修复该bank故障。当确定该内存颗粒非首次发生bank故障时,使用故障模型计算该内存条dimm的故障严重程度,当故障严重程度满足预设条件时,向用户的设备发送用于提醒用户更换内存条或者迁移内存条业务的告警。
62.下面以服务器为例,结合图3详细介绍本技术实施例提供的内存故障处理方法。当然,图3所示的内存处理方法还适用于所有有内存的电子设备,例如计算机等。
63.图3是本技术实施例提供的一种内存故障处理方法的流程图。
64.如图3所示,该方法包括如下的步骤s301-步骤s304。
65.在步骤s301中,bmc接收内存的内存故障信息。
66.服务器中的bios收集服务器的内存发送的一个或多个内存故障信息,并向服务器中的bmc发送该一个或多个内存故障信息。其中,该一个或多个内存故障信息指示服务器发生了一个或多个内存故障。内存故障信息中可以包括内存的物理颗粒的标识。
67.例如,一个内存故障信息可以包括“channel0、dimm0、rank0、device0、bank-group0、bank0、bit0”,其中,channel0、dimm0、rank0、device0、bank-group0、bank0、bit0分别表示内存通道channel、内存条dimm、内存列rank、内存颗粒device、存储阵列组bank-group、存储阵列bank、以及存储阵列中的存储比特位bit的标识,即channel、dimm、rank、device、bank-group、bank及bit后面的数字为标识。
68.在步骤s302中,bmc根据内存故障信息确定内存是否发生bank故障,并确定该bank故障的地址信息。
69.在一个实施例中,bmc可以确定一个bank下面的任意n个及n个以上的bit发生了故障(即bit故障),就认为该bank发生了故障(即bank故障)。其中,n为大于2的整数。
70.具体地,bmc可以在确定内存的2个内存故障信息的channel标识、dimm标识、rank标识、device标识、bank-group标识和bank标识均相同时,确定内存发生了bank故障,并确定该bank故障的地址信息包括的channel标识、dimm标识、rank标识、device标识。其中,bmc可以在确定当前内存故障信息的channel标识、dimm标识、rank标识、device标识、bank-group标识和bank标识,与一个历史内存故障信息的channel标识、dimm标识、rank标识、device标识、bank-group标识和bank标识分别相同时,确定内存发生了bank故障,以及根据这些物理粒度的标识确定bank故障的地址信息。
71.具体地,bmc当确定当前内存故障信息的channel标识、dimm标识、rank标识、device标识、bank-group标识和bank标识,与所有历史内存故障的channel标识、dimm标识、rank标识、device标识、bank-group标识和bank标识均存在至少一个不相同的标识时,可以确定内存未发生bank故障。
72.以n等于2为例,若当前内存故障信息为前述“channel0、dimm0、rank0、device0、
bank-group0、bank0、bit0”,历史内存故障信息1为“channel0、dimm0、rank0、device0、bank-group0、bank0、bit1”,bmc可以确定当前内存故障信息的channel标识、dimm标识、rank标识、device标识、bank-group标识、和bank标识,与历史内存故障信息1中的相同(各个标识后面的数字相同),可以确定在channel0下的dimm0的rank0的device0中的bank-group0的bank0上发生了2次bit故障,因此可以确定在channel0下dimm0中的rank0的device0发生了bank故障。该bank故障的地址信息为“channel0、dimm0、rank0、device0、bank-group0、bank0”。换言之,可以确定内存通道channel0下内存条dimm0中rank0的device0的bank-group0的bank0发生了bank故障。
73.以n等于2为例,若当前内存故障信息为前述“channel0、dimm0、rank0、device0、bank-group0、bank0、bit0发生故障”,历史内存故障信息2为“channel0、dimm0、rank0、device0、bank-group0、bank1、bit3”时,bmc可以确定当前内存故障对应的channel标识、dimm标识、rank标识、device标识、bank-group标识和bank标识中,当前内存故障的bank标识(bank0)与历史内存故障信息2中的bank标识(bank1)不相同,因此可以确定在channel0下dimm0中rank0的device0未发生bank故障。
74.在其他实施例中,bmc还可以确定一个bank下面的两个及两个以上的cell发生故障时,确定该bank发生故障。
75.在步骤s303中,bmc若确定bank故障的地址信息与历史bank故障的地址信息是否相同。
76.经过步骤s302,bmc可以确定一个内存通道下的内存条中一个内存列的一个内存颗粒发生了bank故障。接着,bmc可以判断该bank故障的地址信息中的channel标识、dimm标识、rank标识、device标识,与历史bank故障的地址信息中的channel标识、dimm标识、rank标识、device标识是否相同,根据判断结果确定存储阵列故障的地址信息与所述历史存储阵列故障的地址信息相同,即确定发生该bank故障的内存颗粒是否首次发生bank故障。
77.在一个实施例中,当确定该bank故障对应的channel标识、dimm标识、rank标识、device标识,与所有的历史bank故障对应的channel标识、dimm标识、rank标识、device标识中均存在一个标识不相同时,确定bank故障的地址信息与历史bank故障的地址信息不相同。其中,bank故障的地址信息与历史bank故障的地址信息不相同,则表示发生该bank故障的内存颗粒是首次发生bank故障。在这种情况下,bmc可以向bios发送修复请求,该修复请求指示所述bios采用adddc sparing机制修复该bank故障。
78.例如,bmc在根据如图4所示的内存故障的地址信息“channel0、dimm0、rank0、deviceo、bank-group0、bank0、bit0”确定位于channel0下dimm0中rank0的device0发生bank故障的情况下,如果通过比较该bank故障的地址信息中的标识与历史bank故障的地址信息中的标识,确定位于channel0下dimm0中rank0的device0是首次发生bank故障时,可以向bios发送修复请求,该修复请求指示所述bios采用adddc sparing机制修复该bank故障。
79.在一个实施例中,当确定该bank故障对应的channel标识、dimm标识、rank标识、device标识,与历史bank故障对应的channel标识、dimm标识、rank标识、device标识均相同时,确定bank故障的地址信息与历史bank故障的地址信息相同。其中,bank故障的地址信息与历史bank故障的地址信息相同,则表示发生该bank故障的内存颗粒非首次发生bank故障。在这种情况下,bmc执行步骤s304。
80.例如,bmc当根据如图5所示的内存故障的地址信息“channel0、dimm0、rank0、device0、bank-group0、bank1、bit0”确定位于channel0下dimm0中rank0的device0发生bank故障时,假设bmc之前已经根据图4所示的内存故障,确定位于channel0下dimm0中的rank0的device0已经发生过bank故障并且已经修复的情况下,bmc可以确定位于channel0下dimm0中的rank0的device0是第二次发生bank故障。在这种情况下,bmc执行步骤s304以计算channel0下dimm0的故障严重程度,不再向bios发送修复请求。
81.在步骤s304中,bmc使用故障模型根据内存条的历史内存故障的信息,确定内存条的故障严重程度。
82.bmc在确定内存颗粒非首次发生bank故障时,可以使用预先训练的故障模型分析该内存颗粒所在的内存条的故障严重程度。
83.具体是,bmc将该内存条的历史内存故障的信息输入该故障模型,根据该故障模型的输出确定内存条的故障严重程度。其中,历史内存故障的信息包括:历史内存故障的地址信息、时间信息和数量。并且,历史内存故障可以包括:历史bit故障、历史cell故障、历史row故障、历史colamn故障、历史bank故障和历史device故障等ce类型中的一种或多种。
84.故障模型的训练过程将在后文中结合图6进行介绍,此处不再赘述。
85.在一个实施例中,bmc可以根据内存条的历史内存故障的数量与预设故障严重程度对应的数量区间确定内存条的故障严重程度。
86.例如,故障严重程度为90对应的故障数量区间为200~300。当一个内存条的历史内存故障的数量为240条时,介于该200~300的区间内,因此,可以确定该内存条的故障严重程度为90。
87.在步骤s305中,当故障严重程度满足预设条件时,向用户的设备发送告警。
88.预设条件可以包括故障严重程度不小于故障严重程度阈值(大于阈值或者等于阈值)。bmc确定内存条的故障严重程度不小于故障严重程度阈值时,可以向用户的设备发送告警信息。该告警信息可以用于提醒用户更换内存条、或者提醒用户及时切换业务。
89.在其他实施例中,当bmc确定内存条的故障严重程度大于或等于阈值时,bmc还可以通过该内存条对应的指示灯展示告警。例如,bmc可以通过服务器的中央处理器控制该内存条对应的指示灯变为红色,以提醒用户更换该内存条。
90.在其他实施例中,当bmc确定内存条的故障严重程度大于或等于阈值时,bmc还可以在bmc日志中记录该内存颗粒非首次发生bank故障,需要更换内存颗粒所在的内存条。
91.上述的故障严重程度阈值表征内存条处于严重故障状态或者轻微故障状态的分界点。当内存条的故障严重程度大于或等于阈值,内存条处于严重故障状态,否则处于轻微故障状态。
92.在一个实施例中,可以根据多个内存条的数据读写速率为每个内存条确定一个故障严重程度。例如,当一个内存条的数据读写速率较低时,确定该内存条的故障越严重。也就是说,数据读写速率低的内存条的故障严重程度大于数据读写速率高的内存条的故障严重程度。
93.在其他实施例中,bmc还可以将内存条的数据读写速率作为是否发送告警的依据。例如,当一个内存条的数据读写速率小于或等于速率阈值时,发送该内存条的告警。
94.上述方法实施例中,在内存条级别下,对位于同一device下发生的多次bank故障,
bmc不直接采用adddc sparing的修复机制修复故障,可以避免多次对同一个内存颗粒进行adddc sparing而造成服务器性能大幅下降,也避免了系统业务提前感知而卡顿或中断。
95.上述方法实施例中,在内存条级别下,对位于同一device下发生的多次bank故障,bmc根据内存条的健康分值确定是否发送告警,可以提醒用户及时切换业务或者及时更换内存条,防止后续该内存故障由可纠正错误ce演变为不可纠正错误(uncorrected error,uce)而造成系统业务的中断。
96.图6是本技术实施例提供的一种故障模型的训练方法。该方法可以由训练设备执行。
97.如图6所示,该方法可以包括如下的步骤s601-步骤s602。
98.在步骤s601中,训练设备获取故障模型的训练样本。
99.故障模型可以采用任意一种需要监督训练的机器学习模型。
100.当故障模型为需要监督训练的机器学习模型时,训练样本可以包括:内存条的历史内存故障的信息样本、以及所述信息样本对应的故障严重程度标签。
101.历史内存故障的信息样本可以包括历史内存故障的地址信息、历史内存故障的时间信息和历史内存故障的数量中一种或多种。不同类型的历史内存故障的地址信息不同,例如cell故障的地址信息可以为“channel标识、dimm标识、rank标识、device标识、bank-group标识、bank标识、column标识、cell标识、bit标识”,bank故障的地址信息可以为“channel标识、dimm标识、rank标识、device标识、bank-group标识、bank标识”。在一个实施例中,为了提高故障分析模型的预测的准确度,上述的训练样本中可以包括同一型号的内存条的历史内存故障的信息样本及其标签。即收集同型号的内存条的训练样本训练故障分析模型,训练后的故障分析模型只用于预测该型号的内存条的故障健康程度。
102.在其他实施例中,上述的训练样本中还可以包括不同型号的内存条的历史内存故障的信息样本及其标签。
103.在其他实施例中,故障模型还可以采用无监督训练的机器学习模型或者半监督训练的机器学习模型。
104.在步骤s602中,训练设备根据训练样本更新故障模型的参数。
105.训练设备可以将历史内存故障的信息样本输入预先搭建的故障模型,获得故障模型的输出。然后,训练设备可以基于故障模型输出的故障严重程度和所述信息样本对应的故障严重程度标签,使用预先设置的损失函数计算损失值。其中,损失值表征故障模型输出的故障严重程度与故障严重程度标签之间的偏差。
106.训练设备可以根据该损失值更新故障模型的参数直至满足模型训练结束的条件。在一个实施例中,训练设备可以根据该损失值,采用梯度下降算法更新故障模型的参数,直至损失值小于预设阈值,结束故障模型的训练过程。其中,故障模型的参数包括模型中每一层采用的权重和偏置等影响模型准确度的参数。损失值的阈值可以根据故障模型的精度需求设置。
107.在一个实施例中,上述的训练设备可以是图3所示的服务器或者除该服务器外的其他计算设备。
108.当训练设备为除该服务器外的其他计算设备时,训练设备可以将训练好的故障模型发送给服务器,使得服务器在处理内存故障时可以使用该故障模型计算内存条的故障严
重程度。
109.当训练设备为除该服务器外的其他计算设备时,服务器在确定需要计算内存条的故障严重程度时,向训练设备发送该内存条的历史内存故障的信息,训练设备根据内存条的历史内存故障的信息,使用故障模型计算故障严重程度并发送给服务器。
110.在一个实施例中,训练设备还可以根据来自服务器的新的历史内存故障的信息优化训练故障模型,使得故障模型的准确度可以不断的提高。
111.基于上述图3所示的方法实施例,本技术实施例还提供一种内存故障处理装置,该内存故障处理装置用于实现图3所示的步骤。具体地,内存故障处理装置可以用于根据内存发生的内存故障确定是否向用户的设备发送告警信息,以提醒用户更换发生故障的内存条。
112.图7是本技术实施例提供的一种内存故障处理装置700的结构示意图。该内存故障处理装置700中包括:确定模块701、识别模块702和发送模块703。
113.其中,确定模块701用于确定内存发生的存储阵列故障的地址信息,所述地址信息中包括内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识。
114.其中,识别模块702用于若所述存储阵列故障的地址信息与历史存储阵列故障的地址信息相同,根据包括所述内存颗粒的内存条的历史内存故障的信息确定所述内存条的故障严重程度。
115.其中,发送模块703用于当所述故障严重程度不满足预设条件时,向用户的设备发送告警,所述告警用于提醒所述用户更换所述内存条。
116.需要说明的是,图7所示实施例提供的内存故障处理装置700在执行内存故障处理方法时,仅以上述各功能模块的划分举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的内存故障处理装置700与图3所示的内存故障处理方法的实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
117.图8是本技术实施例提供一种计算设备800的硬件结构示意图。该计算设备800包括内存、存储芯片和bmc。其中,存储芯片中存储有bios系统。在一个实施例中,存储芯片可以是flash芯片。当然,在其他实施例中,计算设备800还可以不包括存储芯片,bios系统还可以存储在中央处理器(central processing unit,cpu)中。
118.具体地,内存用于向经过bios向bmc发送内存故障,bmc用于在根据内存故障确定内存发生bank故障的情况下,对该bank故障进行处理。其中,bmc按照图3所示方法实施例中的各个步骤对该bank故障进行处理。
119.图9是本技术实施例提供一种计算设备900的硬件结构示意图。
120.该计算设备900可以为上述服务器、计算机或者上述训练设备。参见图9,该计算设备900包括处理器901、存储器902、通信接口903和总线904,处理器901、存储器902和通信接口903通过总线904彼此连接。处理器901、存储器902和通信接口903也可以采用除了总线904之外的其他连接方式连接。
121.其中,存储器902可以是各种类型的存储介质,例如随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom)、非易失性ram(non-volatile ram,nvram)、可编程rom(programmable rom,prom)、可擦除prom(erasable prom,eprom)、
电可擦除prom(electrically erasable prom,eeprom)、闪存、光存储器、硬盘等。
122.其中,处理器901可以是通用处理器,通用处理器可以是通过读取并执行存储器(例如存储器902)中存储的内容来执行特定步骤和/或操作的处理器。例如,通用处理器可以是cpu。处理器901可以包括至少一个电路,以执行图3或者图6所示实施例提供的方法的全部或部分步骤。
123.其中,通信接口903包括输入/输出(input/output,i/o)接口、物理接口和逻辑接口等用于实现计算设备900内部的器件互连的接口,以及用于实现计算设备900与其他设备(例如其他计算设备或用户设备)互连的接口。物理接口可以是以太网接口,光纤接口,atm接口等。
124.其中,总线904可以是任何类型的,用于实现处理器901、存储器902和通信接口903互连的通信总线,例如系统总线。
125.上述器件可以分别设置在彼此独立的芯片上,也可以至少部分的或者全部的设置在同一块芯片上。将各个器件独立设置在不同的芯片上,还是整合设置在一个或者多个芯片上,往往取决于产品设计的需要。本技术实施例对上述器件的具体实现形式不做限定。
126.图9所示的计算设备900仅仅是示例性的,在实现过程中,计算设备900还可以包括其他组件,本文不再一一列举。
127.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
128.可以理解的是,在本技术的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本技术的实施例的范围。应理解,在本技术实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,不应对本技术实施例的实施过程构成任何限定。
129.以上所述的具体实施方式,对本技术的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本技术的保护范围,凡在本技术的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本技术的保护范围之内。
技术特征:1.一种内存故障处理方法,其特征在于,包括:确定内存发生的存储阵列故障的地址信息,所述存储阵列故障的地址信息中包括内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识;若所述存储阵列故障的地址信息与历史存储阵列故障的地址信息相同,根据包括所述内存颗粒的内存条的历史内存故障的信息确定所述内存条的故障严重程度;当所述故障严重程度满足预设条件时,发送告警。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述地址信息与所述历史存储阵列故障的地址信息不同,发送修复所述存储阵列故障的请求。3.根据权利要求1或2所述的方法,其特征在于,所述存储阵列故障的地址信息与所述历史存储阵列故障的地址信息相同包括:当所述存储阵列故障的地址信息的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识,与所述历史存储阵列故障的地址信息的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识分别相同时,确定所述存储阵列故障的地址信息与所述历史存储阵列故障的地址信息相同。4.根据权利要求1-3任一项所述的方法,其特征在于,所述历史内存故障的信息包括如下的一种或多种:所述历史内存故障的地址信息、所述历史内存故障的时间信息或所述历史内存故障的数量。5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据包括所述内存颗粒的内存条的历史内存故障的信息确定所述内存条的故障严重程度包括:将所述历史内存故障的地址信息、时间信息和/或数量输入故障模型,获得所述故障模型输出的所述内存条的故障严重程度。6.根据权利要求5所述的方法,其特征在于,所述故障模型通过下述步骤训练获得:获取内存故障的信息样本、以及所述信息样本对应的故障严重程度标签;根据所述信息样本和所述信息样本对应的故障严重程度标签,更新所述故障模型的参数。7.一种计算设备,其特征在于,包括内存和基板管理控制器,所述内存与所述基板管理控制器耦合;所述基板管理控制器用于:若所述内存发生的存储阵列故障的地址信息与历史存储阵列故障的地址信息相同,根据包括所述内存颗粒的内存条的历史内存故障的信息确定所述内存条的故障严重程度;所述地址信息中包括内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识;当所述故障严重程度满足预设条件时,发送告警。8.根据权利要求7所述的计算设备,其特征在于,所述基板管理控制器具体用于当所述存储阵列故障的地址信息的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识,与历史存储阵列故障对应的地址信息的内存通道的标识、内存条的标识、内存列的标识、以及内存颗粒的标识分别相同时,确定所述存储阵列故障的地址信息与所述历史存储阵列故障的地址信息相同。
9.根据权利要求7或8所述的计算设备,其特征在于,所述历史内存故障的信息包括如下的一种或多种:所述历史内存故障的地址信息、所述历史内存故障的时间信息或所述历史内存故障的数量。10.根据权利要求9所述的计算设备,其特征在于,所述基板管理控制器具体用于将所述历史内存故障的地址信息、时间信息和/或数量输入故障模型,获得所述故障模型输出的所述内存条的故障严重程度。
技术总结本申请保护一种内存故障处理方法及计算设备。该方法包括:当确定内存发生bank故障的地址信息和历史bank故障的地址信息相同时,计算该内存颗粒所属的内存条的故障严重程度;当确定该内存条的故障严重程度满足预设条件时,发送该内存条的告警。该方法在确定内存条中的内存颗粒非首次发生bank故障时发送告警而不直接修复该bank故障,可以避免修复同一个内存颗粒发生的多次bank故障时计算设备可能出现业务卡顿、业务中断甚至宕机的问题。业务中断甚至宕机的问题。业务中断甚至宕机的问题。
技术研发人员:张光彪 鲍全洋 曹瑞 韦炜玮
受保护的技术使用者:超聚变数字技术有限公司
技术研发日:2022.07.21
技术公布日:2022/11/1