CN117093389A - 内存故障判定方法、装置、介质及电子设备 - Google Patents

内存故障判定方法、装置、介质及电子设备 Download PDF

Info

Publication number
CN117093389A
CN117093389A CN202210510821.4A CN202210510821A CN117093389A CN 117093389 A CN117093389 A CN 117093389A CN 202210510821 A CN202210510821 A CN 202210510821A CN 117093389 A CN117093389 A CN 117093389A
Authority
CN
China
Prior art keywords
memory
error
errors
weight
correctable
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
Application number
CN202210510821.4A
Other languages
English (en)
Inventor
叶铮
田康
严鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210510821.4A priority Critical patent/CN117093389A/zh
Publication of CN117093389A publication Critical patent/CN117093389A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请属于计算机技术领域,具体涉及一种内存故障判定方法、装置、介质及电子设备。该方法包括:获取内存上出现的内存错误的错误类型,所述错误类型包括对不可纠正错误进行降级处理得到的可纠正错误;根据所述错误类型对所述内存错误进行加权处理,得到所述内存的故障率权重;根据所述故障率权重确定所述内存是否出现故障。本申请可以提高内存工作的稳定性和可靠性。

Description

内存故障判定方法、装置、介质及电子设备
技术领域
本申请属于计算机技术领域,具体涉及一种内存故障判定方法、内存故障判定装置、计算机可读介质、电子设备以及计算机程序产品。
背景技术
内存(Memory)是计算机的重要部件,也称内存储器和主存储器,它用于暂时存放中央处理器(CPU)中的运算数据,以及与硬盘等外部存储器交换的数据。内存是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成后,CPU再将结果传送出来。
当内存出现故障时,一般会触发计算机进入系统管理模式(System ManagementMode,SMM)以便进行故障修复,严重的情况下还可能会导致计算机宕机。
发明内容
本申请提供一种内存故障判定方法、内存故障判定装置、计算机可读介质、电子设备以及计算机程序产品,目的在于提高内存工作的稳定性和可靠性。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供一种内存故障判定方法,该方法包括:
获取内存上出现的内存错误的错误类型,所述错误类型包括对不可纠正错误进行降级处理得到的可纠正错误;
根据所述错误类型对所述内存错误进行加权处理,得到所述内存的故障率权重;
根据所述故障率权重确定所述内存是否出现故障。
根据本申请实施例的一个方面,提供一种内存故障判定装置,该装置包括:
获取模块,被配置为获取内存上出现的内存错误的错误类型,所述错误类型包括对不可纠正错误进行降级处理得到的可纠正错误;
加权模块,被配置为根据所述错误类型对所述内存错误进行加权处理,得到所述内存的故障率权重;
确定模块,被配置为根据所述故障率权重确定所述内存是否出现故障。
在本申请的一些实施例中,基于以上技术方案,
根据本申请实施例的一个方面,提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上技术方案中的内存故障判定方法。
根据本申请实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行如以上技术方案中的内存故障判定方法。
根据本申请实施例的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上技术方案中的内存故障判定方法。
在本申请实施例提供的技术方案中,通过将不可纠正错误降级为可纠正错误可以避免因对不可纠正错误的信息上报而影响系统运行。在对不同类型的内存错误进行加权处理后可以得到内存的故障率权重,故障率权重可以用于标识内存错误的累积程度,进而可以根据故障率权重判断内存是否出现故障。当不同类型的内存错误累积程度较低时,可以判定内存未出现故障,保持内存正常运行,避免对业务程序的运行带来过多影响;而当不同类型的内存错误累积程度较高时,可以判定内存出现故障,由此生成用于更换内存的提示信息,避免出现非预期的系统宕机。因此,本申请实施例能够利用多类型内存错误的累积处理提高内存运行的稳定性和可靠性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了应用本申请技术方案的示例性系统架构框图。
图2示出了在本申请的相关技术中对于出现内存错误的处理方式。
图3示出了在本申请的一个实施例中对于出现内存错误的处理方式。
图4示出了本申请一个实施例中内存故障判定方法的步骤流程图。
图5示出了本申请一个实施例中基于不同的错误权重判定内存是否故障的方法步骤流程图。
图6示出了本申请一个实施例中基于统计不可纠正错误的出现次数判定内存故障的步骤流程图。
图7示出了本申请一个实施例中基于统计出现可纠正错误的地址数量判断内存是否故障的步骤流程图。
图8示出了本申请一个实施例在内存巡检的基础上执行内存故障判定方法的步骤流程图。
图9示出了本申请一个实施例在内存巡检和读写检测的基础上执行内存故障判定方法的步骤流程图。
图10示出了本申请一个实施例中基于PFA策略对内存进行故障判定的步骤流程图。
图11示出了本申请实施例在一些应用场景中使用的内存颗粒的内存地址数量。
图12示意性地示出了本申请实施例提供的内存故障判定装置的结构框图。
图13示意性示出了适于用来实现本申请实施例的电子设备的计算机系统结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本申请的技术方案中涉及的相关技术术语说明如下。
CE:Correctable error,可纠正错误。计算机运行过程中发生了内存错误,但该内存错误可以通过ECC(Error Checking and Correcting)来纠正。所以有时又将CE称为ECC错误。偶发性的地址命令错误、x4颗粒内存的单颗粒多bit错误、x8颗粒内存的单颗粒单bit错误等都有可能导致CE。
UCE:Uncorrectable error,不可纠正错误。计算机在运行过程中,发生了错误并且错误无法通过ECC来纠正。x8颗粒内存的多bit错误、x4颗粒内存的多颗粒多bit错误、持续的地址命令错误等都有可能导致UCE。
PS:Memory Patrol Scrubbing,内存巡查清理。通过SSR引擎定期按照设定的频率和步长扫描内存中可能出现的错误。如果扫描到可以纠正的错误,便会把发现错误的数据纠正后写回去,避免错误积累,降低不可纠正错误出现的概率。
PS CE:内存巡检可纠正错误。
RW CE:内存读写可纠正错误。计算机在运行过程中,处理业务时会进行数据交换,内存出现故障导致数据错误。
MCA:Machine Check Architecture,机器校验架构。用于对计算机硬件进行自检,并在发现硬件错误的时候发出中断或异常,可以探测如系统总线错误,ECC错误,奇偶校验错误,cache错误,TLB错误等硬件错误。
eMCA:Enhanced Machine Check Architecture,增强机器校验架构。
eMCA2:Enable Enhanced Machine Check Architecture Gen 2,第二代增强机器校验架构。
MCE:Machine Check Exception,机器检测异常。
SRAO:Software Recovery Action Optional,可选软件恢复动作。一种UCR(uncorrected recoverable machine check errors)错误,会通过MCE的方式进行通知,系统可以选择不进行恢复动作也可以选择进行,不是强制的,并且不需要从发生MCE的地方继续重新执行。SRAO错误意味着系统中有错误数据,但是数据并没有被使用,处理器还是处于有效状态。SRAO提供了更多的信息让系统软件进行恢复动作。
CMCI:Corrected Machine Check Error Interrupt,可纠正机器检测错误中断。从45nm Intel 64处理器开始引入加入到MCA的一种机制,它将错误上报的阈值操作从原始的软件轮询变成了硬件中断触发。
SMI:System management interrupt,系统管理中断。在eMCA2中可以包括针对可纠正错误故障上报的中断类型CSMI,以及针对不可纠正可恢复故障上报的中断类型MSMI。
PFA:Predictive Fault Analyzer,预测故障分析。
SMM:System Management Mode,系统管理模式。
BMC:Baseboard Management Controller,基板管理控制器。是独立于服务器系统之外的小型操作系统,是一个集成在主板上的芯片,也有产品是通过PCIE等形式插在主板上,对外表现形式只是一个标准的RJ45网口,拥有独立IP的固件系统。服务器集群一般使用BMC指令进行大规模无人值守操作,包括服务器的远程管理、监测、安装、重启等。
OS:Operating System,操作系统。操作系统是管理计算机硬件与软件资源的计算机程序,操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务,操作系统也可以提供一个让用户与系统交互的操作界面。
图1示意性地示出了应用本申请技术方案的示例性系统架构框图。
如图1所示,系统架构100可以包括终端设备110、网络120和服务器130。终端设备110可以包括智能手机、平板电脑、笔记本电脑、台式电脑智能音箱、智能穿戴设备、智能车载设备、智能支付终端等各种电子设备。服务器130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。网络120可以是能够在终端设备110和服务器130之间提供通信链路的各种连接类型的通信介质,例如可以是有线通信链路或者无线通信链路。
根据实现需要,本申请实施例中的系统架构可以具有任意数目的终端设备、网络和服务器。例如,服务器130可以是由多个服务器设备组成的服务器群组。另外,本申请实施例提供的技术方案可以应用于终端设备110,也可以应用于服务器130,或者可以由终端设备110和服务器130共同实施,本申请对此不做特殊限定。
图2示出了在本申请的相关技术中对于出现内存错误的处理方式。基于Intel的X86服务器,一般采用的是EMCA2模式。
如图2所示,在EMCA2模式下,当内存出现内存读写可纠正错误RW CE或者内存巡检可纠正错误PS CE时,可以执行如下的内存错误处理步骤。
步骤S211:生成CSMI。
步骤S212:触发系统进入SMM模式,将内存错误上报给BMC处理。
步骤S213:将生成的CMCI上报给OS。
基于以上内存错误的处理方式可知,在本申请的相关技术中,内存CE对于业务的影响被放大。
内存CE是硬件可纠正的错误,不应该对系统的正常运行造成严重的影响。内存CE(内存巡检CE,内存读写CE)触发生成CSMI使系统进入SMM模式,在SMM模式下,所有的CPUcore都会进入停止指令执行状态,系统进入SMM会导致业务程序得不到CPU,业务暂停;同时在SMM模式下,固件Firmware还需要通过BMC通道,将日志信息上报给BMC,这进一步拉长了SMM的时间,造成业务中断的时间变长。在极端情况下,CE会导致X86系统进入SMM达数秒,从而导致CPU上运行的业务暂停达数秒,严重影响业务的运行。
继续参考图2所示,在EMCA2模式下,当内存出现不可纠正错误UCE时,可以执行如下的内存错误处理步骤。
步骤S221:生成MSMI。
步骤S222:触发系统进入SMM模式,将内存错误上报给BMC处理。
步骤S223:将生成的MCE上报给OS。
基于以上内存错误的处理方式可知,在本申请的相关技术中,内存巡检UCE对于业务的影响也被放大。
针对内存巡检UCE发现的问题,如果发生巡检的数据,后面不会被消费到,或者发生巡检错误的数据处于非关键区域,巡检到的错误数据,不一定会对业务的运行造成影响。在支持Advanced RAS的处理器上,巡检UCE被处理成SRAO,此种类型的错误,也会生成SMI,让X86系统进入SMM模式,系统进入SMM模式会导致业务暂停。同时固件Firmware还需要通过BMC通道,将日志信息上报给BMC,这进一步拉长了SMM的时间,造成业务中断的时间变长。而在不支持Advanced RAS的处理器上,如果将巡检UCE直接上报成UCE,将会导致系统宕机,影响业务的运行。
图3示出了在本申请的一个实施例中对于出现内存错误的处理方式。
如图3所示,当出现内存巡检PSUCE时,本申请实施例可以首先通过配置寄存器,让CPU将其降级为CE进行上报。在此基础上,内存CE可以包括由PSUCE降级得到的CE以及PSCE、RW CE等三种类型。针对三种不同类型的内存CE可以执行如下的处理步骤。
步骤S301:依照多个维度进行错误信息统计。统计维度可以包括内存CE的错误类型、内存CE的频率、内存CE地址是否具有扩散趋势等。
步骤S302:为不同类型的内存CE配置不同的权重,并基于配置的权重对内存CE进行PFA以及故障判定。
步骤S303:上报内存故障或者上报PFA错误,生成更换内存的提示信息。
基于以上示例的本申请对于内存错误的处理方式可知,针对相关技术中存在的问题,本申请一方面可以降低内存巡检UCE、内存巡检CE、内存读写CE在业务侧的感知和对业务的影响,具体措施有减少CE的打印,减少系统由于这些事件进入SMM的时间;另外一方面又可以依托于内存CE的频率、地址等信息及时发现有问题的内存,避免内存故障形成非预期宕机,造成对业务的影响。本申请实施例通过在上报和预测之间依照内存的技术特性作出平衡,能够做到既不影响业务的正常运行,又能够在内存故障造成宕机以前,提前将故障内存上报出来,执行更换。因此,能够提高内存运行的稳定性和可靠性。
下面结合具体实施方式对本申请提供的内存故障判定方法、内存故障判定装置、计算机可读介质、电子设备以及计算机程序产品等技术方案做出详细说明。
图4示出了本申请一个实施例中内存故障判定方法的步骤流程图,该内存故障判定方法可以由终端设备或者服务器执行,也可以由终端设备和服务器共同执行,本申请实施例以服务器上执行的内存故障判定方法作为示例进行说明。
如图4所示,本申请实施例提供的内存故障判定方法可以包括如下的步骤S410至步骤S430。
步骤S410:获取内存上出现的内存错误的错误类型,错误类型包括对不可纠正错误进行降级处理得到的可纠正错误。
内存错误一般可以包括可纠正错误CE和不可纠正错误UCE两种错误类型。相比于可纠正错误,当内存上出现不可纠正错误时,表示这部分错误内容无法通过ECC(ErrorChecking and Correcting)机制来进行纠正。一旦CPU上报错误类型为UCE,若触发系统进入系统管理模式SMM,将导致系统运行业务的中断,严重地情况还会导致系统宕机而完全无法工作。针对这一问题,本申请实施例控制寄存器中的错误上报类型,对不可纠正错误进行降级处理形成可纠正错误。将内存上可能出现的内存错误的错误类型限制为两种:第一种是原始的可纠正错误,第二种是由不可纠正错误降级形成的可纠正错误。通过控制错误类型,可以减少甚至完全避免不可纠正错误的上报,降低系统因不可纠正错误而进入系统管理模式的时间长度,避免出现系统宕机的情况。
在本申请的一个实施例中,根据内存错误的发现途径,原始的可纠正错误又可以包括内存巡检过程中出现的巡检可纠正错误以及内存读写过程中出现的读写可纠正错误。在此基础上,本申请实施例中内存错误的错误类型可以包括三种,即:巡检可纠正错误、读写可纠正错误以及不可纠正错误降级形成的可纠正错误。
步骤S420:根据错误类型对内存错误进行加权处理,得到内存的故障率权重。
针对不同错误类型的内存错误,可以为其分配不同大小的错误权重。对累积得到的各种内存错误的错误权重进行融合处理,可以得到内存的故障率权重。在本申请的一个实施例中,可以为不可纠正错误降级形成的可纠正错误分配第一错误权重,为巡检可纠正错误分配第二错误权重,并为读写可纠正错误分配第三错误权重。其中,第一错误权重大于第二错误权重,并且第二错误权重大于第三错误权重。
步骤S430:根据故障率权重确定内存是否出现故障。
在本申请的一个实施例中,当故障率权重大于预设的权重阈值时,可以判定内存故障;当故障率权重小于或等于该权重阈值时,可以判定内存未出现故障。
在本申请实施例提供的内存故障判定方法中,通过将不可纠正错误降级为可纠正错误可以避免因对不可纠正错误的信息上报而影响系统运行。在对不同类型的内存错误进行加权处理后可以得到内存的故障率权重,故障率权重可以用于标识内存错误的累积程度,进而可以根据故障率权重判断内存是否出现故障。当不同类型的内存错误累积程度较低时,可以判定内存未出现故障,保持内存正常运行,避免对业务程序的运行带来过多影响;而当不同类型的内存错误累积程度较高时,可以判定内存出现故障,由此生成用于更换内存的提示信息,避免出现非预期的系统宕机。因此,本申请实施例能够利用多类型内存错误的累积处理提高内存运行的稳定性和可靠性。
在本申请的一个实施例中,内存错误的错误类型可以包括在内存巡检过程或者内存读写过程中检测到的可纠正错误以及对不可纠正错误进行降级处理得到的可纠正错误。图5示出了本申请一个实施例中基于不同的错误权重判定内存是否故障的方法步骤流程图。如图5所示,在基于对不同错误类型的内存错误分配错误权重的基础上,基于错误权重的累加以判定内存是否故障的方法可以包括如下的步骤S510至步骤S550。
步骤S510:获取内存上出现的内存错误的错误类型,错误类型包括对不可纠正错误进行降级处理得到的可纠正错误,以及在内存巡检过程或者内存读写过程中检测到的可纠正错误。
本申请实施例控制寄存器中的错误上报类型,对不可纠正错误进行降级处理形成可纠正错误。将内存上可能出现的内存错误的错误类型限制为两种:第一种是原始的可纠正错误,第二种是由不可纠正错误降级形成的可纠正错误。通过控制错误类型,可以减少甚至完全避免不可纠正错误的上报,降低系统因不可纠正错误而进入系统管理模式的时间长度,避免出现系统宕机的情况。
在一些可选的实施方式中,根据内存错误的发现途径,原始的可纠正错误又可以包括内存巡检过程中出现的巡检可纠正错误以及内存读写过程中出现的读写可纠正错误。在此基础上,本申请实施例中内存错误的错误类型可以包括三种,即:巡检可纠正错误、读写可纠正错误以及不可纠正错误降级形成的可纠正错误。
步骤S520:当错误类型是对不可纠正错误进行降级处理得到的可纠正错误时,根据检测到不可纠正错误的出现次数确定第一权重,第一权重与出现次数呈正相关关系。
针对将不可纠正错误进行降级处理得到的可纠正错误,由于对不可纠正错误进行了降级处理,处理器不会向系统上报不可纠正错误,而如果这一类型的内存错误累积次数过多,内存错误无法得到及时地响应处理,将容易导致系统宕机等严重故障。本申请实施例通过为不可纠正错误降级形成的可纠正错误分配与出现次数呈正相关关系的第一权重,可以基于第一权重的数值大小反映不可纠正错误的出现次数的多寡,例如可以将预设的权重系数与不可纠正错误的出现次数相乘得到第一权重,预设的权重系数为大于1的常数。当不可纠正错误的出现次数越多时,第一权重越大,而当其出现次数越少时,第一权重越小。
在一些可选的实施方式中,本申请实施例也可以根据检测到不可纠正错误的出现频率确定第一权重,出现频率表示在单位时间长度内出现不可纠正错误的次数。
在一些可选的实施方式中,当同一内存地址或者同一内存区域在一个或者多个时间节点上出现多次不可纠正错误时,需要统计每个不可就纠正错误的出现次数。例如,同一内存地址在m个不同的时间节点上均出现不可纠正错误,则不可纠正错误的出现次数统计为m;又例如,同一内存区域在相同或者不同的时间节点上出现n次不纠正错误,则不可纠正错误的出现次数统计为n。在本申请实施例中,若两个不可纠正错误的任意一项关联参数不同,即标记为不同的不可纠正错误,因而进行多次计数。其中,关联参数可以包括内存地址、内存区域、内存错误的出现时间等参数中的至少一项。
步骤S530:当错误类型是在内存巡检过程或者内存读写过程中检测到的可纠正错误时,根据检测到可纠正错误的地址数量确定第二权重,第二权重与地址数量呈正相关关系。
针对内存巡检过程或者内存读写过程中检测到的可纠正错误,由于可纠正错误能够基于ECC机制自行修复,若这类原始可纠正错误只局限于一个内存地址或者局限于一定范围的内存区域上,则可以确定这类原始可纠正错误不会向其他内存地址或者内存区域进行扩散。因此,若同一内存地址在不同的时间节点上出现多次可纠正错误,则多次可纠正错误的地址数量仍然标记为1。
本申请实施例通过为可纠正错误分配与地址数量呈正相关关系的第二权重,可以基于第二权重的数值大小反映可纠正错误的出现地址的扩散程度,例如可以将预设的权重系数与出现可纠正错误的地址数量相乘得到第二权重,预设的权重系数为大于1的常数。当出现可纠正错误的地址数量越多时,第二权重越大,而出现可纠正错误的地址数量越少时,第二权重越小。
步骤S540:根据第一权重和第二权重确定内存的故障率权重。
本申请实施例可以将第一权重和第二权重相加得到内存的故障率权重,或者也可以依据预设的比例系数对第一权重和第二权重进行加权运算得到内存的故障率权重。
步骤S550:根据故障率权重确定内存是否出现故障。
在本申请的一个实施例中,当故障率权重大于预设的权重阈值时,可以判定内存故障;当故障率权重小于或等于该权重阈值时,可以判定内存未出现故障。
在本申请实施例提供的技术方案中,将内存错误的错误类型划分为三种类型,即:对不可纠正错误进行降级处理得到的可纠正错误、在内存巡检过程中检测到的可纠正错误以及在内存读写过程中检测到的可纠正错误。
针对三种不同类型的内存错误可以从内存错误的出现次数和出现内存错误的地址数量两个维度进行加权处理后得到内存的故障率权重。其中,对不可纠正错误进行降级处理得到的可纠正错误对应的第一权重与其出现次数呈正相关关系,即不可纠正错误的出现频次越高,对应的第一权重越大;在内存巡检过程或者内存读写过程中检测到的可纠正错误对应的第二权重与其地址数量呈正相关关系,即出现这类不可纠正错误的地址范围越大,对应的第二权重越大。
图6示出了本申请一个实施例中基于统计不可纠正错误的出现次数判定内存故障的步骤流程图。如图6所示,当检测到内存错误的错误类型包括对不可纠正错误进行降级处理得到的可纠正错误时,可以按照如下的步骤S610至步骤S670判断内容是否出现故障。
步骤S610:获取内存上出现的内存错误的错误类型,错误类型包括对不可纠正错误进行降级处理得到的可纠正错误,以及在内存巡检过程或者内存读写过程中检测到的可纠正错误。
本申请实施例控制寄存器中的错误上报类型,对不可纠正错误进行降级处理形成可纠正错误。将内存上可能出现的内存错误的错误类型限制为两种:第一种是原始的可纠正错误,第二种是由不可纠正错误降级形成的可纠正错误。通过控制错误类型,可以减少甚至完全避免不可纠正错误的上报,降低系统因不可纠正错误而进入系统管理模式的时间长度,避免出现系统宕机的情况。
在一些可选的实施方式中,根据内存错误的发现途径,原始的可纠正错误又可以包括内存巡检过程中出现的巡检可纠正错误以及内存读写过程中出现的读写可纠正错误。在此基础上,本申请实施例中内存错误的错误类型可以包括三种,即:巡检可纠正错误、读写可纠正错误以及不可纠正错误降级形成的可纠正错误。
步骤S620:获取用于对不可纠正错误进行加权处理的第一错误权值。
在本申请的一个实施例中,获取用于对内存进行内存巡检的一个或者多个巡检周期;根据检测到不可纠正错误的出现时间和巡检周期确定不可纠正错误的巡检周期数,巡检周期数表示出现时间与当前时间间隔的巡检周期的周期数量;根据巡检周期数确定用于对不可纠正错误进行加权处理的第一错误权值,第一错误权值与巡检周期数呈负相关关系。
巡检周期例如可以是24小时,即每隔24小时可以进行一次内存巡检,在每个巡检周期内记录检测得到的不可纠正错误。根据检测到不可纠正错误的出现时间可以确定其与当前时间间隔的巡检周期数,巡检周期数越大,该不可纠正错误对应的第一错误权值越小。例如,当前巡检周期中检测到的不可纠正错误可以具有最大的第一错误权重,在多个周期以前检测到的不可纠正错误将具有相对较小的第一错误权值,并且间隔周期越长,对应的第一错误权值越小。
在本申请的一个实施例中,根据巡检周期数确定第一错误权值的方法可以包括:获取巡检周期数与至少一个周期数阈值的数量关系;根据数量关系确定内存错误所在的周期数范围;根据周期数范围确定第一错误权值。
举例而言,本申请实施例在一个应用场景中可以配置0、2和10三项周期数阈值,由此可以确定四个周期数范围,即:等于0、大于0小于2、大于等于2小于10、大于等于10。在此基础上,不同的周期数范围可以对应分配不同的第一错误权值。例如,当前巡检周期中检测到的不可纠正错误可以分配第一错误权值0.5,在0~2个巡检周期以前检测到的不可纠正错误可以分配第一错误权值0.3,在2~10个巡检周期以前检测到的不可纠正错误可以分配第一错误权值0.1,在10个巡检周期以前检测到的不可纠正错误可以分配第一错误权值0.01。
步骤S630:根据检测到不可纠正错误的出现时间,统计不可纠正错误的出现次数。
在本申请的一个实施例中,获取用于对内存进行内存巡检的一个或者多个巡检周期;分别统计在各个巡检周期内检测到的不可纠正错误的出现次数。
步骤S640:根据第一错误权值对出现次数进行加权处理得到第一权重,第一权重与出现次数呈正相关关系。
针对各个巡检周期中检测到的不可纠正内存错误的出现次数以及对应为其分配的第一错误权值,可以通过加权求和的方式得到第一权重。
步骤S650:根据检测到可纠正错误的地址数量确定第二权重,第二权重与地址数量呈正相关关系。
针对内存巡检过程或者内存读写过程中检测到的可纠正错误,由于可纠正错误能够基于ECC机制自行修复,若这类原始可纠正错误只局限于一个内存地址或者局限于一定范围的内存区域上,则可以确定这类原始可纠正错误不会向其他内存地址或者内存区域进行扩散。因此,若同一内存地址在不同的时间节点上出现多次可纠正错误,则多次可纠正错误的地址数量仍然标记为1。
本申请实施例通过为可纠正错误分配与地址数量呈正相关关系的第二权重,可以基于第二权重的数值大小反映可纠正错误的出现地址的扩散程度,例如可以将预设的权重系数与出现可纠正错误的地址数量相乘得到第二权重,预设的权重系数为大于1的常数。当出现可纠正错误的地址数量越多时,第二权重越大,而出现可纠正错误的地址数量越少时,第二权重越小。
步骤S660:根据第一权重和第二权重确定内存的故障率权重。
本申请实施例可以将第一权重和第二权重相加得到内存的故障率权重,或者也可以依据预设的比例系数对第一权重和第二权重进行加权运算得到内存的故障率权重。
步骤S670:根据故障率权重确定内存是否出现故障。
在本申请的一个实施例中,当故障率权重大于预设的权重阈值时,可以判定内存故障;当故障率权重小于或等于该权重阈值时,可以判定内存未出现故障。
在本申请实施例提供的技术方案中,通过阶梯式划分周期数范围的方式为不同巡检周期内检测到的不可纠正错误分配不同的第一错误权值,一方面可以降低出现频率较低的不可纠正错误对于权重的影响程度,另一方面可以降低次数统计以及权重运算的计算量,提高计算效率,缩短因内存错误导致系统中断的时长。
图7示出了本申请一个实施例中基于统计出现可纠正错误的地址数量判断内存是否故障的步骤流程图。如图7所示,当检测到内存错误的错误类型包括内存巡检过程或者内存读写过程中出现的可纠正错误时,可以按照如下的步骤S710至步骤S770判断内容是否出现故障。
步骤S710:获取内存上出现的内存错误的错误类型,错误类型包括对不可纠正错误进行降级处理得到的可纠正错误,以及在内存巡检过程或者内存读写过程中检测到的可纠正错误。
本申请实施例控制寄存器中的错误上报类型,对不可纠正错误进行降级处理形成可纠正错误。将内存上可能出现的内存错误的错误类型限制为两种:第一种是原始的可纠正错误,第二种是由不可纠正错误降级形成的可纠正错误。通过控制错误类型,可以减少甚至完全避免不可纠正错误的上报,降低系统因不可纠正错误而进入系统管理模式的时间长度,避免出现系统宕机的情况。
在一些可选的实施方式中,根据内存错误的发现途径,原始的可纠正错误又可以包括内存巡检过程中出现的巡检可纠正错误以及内存读写过程中出现的读写可纠正错误。在此基础上,本申请实施例中内存错误的错误类型可以包括三种,即:巡检可纠正错误、读写可纠正错误以及不可纠正错误降级形成的可纠正错误。
步骤S720:根据检测到不可纠正错误的出现次数确定第一权重,第一权重与出现次数呈正相关关系。
本申请实施例通过为不可纠正错误降级形成的可纠正错误分配与出现次数呈正相关关系的第一权重,可以基于第一权重的数值大小反映不可纠正错误的出现次数的多寡,例如可以将预设的权重系数与不可纠正错误的出现次数相乘得到第一权重,预设的权重系数为大于1的常数。当不可纠正错误的出现次数越多时,第一权重越大,而当其出现次数越少时,第一权重越小。
在一些可选的实施方式中,本申请实施例也可以根据检测到不可纠正错误的出现频率确定第一权重,出现频率表示在单位时间长度内出现不可纠正错误的次数。
在一些可选的实施方式中,当同一内存地址或者同一内存区域在一个或者多个时间节点上出现多次不可纠正错误时,需要统计每个不可就纠正错误的出现次数。例如,同一内存地址在m个不同的时间节点上均出现不可纠正错误,则不可纠正错误的出现次数统计为m;又例如,同一内存区域在相同或者不同的时间节点上出现n次不纠正错误,则不可纠正错误的出现次数统计为n。在本申请实施例中,若两个不可纠正错误的任意一项关联参数不同,即标记为不同的不可纠正错误,因而进行多次计数。其中,关联参数可以包括内存地址、内存区域、内存错误的出现时间等参数中的至少一项。
步骤S730:根据检测到可纠正错误的出现地址,统计内存上出现可纠正错误的地址数量。
当检测到可纠正错误时,可以记录每个可纠正错误对应的内存地址,进而统计得到内存上出现可纠正错误的地址数量。当同一个内存地址在不同的时间节点出现多次不可纠正错误时,不会增加对应的地址数量。
步骤S740:获取用于对可纠正错误进行加权处理的第二错误权值。
在本申请的一个实施例中,获取用于对内存进行内存巡检的一个或者多个巡检周期;根据检测到可纠正错误的出现时间和巡检周期确定可纠正错误的巡检周期数,巡检周期数表示出现时间与当前时间间隔的巡检周期的周期数量;根据巡检周期数确定用于对可纠正错误进行加权处理的第二错误权值,第二错误权值与巡检周期数呈负相关关系。
在本申请的一个实施例中,根据巡检周期数确定第二错误权值的方法可以包括:获取巡检周期数与至少一个周期数阈值的数量关系;根据数量关系确定内存错误所在的周期数范围;根据周期数范围确定第二错误权值。
步骤S750:根据第二错误权值对地址数量进行加权处理得到第二权重。
针对内存上不同内存地址检测到的可纠正内存错误的地址数量以及对应为其分配的第二错误权值,可以通过加权求和的方式得到第二权重。
当出现可纠正内存错误的地址数量较少时,表示可纠正错误仅出现在较小的内存范围内,其向外部扩散的趋势也较小,因此可以确定数值相对较小的第二权重,降低可纠正错误对于内存运行的影响。当出现可纠正错误的地址数量较多时,表示可纠正错误出现在较大的内存范围内,其向外部扩散的趋势也较大,因此可以确定数值相对较大的第二权重,提高其在内存故障判断中的重要程度。
步骤S760:根据第一权重和第二权重确定内存的故障率权重。
本申请实施例可以将第一权重和第二权重相加得到内存的故障率权重,或者也可以依据预设的比例系数对第一权重和第二权重进行加权运算得到内存的故障率权重。
步骤S770:根据故障率权重确定内存是否出现故障。
在本申请的一个实施例中,当故障率权重大于预设的权重阈值时,可以判定内存故障;当故障率权重小于或等于该权重阈值时,可以判定内存未出现故障。
图8示出了本申请一个实施例在内存巡检的基础上执行内存故障判定方法的步骤流程图,该内存故障判定方法可以由终端设备或者服务器执行,也可以由终端设备和服务器共同执行,本申请实施例以服务器上执行的内存故障判定方法作为示例进行说明。如图8所示,本申请实施例中基于内存巡检进行内存故障判定的方法可以包括如下的步骤S810至步骤S850。
步骤S810:按照预设的巡检周期对内存进行内存巡检,以确定内存上的各个内存地址是否存在不可纠正错误或者可纠正错误。
内存巡检是指内存控制器按照BIOS(基本输入输出系统,Basic Input OutputSystem)配置的频率周期性发起内存读取请求,如果发现内存数据中的可纠正错误时,将错误纠正并把正确数据写回到内存的操作。
在本申请的一个实施例中,对内存进行内存巡检可以包括指令式巡检(DemandScrubbing)或者定期巡检(Patrol Scrubbing)。指令式巡检Demand Scrubbing的实现机制是:读数据的时候,如果读出数据存在不可纠正的错误,会重新读一次。如果读出的数据存在可纠正的错误,将纠正后的数据重新写入到内存中。通过重读和及时纠正单bit错误的方式,降低不可纠正错误出现的概率。定期巡检Patrol Scrubbing的实现机制是:CHA内部有一个SSR引擎(Sparing和Patrol Scrubbing共用)。SSR引擎按照设定的频率和步长,在空闲的时候读取内存中的内容,如果读出的数据存在可以纠正的错误,将纠正后的数据重新写入到内存中。通过及时纠正单bit错误的方式,降低不可纠正错误出现的概率。CHA包括负责管理缓存内容的CA(cache agent)和负责内存读写操作的HA(home agent)。
步骤S820:当检测到内存上存在不可纠正错误时,对不可纠正错误进行降级处理得到可纠正错误。
通过在BIOS中进行芯片配置,可以在检测到巡检UCE时,将内存的巡检UCE上报成巡检CE。
步骤S830:获取内存上出现的内存错误的错误类型,错误类型包括对不可纠正错误进行降级处理得到的可纠正错误以及在内存巡检过程中检测到的可纠正错误。
本申请实施例控制寄存器中的错误上报类型,对不可纠正错误进行降级处理形成可纠正错误。将内存上可能出现的内存错误的错误类型限制为两种:第一种是原始的可纠正错误,第二种是由不可纠正错误降级形成的可纠正错误。通过控制错误类型,可以减少甚至完全避免不可纠正错误的上报,降低系统因不可纠正错误而进入系统管理模式的时间长度,避免出现系统宕机的情况。步骤S840:根据错误类型对内存错误进行加权处理,得到内存的故障率权重。
当错误类型是对不可纠正错误进行降级处理得到的可纠正错误时,根据检测到不可纠正错误的出现次数确定第一权重,第一权重与出现次数呈正相关关系。针对将不可纠正错误进行降级处理得到的可纠正错误,由于对不可纠正错误进行了降级处理,处理器不会向系统上报不可纠正错误,而如果这一类型的内存错误累积次数过多,内存错误无法得到及时地响应处理,将容易导致系统宕机等严重故障。本申请实施例通过为不可纠正错误降级形成的可纠正错误分配与出现次数呈正相关关系的第一权重,可以基于第一权重的数值大小反映不可纠正错误的出现次数的多寡,例如可以将预设的权重系数与不可纠正错误的出现次数相乘得到第一权重,预设的权重系数为大于1的常数。当不可纠正错误的出现次数越多时,第一权重越大,而当其出现次数越少时,第一权重越小。
当错误类型是在内存巡检过程中检测到的可纠正错误时,根据检测到可纠正错误的地址数量确定第二权重,第二权重与地址数量呈正相关关系。
针对内存巡检过程中检测到的可纠正错误,由于可纠正错误能够基于ECC机制自行修复,若这类原始可纠正错误只局限于一个内存地址或者局限于一定范围的内存区域上,则可以确定这类原始可纠正错误不会向其他内存地址或者内存区域进行扩散。因此,若同一内存地址在不同的时间节点上出现多次可纠正错误,则多次可纠正错误的地址数量仍然标记为1。本申请实施例通过为可纠正错误分配与地址数量呈正相关关系的第二权重,可以基于第二权重的数值大小反映可纠正错误的出现地址的扩散程度,例如可以将预设的权重系数与出现可纠正错误的地址数量相乘得到第二权重,预设的权重系数为大于1的常数。当出现可纠正错误的地址数量越多时,第二权重越大,而出现可纠正错误的地址数量越少时,第二权重越小。
步骤S850:根据故障率权重确定内存是否出现故障。
本申请实施例可以将第一权重和第二权重相加得到内存的故障率权重,或者也可以依据预设的比例系数对第一权重和第二权重进行加权运算得到内存的故障率权重。
本申请实施例基于内存巡检的结果可以对降级处理得到的可纠正错误和巡检得到的可纠正错误进行加权累积,确定对应的故障率权重。针对两种不同类型的内存错误可以从内存错误的出现次数和出现内存错误的地址数量两个维度进行加权处理后得到内存的故障率权重。其中,对不可纠正错误进行降级处理得到的可纠正错误对应的第一权重与其出现次数呈正相关关系,即不可纠正错误的出现频次越高,对应的第一权重越大;在内存巡检过程中检测到的可纠正错误对应的第二权重与其地址数量呈正相关关系,即出现这类不可纠正错误的地址范围越大,对应的第二权重越大。
图9示出了本申请一个实施例在内存巡检和读写检测的基础上执行内存故障判定方法的步骤流程图,该内存故障判定方法可以由终端设备或者服务器执行,也可以由终端设备和服务器共同执行,本申请实施例以服务器上执行的内存故障判定方法作为示例进行说明。如图9所示,本申请实施例中基于内存巡检和读写检测进行内存故障判定的方法可以包括如下的步骤S910至步骤S960。
步骤S910:按照预设的巡检周期对内存进行内存巡检,以确定内存上的各个内存地址是否存在不可纠正错误或者可纠正错误。
内存巡检是指内存控制器按照BIOS(基本输入输出系统,Basic Input OutputSystem)配置的频率周期性发起内存读取请求,如果发现内存数据中的可纠正错误时,将错误纠正并把正确数据写回到内存的操作。
在本申请的一个实施例中,对内存进行内存巡检可以包括指令式巡检(DemandScrubbing)或者定期巡检(Patrol Scrubbing)。指令式巡检Demand Scrubbing的实现机制是:读数据的时候,如果读出数据存在不可纠正的错误,会重新读一次。如果读出的数据存在可纠正的错误,将纠正后的数据重新写入到内存中。通过重读和及时纠正单bit错误的方式,降低不可纠正错误出现的概率。定期巡检Patrol Scrubbing的实现机制是:CHA内部有一个SSR引擎(Sparing和Patrol Scrubbing共用)。SSR引擎按照设定的频率和步长,在空闲的时候读取内存中的内容,如果读出的数据存在可以纠正的错误,将纠正后的数据重新写入到内存中。通过及时纠正单bit错误的方式,降低不可纠正错误出现的概率。CHA包括负责管理缓存内容的CA(cache agent)和负责内存读写操作的HA(home agent)。
步骤S920:当检测到内存上存在不可纠正错误时,对不可纠正错误进行降级处理得到可纠正错误。
通过在BIOS中进行芯片配置,可以在检测到巡检UCE时,将内存的巡检UCE上报成巡检CE。
步骤S930:实时检测在内存上进行的内存读写操作,以确定内存上的各个内存地址是否存在可纠正错误。
步骤S940:获取内存上出现的内存错误的错误类型,错误类型包括对不可纠正错误进行降级处理得到的可纠正错误、在内存巡检过程中检测到的可纠正错误以及在内存读写过程中检测到的可纠正错误。
本申请实施例控制寄存器中的错误上报类型,对不可纠正错误进行降级处理形成可纠正错误。将内存上可能出现的内存错误的错误类型限制为两种:第一种是原始的可纠正错误,第二种是由不可纠正错误降级形成的可纠正错误。通过控制错误类型,可以减少甚至完全避免不可纠正错误的上报,降低系统因不可纠正错误而进入系统管理模式的时间长度,避免出现系统宕机的情况。根据内存错误的发现途径,原始的可纠正错误又可以包括内存巡检过程中出现的巡检可纠正错误以及内存读写过程中出现的读写可纠正错误。在此基础上,本申请实施例中内存错误的错误类型可以包括三种,即:巡检可纠正错误、读写可纠正错误以及不可纠正错误降级形成的可纠正错误。
步骤S950:根据错误类型对内存错误进行加权处理,得到内存的故障率权重。
当错误类型是对不可纠正错误进行降级处理得到的可纠正错误时,根据检测到不可纠正错误的出现次数确定第一权重,第一权重与出现次数呈正相关关系。针对将不可纠正错误进行降级处理得到的可纠正错误,由于对不可纠正错误进行了降级处理,处理器不会向系统上报不可纠正错误,而如果这一类型的内存错误累积次数过多,内存错误无法得到及时地响应处理,将容易导致系统宕机等严重故障。本申请实施例通过为不可纠正错误降级形成的可纠正错误分配与出现次数呈正相关关系的第一权重,可以基于第一权重的数值大小反映不可纠正错误的出现次数的多寡,例如可以将预设的权重系数与不可纠正错误的出现次数相乘得到第一权重,预设的权重系数为大于1的常数。当不可纠正错误的出现次数越多时,第一权重越大,而当其出现次数越少时,第一权重越小。
当错误类型是在内存巡检过程或者内存读写过程中检测到的可纠正错误时,根据检测到可纠正错误的地址数量确定第二权重,第二权重与地址数量呈正相关关系。
针对内存巡检过程或者内存读写过程中检测到的可纠正错误,由于可纠正错误能够基于ECC机制自行修复,若这类原始可纠正错误只局限于一个内存地址或者局限于一定范围的内存区域上,则可以确定这类原始可纠正错误不会向其他内存地址或者内存区域进行扩散。因此,若同一内存地址在不同的时间节点上出现多次可纠正错误,则多次可纠正错误的地址数量仍然标记为1。本申请实施例通过为可纠正错误分配与地址数量呈正相关关系的第二权重,可以基于第二权重的数值大小反映可纠正错误的出现地址的扩散程度,例如可以将预设的权重系数与出现可纠正错误的地址数量相乘得到第二权重,预设的权重系数为大于1的常数。当出现可纠正错误的地址数量越多时,第二权重越大,而出现可纠正错误的地址数量越少时,第二权重越小。
步骤S960:根据故障率权重确定内存是否出现故障。
本申请实施例可以将第一权重和第二权重相加得到内存的故障率权重,或者也可以依据预设的比例系数对第一权重和第二权重进行加权运算得到内存的故障率权重。
本申请实施例基于内存巡检的结果以及内存读写检测的结果可以对降级处理得到的可纠正错误、巡检得到的可纠正错误以及内存读写过程中检测到的可纠正错误进行加权累积,确定对应的故障率权重。针对两种不同类型的内存错误可以从内存错误的出现次数和出现内存错误的地址数量两个维度进行加权处理后得到内存的故障率权重。其中,对不可纠正错误进行降级处理得到的可纠正错误对应的第一权重与其出现次数呈正相关关系,即不可纠正错误的出现频次越高,对应的第一权重越大;在内存巡检过程或者内存读写过程中检测到的可纠正错误对应的第二权重与其地址数量呈正相关关系,即出现这类不可纠正错误的地址范围越大,对应的第二权重越大。
在计算故障率权重之外,本申请实施例还可以为不同类型的内存错误配置不同的PFA策略,即为不同类型的内存错误配置对应的故障判断规则。
图10示出了本申请一个实施例中基于PFA策略对内存进行故障判定的步骤流程图。如图10所示,本申请实施例对内存进行故障判定的方法可以包括如下的步骤S1001至步骤S1010。
步骤S1001:获取内存上出现的内存错误的错误类型,错误类型包括对不可纠正错误进行降级处理得到的可纠正错误、在内存巡检过程中检测到的可纠正错误或者在内存读写过程中检测到的可纠正错误中的至少一种。
步骤S1002:当错误类型是对不可纠正错误进行降级处理得到的可纠正错误时,获取检测到不可纠正错误的出现时间;根据检测到不可纠正错误的出现时间,确定不可纠正错误在预设时间范围内的出现次数;当不可纠正错误在预设时间范围内的出现次数大于次数阈值时,确定内存出现故障。
举例而言,对于PS UCE降级形成的CE,在一段时间内,在连续的地址上或者相邻的地址上出现两笔(在BIOS或者BMC上设置接口,默认为2笔)及以上的UCE降级的CE,PFA直接判定内存故障,提示客户更换。
步骤S1003:当错误类型是对不可纠正错误进行降级处理得到的可纠正错误时,根据检测到不可纠正错误的出现次数确定第一权重,第一权重与出现次数呈正相关关系。
举例而言,检测到PSUCE降级形成的CE,依照巡检周期,在一个巡检周期内(比如默认的巡检时间设定成24小时,在24小时内),一笔PSUCE降级形成的CE,判定所在的内存条故障的第一权重为A(比如0.5),在一到两个巡检周期以后,权重记成B(0.3)。在两个到N个(比如10个)巡检周期以内,权重记成C(比如0.1),在N个巡检周期以后,权重记为D(比如0.01)。
步骤S1004:当错误类型是在内存巡检过程中检测到的可纠正错误时,获取检测到可纠正错误的内存地址;根据检测到可纠正错误的内存地址,确定内存上出现可纠正错误的内存地址的地址数量;当内存上出现可纠正错误的内存地址的地址数量大于数量阈值时,确定内存出现故障。
步骤S1005:根据内存巡检过程中检测到的可纠正错误的内存地址的地址数量确定可纠正错误的内存地址在预设时间范围内的地址数量增长量;当地址数量增长量大于增长量阈值时,确定内存出现故障。
PS CE的频率和巡检的频率相关。对于特定地址上稳定的PS CE,在不恶化的前提下,可以判定其对系统的影响较小,对于地址没有扩散的PS CE,SMM可以直接过滤掉。PS CE的出现频率和内存巡检的频率相关,因此内存的PS CE用作PFA的时候,其中影响故障判断的程度只与内存地址的地址范围相关。当PS CE的地址范围具有扩散趋势的时候,将其用作PFA故障的判定输入。
步骤S1006:当错误类型是在内存巡检过程中检测到的可纠正错误时,根据检测到可纠正错误的地址数量确定第二权重,第二权重与地址数量呈正相关关系。
举例而言,检测到PS的CE,依照巡检的周期,一条内存上,一个内存地址的巡检CE的权重记为E(比如0.1),在M个巡检周期以后,该地址的巡检CE的权重老化成F(比如0.01)。
步骤S1007:当错误类型是在内存读写过程中检测到的可纠正错误时,获取检测到可纠正错误的内存地址;根据检测到可纠正错误的内存地址,确定内存上出现可纠正错误的内存地址的地址数量;当内存上出现可纠正错误的内存地址的地址数量大于数量阈值时,确定内存出现故障。
步骤S1008:根据内存读写过程中检测到的可纠正错误的内存地址的地址数量确定可纠正错误的内存地址在预设时间范围内的地址数量增长量;当地址数量增长量大于增长量阈值时,确定内存出现故障。
读写CE与CPU访问到这一片内存的频率相关,假定一个内存的存储单元有问题,CPU对这一片内存访问的频率越高,读写CE出现的频率越高,所以读写CE的频度不用做PFA的数据,如果读写CE的地址固定在一个地址上,不用做PFA的输入,直接过滤掉。当读写CE的地址范围具有扩散的趋势的时候,依照扩散的趋势,用作PFA的输入。
步骤S1009:当错误类型是在内存读写过程中检测到的可纠正错误时,根据检测到可纠正错误的地址数量确定第三权重,第三权重与地址数量呈正相关关系。
举例而言,检测到RWCE时,一条内存上、一个内存地址的RW CE的权重记为G(比如0.1)。如果这个相同的地址,继续发生新的RW CE,则权重保持为G,不增长。当这条内存上,在新的地址上出现RW CE时,权重增加G(比如由0.1增加到0.2)。
步骤S1010:根据第一权重、第二权重、和第三权重确定内存的故障率权重。
PFA实时加权三种内存错误类型的权重值,当单条内存上,内存的故障率权重大于等于1时,上报该条内存故障。
BIOS最终依照多个CE的PFA输入,在SMM中进行加权判定,缩短SMM的时间以及减少BMC的交互的次数,降低对系统的影响。BIOS在判定内存故障的时候,将判定的判据进行汇总,将系统传递给带外,上报内存PFA故障,需要进行更换。
本申请实施例将CE用作PFA的输入数据进行内存故障判定时,可以将CE分成三种类型,即:PS UCE降级得到的CE、PS CE以及RW CE。
本申请实施例在一个应用场景中对于PS UCE降级得到CE的处理方式可以包括如下的步骤流程。
1、首先在BIOS中设置菜单,支持用户设置发生多少次巡检UCE,提示更换内存,默认值为2;支持用户配置多少个巡检周期以内,发生指定次数的巡检UCE,提示更换内存,默认值为3;支持用户配置PS UCE的老化周期数,当PS的UCE发生时间超过老化周期数*巡检时间以后,将这一批PS UCE当成普通PS CE进行处理,默认值为7。
依照默认值,同一内存地址,或者同一内存颗粒,在3个巡检周期内发生两次PSUCE,提示内存更换。在7个巡检周期以后,PS的UCE,当成普通的巡检CE进行处理。
2、在BIOS中配置ign_ptrl_uc的状态,将芯片配置成,遇到巡检UCE,将内存的巡检UCE上报成巡检CE。
ign_ptrl_uc—Downgrades patrol scrubbing uncorrectable errors tocorreactable.
如下是一笔抓到的内存巡检UCE降级成CE的MCA寄存器组中,status寄存器的记录:
CPU 12:Machine Check Event:0Bank 15:8c000040001000c0
Bit63=1:VALID有效
Bit62=0:OVERFLOW
Bit61=0:UC—Uncorrected Error,是指PS UCE降级成的CE
MSCOD bit31:16=0x0010,UnCorr Patrol Scrub Error,实际发生的PS UCE。
MCCOD bit15:0=0x00c0 Memory Scrubbing Error
3、在X86的启动过程中,按照内存的位置(SocketID,channelID,DimmID)记录每一条内存的序列号SN,读取记录表中的内存SN列表,当获取到内存的SN和实际机器上的内存的SN不相匹配,表明发生了内存的更换,删除该位置内存的历史PS UCE纪录,同时更新内存的SN记录表。
4、当内存发生了巡检内存UCE以后,CPU上报一个CSMI,系统进入SMM模式,为了尽量缩短在SMM的时间,只在SMM中做寄存器读取以及数据统计工作。在SMM中,首先依照MCAstatus寄存器中MSCOD判定PS CE的类型,如果是巡检的UCE降级成CE,按照以下的流程进行处理。
5、SMM中,检测到如果发生了巡检的UCE降级成CE,首先获取到PS UCE的发生时间,读取寄存器,解析出出现错误的内存地址(socketID,channelID,dimmID,rankID,bankGroup,bankAddress,Row,Col)。将出现PS UCE的时间,内存的SN,出错的内存地址信息记录下来,将出错的DeviceID计算出来,记录下来。
6、SMM获取系统中配置的内存巡检时间T(一般默认是24小时,用户可以修改),获取巡检的周期数N(可配置,默认是3个),计算出间隔时间T*N。
7、SMM检索历史PS UCE的记录表,如果发现有同一条内存的同一个地址,在间隔时间以内,出现大于等于阈值Threshold(可配置,默认是2个)的PS UCE笔数,提示用户更换内存。
8、SMM检索历史的记录表,如果发现有同一条内存的同一个device(颗粒),在间隔时间以内,出现大于等于阈值Threshold(可配置,默认是2个)的PS UCE笔数,提示用户更换内存。
9、SMM检索历史的记录表,如果发现历史记录的时间戳,和当前相比,时间间隔大于指定的老化周期数N2*巡检周期(默认是7*24小时),将该条记录从PS UCE的记录表中删除,添加到普通的巡检CE记录中。
10、PS UCE的处理流程结束。
一般的PS UCE的处理时间,可以控制在50ms以内。该措施既降低了PS UCE对业务的影响,也提升了X86系统的容错度,当PS UCE恶化到一定的程度,对业务造成影响以前,提示进行内存更换。
对于特定地址上稳定的PS CE,在不恶化的前提下,可以判定其对系统的影响较小,对于地址没有扩散的PS CE,可以直接过滤掉。PS CE的出现的频率和巡检的频率相关,所以内存的PS CE用作PFA的时候,可以认为只与地址范围相关。PFA故障判定,主要基于当PS CE的地址范围具有扩散的趋势。
RW CE和CPU访问到这一片内存的频率相关,假定一个内存的存储单元有问题,CPU对这一片内存访问的频率越高,读写CE出现的频率越高,所以读写CE的频度不用做PFA的数据,如果读写CE的地址固定在一个地址上,可以直接过滤掉。PFA故障的判定,主要基于RWCE的地址范围具有扩散的趋势。
对于内存的CE的PFA,以内存的device为单位,依照地址范围的变化趋势作为内存是否故障的主要判据。
在BIOS菜单中,设置两个选项,一个是地址数量阈值,用来控制每Device,依照出现CE错误地址的数量上报内存故障的阈值,以Device为单位,每Device最多允许多少个地址出现CE,记为N1,当Device出现内存CE的地址数量大于N1,上报内存更换,默认为Row地址数的1/128,比如8GbX4的颗粒,row的数量为128K,N1设置为1K。在BIOS里面提供接口,支持用户修改,比如用户可以针对DDR4 8GbX4的颗粒,将地址数量阈值修改成512。
图11示出了本申请实施例在一些应用场景中使用的内存颗粒的内存地址数量。如图11所示,一个内存颗粒Device的内部划分有多个存储库组(BankGroup),每个存储库组又由多个存储库(Bank)组成,在访问内存数据时通过指定存储库编号可以访问指定的存储库。一个存储库可以视为一个包括多个内存行(Row)和多个内存列(Column)的存储阵列,每个内存行和内存列具有指定的地址数量。从地址刷新和地址访问的角度来看,内存颗粒中可以包括内存页(Page),内存页是内存中一段具有固定长度的区块,该区块的长度即为页尺寸(PageSize)。
举例而言,当内存颗粒容量为DDR4 8GbX4时,其内部划分有4个存储库组,每个存储库组由4个存储库组成,每个存储库内部的行地址数量为128K,列地址数量为1K,一个内存页的页尺寸为512B。
另外一个是地址数量波动阈值。在一定时间范围内,检测到发生CE的内存地址数量的增量,叫做地址数量波动值。当波动值大于一个阈值时,上报内存异常,这个波动值的阈值记为A1(用户可以配置),时间段记为T1(用户可以配置),波动阈值默认为24小时10笔,默认是在24小时以后,发生内存CE的地址数量增加了10笔以及以上,上报内存故障,提示更换。
本申请实施例在一个应用场景中对于PS CE或者RWCE的处理方式可以包括如下的步骤流程。
1、X86开机,BIOS开始运行。
2、按照内存的位置(SocketID,channelID,DimmID)记录每一条内存的SN,读取记录表中的内存SN列表,当获取到的内存的SN和实际机器上的内存的SN不相匹配,表明发生了内存的更换,删除该位置内存的历史CE纪录,同时更新内存的SN记录表。
3、BIOS在启动过程中,将NVRAM中存储的,以[SocketID,channelID,DIMMID,Device ID]为单位,读出发生内存CE的地址信息表(地址+最后一次发生的时间),存放到BIOS的保留内存中。
4、BIOS记录当前的时间,依照Device为单位,统计每一个device上发生CE的内存地址的数量N1,依照地址数量波动阈值中的T1,开启一个定时器,
5、当发生内存CE(含PS的CE,RW的CE,以及PS的UCE降级成CE超过老化时间加到CE处理流程中的CE)的时候,在SMM中,依照MCA的寄存器,解析出出现错误的内存地址(socketID,channelID,dimmID,rankID,bankGroup,bankAddress,Row,Col)。依照内存地址,在CE的记录表中的地址进行比对,如果在CE的记录表中找到历史的记录,刷新这一条记录的时间。如果没有找到,在CE的记录表中,依照地址,以及出现问题的时间,添加一条记录。
6、SMM以Device为单位,扫描device上出现的出现内存CE地址的数量,如果大于地址数量阈值N1,上报内存故障。
7、SMM以Device为单位,统计每一个device上发生CE的内存地址的数量,和初始值N1,做差,如果大于A1,上报内存故障。同时更新初始值N1,将当前的CE的数量,计入到N1。
8、SMM定时器到时间被唤醒,统计每一个device上发生CE的内存地址的数量,和初始值N1,做差,如果大于A1,上报内存故障。同时更新初始值N1,将当前的CE的数量,计入到N1。
9、BIOS在关机的时候,以Device为单位,将内存的SN,内存的CE清单,写回到NVRAM中保存起来,支持下一次服务器再次启动的时候,BIOS能够读出内存CE清单。
10、CE的处理流程结束。
一般的CE的处理时间,控制在30ms以内完成。该措施既降低了CE对业务的影响,也能够提前到内存异常,当CE恶化到一定的程度以后,对业务造成影响以前,提示进行内存更换。
针对内存故障判定,一方面要降低内存巡检UCE,巡检CE,内存读写CE在业务侧的感知和对业务的影响,具体措施有减少CE的打印,减少系统由于这些事件进入SMM的时间。另外一方面,需要依托于内存CE频度,地址等其他信息,及时发现有问题的内存,避免内存故障形成非预期宕机,造成对业务的影响。需要在上报和预测之间,依照内存的技术特性,作出一个平衡,做到既不影响业务的正常运行,又能够在内存故障造成服务器宕机以前,提前将故障内存提前上报出来,执行更换。
本申请实施例提供的技术方案能够同时满足以上两个诉求,解决了内存CE上报对系统的影响,同时也有效的利用了内存CE的特点,有效的进行了PFA运算,将内存劣化到对业务造成影响以前,提示进行内存更换,降低了对业务的影响。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的内存故障判定方法。图12示意性地示出了本申请实施例提供的内存故障判定装置的结构框图。如图12所示,内存故障判定装置1200可以包括:
获取模块1210,被配置为获取内存上出现的内存错误的错误类型,所述错误类型包括对不可纠正错误进行降级处理得到的可纠正错误;
加权模块1220,被配置为根据所述错误类型对所述内存错误进行加权处理,得到所述内存的故障率权重;
确定模块1230,被配置为根据所述故障率权重确定所述内存是否出现故障。
在本申请的一个实施例中,所述错误类型还包括在内存巡检过程或者内存读写过程中检测到的可纠正错误;加权模块1120可以进一步包括:
第一加权模块,被配置为当所述错误类型是对不可纠正错误进行降级处理得到的可纠正错误时,根据检测到所述不可纠正错误的出现次数确定第一权重,所述第一权重与所述出现次数呈正相关关系;
第二加权模块,被配置为当所述错误类型是在内存巡检过程或者内存读写过程中检测到的可纠正错误时,根据检测到所述可纠正错误的地址数量确定第二权重,所述第二权重与所述地址数量呈正相关关系;
第三加权模块,被配置为根据所述第一权重和所述第二权重确定所述内存的故障率权重。
在本申请的一个实施例中,第二加权模块可以进一步包括:
第一权值获取模块,被配置为获取用于对所述不可纠正错误进行加权处理的第一错误权值;
出现次数统计模块,被配置为根据检测到所述不可纠正错误的出现时间,统计所述不可纠正错误的出现次数;
第一权重加权模块,被配置为根据所述第一错误权值对所述出现次数进行加权处理得到第一权重。
在本申请的一个实施例中,出现次数统计模块可以进一步被配置为:获取用于对所述内存进行内存巡检的一个或者多个巡检周期;分别统计在各个所述巡检周期内检测到的所述不可纠正错误的出现次数。
在本申请的一个实施例中,第一权值获取模块可以进一步被配置为:获取用于对所述内存进行内存巡检的一个或者多个巡检周期;根据检测到所述不可纠正错误的出现时间和所述巡检周期确定所述不可纠正错误的巡检周期数,所述巡检周期数表示所述出现时间与当前时间间隔的巡检周期的周期数量;根据所述巡检周期数确定用于对所述不可纠正错误进行加权处理的第一错误权值,所述第一错误权值与所述巡检周期数呈负相关关系。
在本申请的一个实施例中,第一权值获取模块可以进一步被配置为:获取所述巡检周期数与至少一个周期数阈值的数量关系;根据所述数量关系确定所述内存错误所在的周期数范围;根据所述周期数范围确定第一错误权值。
在本申请的一个实施例中,第二加权模块可以进一步包括:
地址数量统计模块,被配置为根据检测到所述可纠正错误的出现地址,统计所述内存上出现可纠正错误的地址数量;
第二权值获取模块,被配置为获取用于对所述可纠正错误进行加权处理的第二错误权值;
第二权重加权模块,被配置为根据所述第二错误权值对所述地址数量进行加权处理得到第二权重。
在本申请的一个实施例中,第二权值获取模块可以进一步被配置为:获取用于对所述内存进行内存巡检的一个或者多个巡检周期;根据检测到所述可纠正错误的出现时间和所述巡检周期确定所述可纠正错误的巡检周期数,所述巡检周期数表示所述出现时间与当前时间间隔的巡检周期的周期数量;根据所述巡检周期数确定用于对所述可纠正错误进行加权处理的第二错误权值,所述第二错误权值与所述巡检周期数呈负相关关系。
在本申请的一个实施例中,所述错误类型还包括在内存巡检过程中检测到的可纠正错误;所述装置还包括:
巡检模块,被配置为按照预设的巡检周期对内存进行内存巡检,以确定所述内存上的各个内存地址是否存在不可纠正错误或者可纠正错误;
降级模块,被配置为当检测到所述内存上存在不可纠正错误时,对所述不可纠正错误进行降级处理得到可纠正错误。
在本申请的一个实施例中,所述错误类型还包括在内存读写过程中检测到的可纠正错误;所述装置还包括:
检测模块,被配置为实时检测在内存上进行的内存读写操作,以确定所述内存上的各个内存地址是否存在可纠正错误。
在本申请的一个实施例中,所述装置还包括:
时间获取模块,被配置为当所述错误类型是对不可纠正错误进行降级处理得到的可纠正错误时,获取检测到所述不可纠正错误的出现时间;
次数确定模块,被配置为根据检测到所述不可纠正错误的出现时间,确定所述不可纠正错误在预设时间范围内的出现次数;
次数判断模块,被配置为当所述不可纠正错误在预设时间范围内的出现次数大于次数阈值时,确定所述内存出现故障。
在本申请的一个实施例中,所述错误类型还包括在内存巡检过程或者内存读写过程中检测到的可纠正错误;所述装置还包括:
地址获取模块,被配置为当所述错误类型是在内存巡检过程或者内存读写过程中检测到的可纠正错误时,获取检测到所述可纠正错误的内存地址;
数量确定模块,被配置为根据检测到所述可纠正错误的内存地址,确定所述内存上出现可纠正错误的内存地址的地址数量;
数量判断模块,被配置为当所述内存上出现可纠正错误的内存地址的地址数量大于数量阈值时,确定所述内存出现故障。
在本申请的一个实施例中,所述装置还包括:
增长量确定模块,被配置为根据所述内存上出现可纠正错误的内存地址的地址数量确定所述可纠正错误的内存地址在预设时间范围内的地址数量增长量;
增长量判断模块,被配置为当所述地址数量增长量大于增长量阈值时,确定所述内存出现故障。
本申请各实施例中提供的内存故障判定装置的具体细节已经在对应的方法实施例中进行了详细的描述,此处不再赘述。
图13示意性地示出了用于实现本申请实施例的电子设备的计算机系统结构框图。
需要说明的是,图13示出的电子设备的计算机系统1300仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图13所示,计算机系统1300包括中央处理器1301(Central Processing Unit,CPU),其可以根据存储在只读存储器1302(Read-Only Memory,ROM)中的程序或者从存储部分1308加载到随机访问存储器1303(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器1303中,还存储有系统操作所需的各种程序和数据。中央处理器1301、在只读存储器1302以及随机访问存储器1303通过总线1304彼此相连。输入/输出接口1305(Input/Output接口,即I/O接口)也连接至总线1304。
以下部件连接至输入/输出接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至输入/输出接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理器1301执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (17)

1.一种内存故障判定方法,其特征在于,包括:
获取内存上出现的内存错误的错误类型,所述错误类型包括对不可纠正错误进行降级处理得到的可纠正错误;
根据所述错误类型对所述内存错误进行加权处理,得到所述内存的故障率权重;
根据所述故障率权重确定所述内存是否出现故障。
2.根据权利要求1所述的内存故障判定方法,其特征在于,所述错误类型还包括在内存巡检过程或者内存读写过程中检测到的可纠正错误;根据所述错误类型对所述内存错误进行加权处理,得到所述内存的故障率权重,包括:
当所述错误类型是对不可纠正错误进行降级处理得到的可纠正错误时,根据检测到所述不可纠正错误的出现次数确定第一权重,所述第一权重与所述出现次数呈正相关关系;
当所述错误类型是在内存巡检过程或者内存读写过程中检测到的可纠正错误时,根据检测到所述可纠正错误的地址数量确定第二权重,所述第二权重与所述地址数量呈正相关关系;
根据所述第一权重和所述第二权重确定所述内存的故障率权重。
3.根据权利要求2所述的内存故障判定方法,其特征在于,根据检测到所述不可纠正错误的出现次数确定第一权重,包括:
获取用于对所述不可纠正错误进行加权处理的第一错误权值;
根据检测到所述不可纠正错误的出现时间,统计所述不可纠正错误的出现次数;
根据所述第一错误权值对所述出现次数进行加权处理得到第一权重。
4.根据权利要求3所述的内存故障判定方法,其特征在于,统计所述不可纠正错误的出现次数,包括:
获取用于对所述内存进行内存巡检的一个或者多个巡检周期;
分别统计在各个所述巡检周期内检测到的所述不可纠正错误的出现次数。
5.根据权利要求3所述的内存故障判定方法,其特征在于,获取用于对所述不可纠正错误进行加权处理的第一错误权值,包括:
获取用于对所述内存进行内存巡检的一个或者多个巡检周期;
根据检测到所述不可纠正错误的出现时间和所述巡检周期确定所述不可纠正错误的巡检周期数,所述巡检周期数表示所述出现时间与当前时间间隔的巡检周期的周期数量;
根据所述巡检周期数确定用于对所述不可纠正错误进行加权处理的第一错误权值,所述第一错误权值与所述巡检周期数呈负相关关系。
6.根据权利要求5所述的内存故障判定方法,其特征在于,根据所述巡检周期数确定第一错误权值,包括:
获取所述巡检周期数与至少一个周期数阈值的数量关系;
根据所述数量关系确定所述内存错误所在的周期数范围;
根据所述周期数范围确定第一错误权值。
7.根据权利要求2所述的内存故障判定方法,其特征在于,根据检测到所述可纠正错误的地址数量确定第二权重,包括:
根据检测到所述可纠正错误的出现地址,统计所述内存上出现可纠正错误的地址数量;
获取用于对所述可纠正错误进行加权处理的第二错误权值;
根据所述第二错误权值对所述地址数量进行加权处理得到第二权重。
8.根据权利要求7所述的内存故障判定方法,其特征在于,获取用于对所述可纠正错误进行加权处理的第二错误权值,包括:
获取用于对所述内存进行内存巡检的一个或者多个巡检周期;
根据检测到所述可纠正错误的出现时间和所述巡检周期确定所述可纠正错误的巡检周期数,所述巡检周期数表示所述出现时间与当前时间间隔的巡检周期的周期数量;
根据所述巡检周期数确定用于对所述可纠正错误进行加权处理的第二错误权值,所述第二错误权值与所述巡检周期数呈负相关关系。
9.根据权利要求1所述的内存故障判定方法,其特征在于,所述错误类型还包括在内存巡检过程中检测到的可纠正错误;在获取内存上出现的内存错误的错误类型之前,所述方法还包括:
按照预设的巡检周期对内存进行内存巡检,以确定所述内存上的各个内存地址是否存在不可纠正错误或者可纠正错误;
当检测到所述内存上存在不可纠正错误时,对所述不可纠正错误进行降级处理得到可纠正错误。
10.根据权利要求1所述的内存故障判定方法,其特征在于,所述错误类型还包括在内存读写过程中检测到的可纠正错误;在获取内存上出现的内存错误的错误类型之前,所述方法还包括:
实时检测在内存上进行的内存读写操作,以确定所述内存上的各个内存地址是否存在可纠正错误。
11.根据权利要求1所述的内存故障判定方法,其特征在于,在获取内存上出现的内存错误的错误类型之后,所述方法还包括:
当所述错误类型是对不可纠正错误进行降级处理得到的可纠正错误时,获取检测到所述不可纠正错误的出现时间;
根据检测到所述不可纠正错误的出现时间,确定所述不可纠正错误在预设时间范围内的出现次数;
当所述不可纠正错误在预设时间范围内的出现次数大于次数阈值时,确定所述内存出现故障。
12.根据权利要求1所述的内存故障判定方法,其特征在于,所述错误类型还包括在内存巡检过程或者内存读写过程中检测到的可纠正错误;在获取内存上出现的内存错误的错误类型之后,所述方法还包括:
当所述错误类型是在内存巡检过程或者内存读写过程中检测到的可纠正错误时,获取检测到所述可纠正错误的内存地址;
根据检测到所述可纠正错误的内存地址,确定所述内存上出现可纠正错误的内存地址的地址数量;
当所述内存上出现可纠正错误的内存地址的地址数量大于数量阈值时,确定所述内存出现故障。
13.根据权利要求12所述的内存故障判定方法,其特征在于,在确定所述内存上出现可纠正错误的内存地址的地址数量之后,所述方法还包括:
根据所述内存上出现可纠正错误的内存地址的地址数量确定所述可纠正错误的内存地址在预设时间范围内的地址数量增长量;
当所述地址数量增长量大于增长量阈值时,确定所述内存出现故障。
14.一种内存故障判定装置,其特征在于,包括:
获取模块,被配置为获取内存上出现的内存错误的错误类型,所述错误类型包括对不可纠正错误进行降级处理得到的可纠正错误;
加权模块,被配置为根据所述错误类型对所述内存错误进行加权处理,得到所述内存的故障率权重;
确定模块,被配置为根据所述故障率权重确定所述内存是否出现故障。
15.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至13中任意一项所述的内存故障判定方法。
16.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令使得所述电子设备执行权利要求1至13中任意一项所述的内存故障判定方法。
17.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至13中任意一项所述的内存故障判定方法。
CN202210510821.4A 2022-05-11 2022-05-11 内存故障判定方法、装置、介质及电子设备 Pending CN117093389A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210510821.4A CN117093389A (zh) 2022-05-11 2022-05-11 内存故障判定方法、装置、介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210510821.4A CN117093389A (zh) 2022-05-11 2022-05-11 内存故障判定方法、装置、介质及电子设备

Publications (1)

Publication Number Publication Date
CN117093389A true CN117093389A (zh) 2023-11-21

Family

ID=88780901

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210510821.4A Pending CN117093389A (zh) 2022-05-11 2022-05-11 内存故障判定方法、装置、介质及电子设备

Country Status (1)

Country Link
CN (1) CN117093389A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117648216A (zh) * 2024-01-30 2024-03-05 苏州元脑智能科技有限公司 调整内存可纠正错误阈值的方法、装置、服务器及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117648216A (zh) * 2024-01-30 2024-03-05 苏州元脑智能科技有限公司 调整内存可纠正错误阈值的方法、装置、服务器及介质
CN117648216B (zh) * 2024-01-30 2024-04-23 苏州元脑智能科技有限公司 调整内存可纠正错误阈值的方法、装置、服务器及介质

Similar Documents

Publication Publication Date Title
US10789117B2 (en) Data error detection in computing systems
US8533526B2 (en) Performing redundant memory hopping
Tang et al. Assessment of the effect of memory page retirement on system RAS against hardware faults
US8407516B2 (en) Controlling memory redundancy in a system
US6832329B2 (en) Cache thresholding method, apparatus, and program for predictive reporting of array bit line or driver failures
WO2021253708A1 (zh) 内存故障的处理方法、装置、设备及存储介质
JP2004537787A (ja) コンピュータ・システムにおける電力障害を解析する方法および装置
US9396059B2 (en) Exchange error information from platform firmware to operating system
US11080135B2 (en) Methods and apparatus to perform error detection and/or correction in a memory device
Du et al. Predicting uncorrectable memory errors for proactive replacement: An empirical study on large-scale field data
US11182233B2 (en) Method for event log management of memory errors and server computer utilizing the same
US11809295B2 (en) Node mode adjustment method for when storage cluster BBU fails and related component
CN117093389A (zh) 内存故障判定方法、装置、介质及电子设备
Du et al. Predicting uncorrectable memory errors from the correctable error history: No free predictors in the field
US11200114B2 (en) System and method for facilitating elastic error correction code in memory
US10268598B2 (en) Primary memory module with record of usage history
US11593209B2 (en) Targeted repair of hardware components in a computing device
US20210279122A1 (en) Lifetime telemetry on memory error statistics to improve memory failure analysis and prevention
CN115686901B (zh) 内存故障分析方法及计算机设备
Dattatraya Dixit et al. Optimizing interrupt handling performance for memory failures in large scale data centers
CN117950900A (zh) 一种内存错误处理方法及计算设备
CN117555723A (zh) 内存ce处理方法及计算设备
CN115705261A (zh) 内存故障的修复方法、cpu、os、bios及服务器
CN117909109A (zh) 一种内存错误信息处理方法及计算设备
CN116401085A (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