CN117950900A - 一种内存错误处理方法及计算设备 - Google Patents
一种内存错误处理方法及计算设备 Download PDFInfo
- Publication number
- CN117950900A CN117950900A CN202410130276.5A CN202410130276A CN117950900A CN 117950900 A CN117950900 A CN 117950900A CN 202410130276 A CN202410130276 A CN 202410130276A CN 117950900 A CN117950900 A CN 117950900A
- Authority
- CN
- China
- Prior art keywords
- error
- memory
- correctable
- data
- register
- 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
Links
- 238000003672 processing method Methods 0.000 title abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000000034 method Methods 0.000 claims abstract description 41
- 238000002955 isolation Methods 0.000 claims abstract description 19
- 230000008439 repair process Effects 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 19
- 230000000593 degrading effect Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 5
- 230000015556 catabolic process Effects 0.000 description 4
- 238000006731 degradation reaction Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000877 morphologic effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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 the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请实施例提供了一种内存错误处理方法及计算设备,该方法包括:获取上报的可纠正错误;确定错误记录寄存器记录的可纠正错误的错误类型;若错误类型指示可纠正错误为降级的非执行路径内存错误,则对包含可纠正错误的内存页进行内存隔离处理。本申请实施例,可将非执行路径内存错误降级为可纠正错误,并及时对降级的非执行路径内存错误进行修复,以提高操作系统运行的可靠性和稳定性。
Description
技术领域
本申请涉及服务器技术领域,具体涉及一种内存错误处理方法及计算设备。
背景技术
当内存发生单比特位错误(可纠正错误)时,硬件平台检测到时会自动纠正。当内存发生多比特位错误(不可纠正错误)时,校验算法无法还原正确的值,硬件平台无法自动纠正。非执行路径内存错误是由内存控制器周期性地巡检扫描内存条时发现的多比特位错误。非执行路径内存错误表示操作系统尚未将错误数据从内存加载到处理器的缓存中,即不在处理器的执行路径中。若不及时对非执行路径内存错误进行识别和处理,很可能导致处理器访问到错误数据,甚至导致操作系统宕机和复位。
发明内容
本申请实施例提供了一种内存错误处理方法及计算设备,可将非执行路径内存错误降级为可纠正错误,并及时对降级的非执行路径内存错误进行修复,提高操作系统的可靠性和稳定性。
第一方面,本申请实施例提供了一种内存错误处理方法,该内存错误处理方法包括:
获取上报的可纠正错误;
确定错误记录寄存器记录的可纠正错误的错误类型;
若错误类型指示可纠正错误为降级的非执行路径内存错误,对包含可纠正错误的内存页进行内存隔离处理。
由此可见,本申请实施例,可以识别降级的非执行路径内存错误,并对降级的非执行路径内存错误进行修复,可以提高操作系统的可靠性和稳定性。
在一实现方式中,确定错误记录寄存器记录的可纠正错误的错误类型,包括:
从错误记录寄存器上读取第一预设比特位的数据;
基于第一预设比特位的数据,确定可纠正错误的错误类型。
由此可见,本申请实施例,可通过错误记录寄存器记录的错误信息快速判断上报的可纠正错误是否为降级的非执行路径内存错误,可以实现内存错误的快速识别。
在一实现方式中,错误记录寄存器是Mci_STATUS寄存器,第一预设比特位为Mci_STATUS寄存器的比特位[31:16];基于第一预设比特位的数据,确定可纠正错误的错误类型,包括:
若第一预设比特位的数据为0010H,确定可纠正错误的错误类型为降级的非执行路径内存错误。
由此可见,本申请实施例,可以采用Mci_STATUS寄存器中的比特位[31:16]记录内存错误的错误类型。
在一实现方式中,该内存错误处理方法还包括:
当检测到非执行路径内存错误时,将非执行路径内存错误降级为可纠正错误;
通过可纠正错误中断上报可纠正错误。
由此可见,本申请实施例,可自动将非执行路径内存错误降级为可纠正错误,避免非执行路径内存错误直接导致操作系统复位。
在一实现方式中,将非执行路径内存错误降级为可纠正错误之前,该内存错误处理方法还包括:
响应于设置指令,开启错误降级功能。
由此可见,本申请实施例,可通过电脑软件设置界面便捷地开启错误降级功能,使得非执行路径内存错误可以降级为可纠正错误。
在一实现方式中,对包含可纠正错误的内存页进行内存隔离处理,包括:
从错误记录寄存器上读取第二预设比特位的数据;
若第二预设比特位的数据是有效位数据,从地址记录寄存器读取包含可纠正错误的内存页的物理地址;
基于物理地址,为内存管理系统中包含可纠正错误的内存页添加预设标识,预设标识用于指示内存管理系统不分配包含可纠正错误的内存页。
由此可见,本申请实施例,可通过错误记录寄存器记录的错误信息获取到包含可纠正错误的内存页的物理地址,便于后续实现内存错误修复。
在一个实现方式中,第二预设比特位是Mci_STATUS寄存器的比特位[58];
若第二预设比特位的数据是有效位数据,从地址记录寄存器读取包含可纠正错误的内存页的物理地址,包括:
若第二预设比特位的数据置1,从地址记录寄存器读取包含可纠正错误的内存页的物理地址。
由此可见,本申请实施例,可以采用Mci_STATUS寄存器中的比特位[58]记录包含可纠正错误的内存页的物理地址是否存在。
在一实现方式中,获取上报的可纠正错误之后,该内存错误处理方法还包括:
从错误记录寄存器读取可纠正错误的错误信息;
生成包含可纠正错误的错误信息的日志文件。
由此可见,本申请实施例,可以利用日志文件记录可纠正错误的错误信息,并为后续的内存修复过程。
在一实现方式中,该内存错误处理方法还包括:
若错误类型指示可纠正错误不为降级的非执行路径内存错误,确定是否满足内存错误修复条件;其中,内存错误修复条件包括达到错误上报周期和/或可纠正错误的数量达到预设数量;
若满足内存错误修复条件,基于日志文件对可纠正错误进行修复。
示例性的,可以将日志文件发送给日志守护进程,日志守护进程用于当满足内存错误修复条件时,基于日志文件对可纠正错误进行修复。
由此可见,本申请实施例,在满足内存错误修复条件的情况下,可对可纠正错误进行修复,以提高操作系统运行的可靠性和稳定性。
第二方面,本申请实施例提供了一种内存错误处理装置,该内存错误处理装置包括:
获取模块,用于获取上报的可纠正错误;
处理模块,用于确定错误记录寄存器记录的可纠正错误的错误类型;
处理模块,还用于若错误类型指示可纠正错误为降级的非执行路径内存错误,则对包含可纠正错误的内存页进行内存隔离处理。
由此可见,本申请实施例提供的装置,可将非执行路径内存错误降级为可纠正错误,并及时对降级的非执行路径内存错误进行修复,提高操作系统的可靠性和稳定性。
第三方面,本申请实施例提供一种计算设备,该计算设备包括:存储器和处理器;存储器和处理器耦合;
存储器用于存储程序指令;处理器用于调用程序指令,以使计算设备执行上述的内存错误处理方法。
需要说明的是,该存储器可以外部存储器,该外部存储器用于永久性的存储程序指令和数据;该存储器也可以为内部存储器,该内部存储器用于暂存存储程序指令和数据;当处理器需要执行内存错误处理方法时,可以将内存错误处理方法相关的程序指令从外部存储器中先读取到内部存储器中,以便于快速执行。
第四方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被计算设备的处理器读取并执行时,使得计算设备执行上述的内存错误处理方法。
第五方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算设备执行上述的内存错误处理方法。
需要说明的是,第二方面至第五方面的有益效果可参照第一方面的有益效果,此处不再进行赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种内存错误处理的机制示意图;
图2a是本申请实施例提供的一种非执行路径内存错误的处理流程示意图;
图2b是本申请实施例提供的另一种非执行路径内存错误的处理流程示意图;
图3是本申请实施例提供的一种计算设备的结构示意图;
图4是本申请实施例提供的一种内存错误处理方法的流程示意图;
图5是Mci_STATUS寄存器的示意图;
图6是本申请实施例提供的又一种非执行路径内存错误的处理流程示意图;
图7是本申请实施例提供的一种内存错误处理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中所涉及到的“第一”、“第二”等描述仅用于描述目的,而不能理解为指示或者暗示其相对重要性或者隐含指明所指示的技术特征的数量。因此,限定有“第一”、“第二”的技术特征可以明示或者隐含的包括至少一个该特征。
请参见图1,图1是本申请实施例提供的一种内存错误处理的机制示意图。本申请实施例中的内存错误是指内存硬件错误,可以理解为内存中一个或多个比特位的数据出错。内存相关的设备在硬件设计上支持错误检测和校验(error checking andcorrecting,ECC)。内存错误包括可纠正错误(correctable error,CE)和不可纠正错误(uncorrectable error,UCE)。可纠正错误可以通过ECC技术来纠正。不可纠正错误无法通过ECC技术来纠正。不可纠正错误包括可恢复错误(recoverable error)和致命错误(fatalerror)。可恢复错误表示错误在硬件层面无法修复,但在软件层面有可能可以修复,若在软件层面也不能修复,则需进行系统复位(mce panic)。致命错误是指在硬件层面和软件层面均无法修复,只得进行系统复位。可恢复错误包括按需处理错误(非必须校正错误,uncorrected no action required,UCNA)、非执行路径内存错误(软件恢复选择处理错误,software recoverable action optional,SRAO)和执行路径错误(软件恢复必选处理错误,software recoverable action required,SRAR)。本申请实施例主要对非执行路径内存错误进行处理。
如图2a(是本申请实施例提供的一种非执行路径内存错误的处理流程示意图)所示,在不支持非执行路径内存错误处理的中央处理器(central processing unit,CPU)平台上,当非执行路径内存错误被检测到后,硬件平台(如intel x86)会触发机器检测异常(machine check exception,MCE)中断,操作系统(按照硬件平台的指示)被复位,例如硬件平台检测到非执行路径内存错误后,将错误记录寄存器中的PCC位设置为1,操作系统从错误记录寄存器记录的硬件错误信息中读到PCC=1,则复位系统。
另外,在支持非执行路径内存错误处理的CPU平台上,错误记录寄存器中的PCC位不会设置为1,操作系统会尝试隔离包含非执行路径内存错误的内存页。但支持非执行路径内存错误处理的CPU成本更高,会提升用户的运维成本,可用性较差。
如图2b(是本申请实施例提供的另一种非执行路径内存错误的处理流程示意图)所示,在支持对非执行路径内存错误处理降级的CPU平台上,当降级的非执行路径内存错误被检测到后,硬件平台会触发纠正机器检查错误中断(corrected machine-check errorinterrupt,CMCI)记录错误信息。同时将错误信息上报给日志记录服务(如mcelog服务),若在24小时内同一个物理地址连续上报50次错误,则做内存隔离,内存隔离慢、时效性差。
针对上述问题,本申请实施例提出的内存错误处理方法,该内存错误处理方法的方案是将检测到的非执行路径内存错误降级为可纠正错误,在可纠正错误处理流程中,一方面能记录错误信息,另一方面能识别降级的非执行路径内存错误并对降级的非执行路径内存错误进行修复。这样,便能及时对非执行路径内存错误进行软件层面的修复,时效性和可用性较高,同时能避免由于降级的非执行路径内存错误处理不及时,导致的系统宕机和复位,可提升操作系统的可靠性和稳定性。
请参见图3,图3是本申请实施例提供的一种计算设备的结构示意图,图3中示出的计算设备300包括:处理器301、外部存储器302、内部存储器(内存)303、通信接口304(包括有线接口和无线接口中的一种或两种,用于接收和发送数据)。计算设备300中的各个组件通过总线系统305耦合在一起。可理解,总线系统305用于实现这些组件之间的连接通信。总线系统305除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统305。
处理器301可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(digital signal processor,DSP),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
外部存储器302可以是可移除的,不可移除的或其组合。示例性的外部存储器302包括固态存储器,硬盘驱动器,光盘驱动器等。外部存储器302可选地包括在物理位置上远离处理器301的一个或多个存储设备。外部存储器302为非易失性存储器。该非易失性存储器可以是只读存储器(read only memory,ROM);外部存储器302可用于永久性的存储程序指令和数据。
内部存储器303可以是易失性存储器,具体地,可以是随机存取存储器(randomaccess memory,RAM)。其中,内部存储器303中的内存用于暂存处理器所处理的程序指令和数据,需要说明的是,本申请实施例所提供的内存错误处理方法即为针对内部存储器303中的内存错误进行识别和处理(如对包含内存错误的内存页进行隔离处理)。
计算设备300可以是终端设备,终端设备可以包括但不限于手机、平板电脑、台式电脑、笔记本电脑、掌上电脑、智能电视等。计算设备300也可以是独立的物理服务器,例如从功能上划分,该物理服务器可以是通用型服务器、图形处理器(graphics processingunit,GPU)服务器等类型的服务器。从形态上划分,该物理服务器可以是机架服务器,还可以是整机柜服务器。本申请实施例对计算设备的类型不作限定。
需要说明的是,硬件平台(或称为硬件)可以是指计算设备300使用的基础硬件组件和架构,例如处理器(集成内存控制器)、内存控制器(与处理器分立)等等。操作系统是核心系统软件,其他的系统(如应用软件)要运行在操作系统基础之上,操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互关联的系统软件程序。
在一个实施例中,计算设备300中的处理器301可调用外部存储器302(或内部存储器303)存储的程序指令,执行本申请提出的内存错误处理方法,该方法包括:获取上报的可纠正错误;确定错误记录寄存器记录的可纠正错误的错误类型;若错误类型指示可纠正错误为降级的非执行路径内存错误,则对包含可纠正错误的内存页进行内存隔离处理。通过本申请实施例,可将非执行路径内存错误降级为可纠正错误,并及时对降级的非执行路径内存错误进行处理,能够防止错误数据被操作系统加载到处理器的缓存中,降低操作系统被宕机和复位的概率,提高系统可靠性和稳定性。
可以理解的是,图3只是示例性地表征计算设备的结构,并不对计算设备的结构进行限定,即本申请技术方案还可以提供其他结构的计算设备。
下面结合附图对内存错误处理方法涉及的具体实施例进行描述。请参见图4,图4是本申请实施例提供的一种内存错误处理方法的流程示意图。该内存错误处理方法可以由计算设备执行,具体的,该内存错误处理方法由计算设备中的处理器调用相应的计算机程序(包括程序指令)执行。其中,该内存错误处理方法主要包括但不限于如下步骤S401-S403:
S401、获取上报的可纠正错误。
用户可通过BIOS开启错误降级功能,以使检测到的非执行路径内存错误被降级为可纠正错误。其中,BIOS是指基本输入输出系统(basic input output system),是控制硬件以及提供操作系统控制计算机硬件与外接装置的服务器的主要组件。具体的,可响应于进入电脑软件设置界面的请求指令,显示电脑软件设置界面。其中,电脑软件设置界面包括BIOS显示出来供用户自行调整的功能选项,如电脑软件设置界面包括用于开启错误降级功能的控件(一种功能选项)。可响应于针对该用于开启错误降级功能的控件的设置指令,开启错误降级功能。若开启错误降级功能,则当检测到非执行路径内存错误时,将非执行路径内存错误降级为可纠正错误。进而通过可纠正错误中断(即CMCI)上报可纠正错误。可纠正错误中断是专门用于上报可纠正错误的程序,进而可以获取到可纠正错误中断上报的可纠正错误。由此可见,本申请实施例,可通过电脑软件设置界面便捷地开启错误降级功能,使得非执行路径内存错误可以降级为可纠正错误,避免操作系统直接复位。
S402、确定错误记录寄存器记录的可纠正错误的错误类型。
S403、若错误类型指示可纠正错误为降级的非执行路径内存错误,对包含可纠正错误的内存页进行内存隔离处理。
错误记录寄存器可用于记录可纠正错误的错误信息(包括可纠正错误的错误类型)。在一个实施例中,可从错误记录寄存器上读取第一预设比特位的数据,基于第一预设比特位的数据,确定可纠正错误的错误类型。基于该错误类型确定该可纠正错误是否为降级的非执行路径内存错误。这样,便可通过错误记录寄存器记录的错误信息快速判断上报的可纠正错误是否为降级的非执行路径内存错误,可以实现内存错误的快速识别。
举例说明,错误记录寄存器可以为Mci_STATUS寄存器。请参见图5,图5是Mci_STATUS寄存器的示意图。如图5所示,比特位[15:1]的数据表示机器检测架构(MachineCheck Architecture,MCA)定义的错误码(MCA Error Code),包含了详细的错误信息,比如错误发生硬件、触发原因等,所有种类的CPU都能理解MCA Error Code的含义。比特位[31:16]的数据表示MODEL-Specific Error Code(一种错误码,标识了一种错误),对于MODEL-Specific Error Code,每种CPU可以有自己的解释。比特位[56:32]的数据用于提供额外信息,如Other Info表示其他错误信息,Firmware Updated Error Status Indicator表示固件升级错误指示信息,Corrected Error Count表示可纠正错误的数量,Threshold-BasedError Status表示基于阈值的错误状态,AR表示可恢复错误所需的恢复操作(RecoveryAciton Required For UCEError),S表示发出未纠正的可恢复错误的信号(Signaling AnUncorrected Recoverable Error)。比特位[57]的数据(PCC)置1时,表示处理器上下文信息无法支撑软件层面做恢复,需要重启操作系统,置0时,表示错误并未影响到处理器状态,并且可修复错误。比特位[58]的数据(ADDRV)置1时,Mci_ADDR寄存器(一种地址记录寄存器)包含了错误发生的物理地址。比特位[59]的数据(MISCV)置1时,表示MCi_MISC寄存器(一种寄存器)内包含了附加的错误信息,置0时,表示无需读取MCi_MISC寄存器信息。比特位[60]的数据(EN)对应Mci_CTL寄存器(一种寄存器)的使能位。比特位[61]的数据(UC)置1时,表示处理器无法恢复这个硬件故障(即UCE),置0时,表示处理器可以纠正这次错误(即CE)。比特位[62]的数据(OVER)置1时,表示前一次错误还在上报、处理过程中时又发生了硬件错误。比特位[63]的数据(VAL)表示MCi_STATUS寄存器信息是否有效。
由此可见,本申请实施例可以将比特位[31:16]作为第一预设比特位,从Mci_STATUS寄存器上读取比特位[31:16]的数据,基于比特位[31:16]的数据确定错误类型。若比特位[31:16]的数据为OO01H时,表示错误类型为地址奇偶校验错误(address parityerror)。若比特位[31:16]的数据为OO02H时,表示错误类型为写入数据奇偶校验错误(HAwrite data parity error)。若比特位[31:16]的数据为OO04H时,表示错误类型为写入位奇偶校验错误(HA write bite enable parity error)。若比特位[31:16]的数据为OO08H时,表示错误类型为基于巡检机制识别的可纠正错误(corrected patrol scrub error)。若比特位[31:16]的数据为OO10H时,表示错误类型为基于巡检机制识别的不可纠正错误(uncorrected patrol scrub error)。本申请实施例在比特位[31:16]的数据为OO10H时,确定可纠正错误为降级的非执行路径内存错误。
在一个实施例中,若错误类型指示可纠正错误为降级的非执行路径内存错误,则对包含可纠正错误的内存页进行内存隔离处理。具体可以从错误记录寄存器上读取第二预设比特位的数据。若第二预设比特位的数据是有效位数据,则从地址记录寄存器读取包含可纠正错误的内存页的物理地址。有效位数据用于表示地址记录寄存器记录了发生错误的物理地址。例如从Mci_STATUS寄存器读取比特位[58]的数据(ADDRV),若比特位[58]的数据(ADDRV)置1,则可以从Mci_ADDR寄存器读取包含可纠正错误的内存页的物理地址(可以用于唯一标识和访问内存页)。内存管理系统是指对内存页进行管理的系统。在一实现方式中,内存管理系统可以提供一个或多个内存空间,每个内存空间中都可以具有一个或多个内存区域,每个内存区域可以包括一个或多个内存页,内存数据可以以内存页为单位进行管理。可基于包含可纠正错误的内存页的物理地址,为内存管理系统中包含可纠正错误的内存页添加预设标识,预设标识用于指示内存管理系统不分配包含可纠正错误的内存页,即不将该包含可纠正错误的内存页中的内存数据提供给任何对象(如应用软件)。
在一种可选的实现方式中,可以从错误记录寄存器上读取第二预设比特位的数据,当第二预设比特位的数据是有效位数据时,从错误记录寄存器上读取第一预设比特位的数据,再基于第一预设比特位的数据,确定可纠正错误的错误类型。也就是说,在确定地址记录寄存器记录了发生错误的物理地址时,才会去执行内存错误识别和处理。
在一个实施例中,可以从错误记录寄存器读取可纠正错误的错误信息,并生成包含可纠正错误的错误信息的日志文件。例如,利用日志记录服务(如mcelog服务)生成包含可纠正错误的错误信息的日志文件。由此可见,本申请实施例,会利用日志文件记录可纠正错误的错误信息。若错误类型指示可纠正错误不为降级的非执行路径内存错误,确定是否满足内存错误修复条件;若满足内存错误修复条件;基于日志文件对可纠正错误进行修复。具体地,可将该日志文件发送给日志守护进程,日志守护进程用于当满足内存错误修复条件时,基于日志文件对可纠正错误进行修复。其中,满足内存错误修复条件可以是指错误上报周期到达和/或可纠正错误的数量达到预设数量,如满足内存错误修复条件可以是指在24小时内同一个物理地址连续上报50次错误。由此可见,本申请实施例,可对可纠正错误进行批量修复,可以提高操作系统的可靠性和稳定性。
综上所述,请参见图6,图6是本申请实施例提供的又一种非执行路径内存错误的处理流程示意图。在支持对非执行路径内存错误处理降级的CPU平台上,当可纠正错误被检测到后,硬件平台会触发CMCI中断(corrected machine-check error interrupt,纠正机器检查错误中断)记录错误信息。同时识别可纠正错误是否为降级的非执行路径内存错误。若是,则及时对降级的非执行路径内存错误进行修复(即进行内存隔离)。若不是,则记录错误信息,并基于所记录的错误信息的相关信息确定是否满足内存错误修复条件;在满足内存错误修复条件的情况下,对多个可纠正错误进行隔离修复,该隔离修复包括对包含可纠正错误的内存页进行内容隔离处理,以及对可纠正错误进行修复处理。
在一种可实现方式中,可将记录错误信息的日志文件发送给日志守护进程,以使日志守护进程确定满足内存错误修复条件(如在24小时内同一个物理地址连续上报50次错误)时,对多个可纠正错误进行批量修复。具体地,图6中的可纠正错误处理入口函数可以是intel_threshold_interrupt函数,获取硬件错误信息可以调用machine_check_poll函数,记录错误信息可以通过日志记录服务实现。由此可见,本申请实施例,可以及时从软件层面对降级的非执行路径内存错误进行修复,降低系统复位和宕机的概率,提升操作系统的可靠性和稳定性;以及增加系统在线运行时长,减少业务中断时间,提升操作系统的可服务性;同时还可降低用户的运维成本,无需采购支持非执行路径内存错误处理的CPU。
在本申请实施例中,可获取上报的可纠正错误,确定错误记录寄存器记录的可纠正错误的错误类型,若错误类型指示可纠正错误为降级的非执行路径内存错误,则对包含可纠正错误的内存页进行内存隔离处理。由此可见,本申请实施例,可在软件层面将非执行路径内存错误降级为可纠正错误,并及时对降级的非执行路径内存错误进行处理,能够防止错误数据被操作系统加载到处理器的缓存中,降低操作系统被宕机和复位的概率,提高操作系统的可靠性和稳定性。
请参见图7,图7是本申请实施例提供的一种内存错误处理装置的结构示意图。如图7所示,该内存错误处理装置700可应用于前述实施例中所提及的计算设备。具体来说,该内存错误处理装置700可以是运行于计算设备中的一个计算机程序(包括程序指令),例如该内存错误处理装置700为一个应用软件。该内存错误处理装置700具体可以包括:
获取模块701,用于获取上报的可纠正错误;
处理模块702,用于确定错误记录寄存器记录的可纠正错误的错误类型;
处理模块702,还用于若错误类型指示可纠正错误为降级的非执行路径内存错误,则对包含可纠正错误的内存页进行内存隔离处理。
在一实现方式中,处理模块702用于确定错误记录寄存器记录的可纠正错误的错误类型时,具体用于执行如下步骤:
从错误记录寄存器读取第一预设比特位的数据;
基于第一预设比特位的数据,确定可纠正错误的错误类型。
在一实现方式中,错误记录寄存器是Mci_STATUS寄存器;第一预设比特位为Mci_STATUS寄存器的比特位[31:16];处理模块702用于基于第一预设比特位的数据,确定可纠正错误的错误类型时,具体用于执行如下步骤:
若第一预设比特位的数据为0010H,确定可纠正错误的错误类型为降级的非执行路径内存错误。
在一实现方式中,处理模块702还用于执行如下步骤:
检测到非执行路径内存错误,将非执行路径内存错误降级为可纠正错误;
通过可纠正错误中断上报可纠正错误。
在一实现方式中,将非执行路径内存错误降级为可纠正错误之前,处理模块702还用于执行如下步骤:
响应于设置指令,开启错误降级功能。
在一实现方式中,处理模块702用于对包含可纠正错误的内存页进行内存隔离处理时,具体用于执行如下步骤:
从错误记录寄存器上读取第二预设比特位的数据;
若第二预设比特位的数据是有效位数据,从地址记录寄存器读取包含可纠正错误的内存页的物理地址;
基于物理地址,为内存管理系统中包含可纠正错误的内存页添加预设标识,预设标识用于指示内存管理系统不分配包含可纠正错误的内存页。
在一实现方式中,第二预设比特位为Mci_STATUS寄存器的比特位[58];处理模块702用于若第二预设比特位的数据是有效位数据,从地址记录寄存器读取包含可纠正错误的内存页的物理地址时,具体用于执行如下步骤:
若第二预设比特位的数据置1,从地址记录寄存器读取包含可纠正错误的内存页的物理地址。
在一实现方式中,获取上报的可纠正错误之后,处理模块702还用于执行如下步骤:
从错误记录寄存器读取可纠正错误的错误信息;
生成包含可纠正错误的错误信息的日志文件。
在一实现方式中,处理模块702还用于执行如下步骤:
若错误类型指示可纠正错误不为降级的非执行路径内存错误,确定是否满足内存错误修复条件;其中,内存错误修复条件包括达到错误上报周期和/或可纠正错误的数量达到预设数量;
若满足内存错误修复条件,基于日志文件对可纠正错误进行修复。
在本申请实施例中,可获取上报的可纠正错误,确定错误记录寄存器记录的可纠正错误的错误类型,若错误类型指示可纠正错误为降级的非执行路径内存错误,则对包含可纠正错误的内存页进行内存隔离处理。由此可见,本申请实施例,可在软件层面将非执行路径内存错误降级为可纠正错误,并及时对降级的非执行路径内存错误进行处理,能够防止错误数据被操作系统加载到处理器的缓存中,降低操作系统被宕机和复位的概率,提高操作系统的可靠性和稳定性。
本领域技术人员还可以了解到本申请实施例列出的各种说明性逻辑块(illustrative logical block)和步骤(step)可以通过电子硬件、电脑软件,或两者的结合进行实现。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现的功能,但这种实现不应被理解为超出本申请实施例保护的范围。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序包括程序指令,该程序指令被计算设备执行时实现上述任一方法实施例的功能。
上述计算机可读存储介质包括但不限于快闪存储器、硬盘、固态硬盘。
本申请还提供了一种计算机程序产品,该计算机程序产品被计算设备执行时实现上述任一方法实施例的功能。
本领域技术人员还可以理解到本申请实施例列出的各种说明性逻辑块(illustrative logical block)和步骤(step)可以通过电子硬件、电脑软件,或两者的结合进行实现。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员对于相应的应用,可以使用各种方法实现的功能,但这种实现不应被理解为超出本申请实施例保护的范围。
本申请所描述的方案可通过各种方式来实现。例如,这些技术可以用硬件、软件或者硬件结合的方式来实现。对于硬件实现,用于在通信装置(例如,接入网设备,能力降低终端设备、核心网设备或芯片)处执行这些技术的处理单元,可以实现在一个或多个通用处理器、数字信号处理器(digital signal processor,DSP)、数字信号处理器件、专用集成电路(application specific integrated circuit,ASIC)、可编程逻辑器件、现场可编程门阵列(field programmable gate array,FPGA)、或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合中。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算设备上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算设备可以是实现上述任一实施例中的计算设备的功能的装置。示例性的,该装置可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
本申请中对于使用单数表示的元素旨在用于表示“一个或多个”,而并非表示“一个且仅一个”,除非有特别说明。本申请中,在没有特别说明的情况下,“至少一个”旨在用于表示“一个或者多个”,“多个”旨在用于表示“两个或两个以上”。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A可以是单数或者复数,B可以是单数或者复数。
本申请中的预设可以理解为定义、预先定义、存储、预存储、预协商、预配置、固化、或预烧制。
本领域普通技术人员可以理解,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请中各个实施例之间相同或相似的部分可以互相参考。在本申请中各个实施例、以及各实施例中的各个实施方式/实施方法/实现方法中,如果没有特殊说明以及逻辑冲突,不同的实施例之间、以及各实施例中的各个实施方式/实施方法/实现方法之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例、以及各实施例中的各个实施方式/实施方法/实现方法中的技术特征根据其内在的逻辑关系可以组合形成新的实施例、实施方式、实施方法、或实现方法。以上所述的本申请实施方式并不构成对本申请保护范围的限定。
Claims (10)
1.一种内存错误处理方法,其特征在于,所述方法包括:
获取上报的可纠正错误;
确定错误记录寄存器记录的所述可纠正错误的错误类型;
若所述错误类型指示所述可纠正错误为降级的非执行路径内存错误,则对包含所述可纠正错误的内存页进行内存隔离处理。
2.根据权利要求1所述的方法,其特征在于,所述确定错误记录寄存器记录的所述可纠正错误的错误类型,包括:
从错误记录寄存器读取第一预设比特位的数据;
基于所述第一预设比特位的数据,确定所述可纠正错误的错误类型。
3.根据权利要求2所述的方法,其特征在于,所述错误记录寄存器是Mci_STATUS寄存器;第一预设比特位为Mci_STATUS寄存器的比特位[31:16];所述基于所述第一预设比特位的数据,确定所述可纠正错误的错误类型,包括:
若所述第一预设比特位的数据为0010H,确定所述可纠正错误的错误类型为降级的非执行路径内存错误。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
检测到非执行路径内存错误,将所述非执行路径内存错误降级为所述可纠正错误;
通过可纠正错误中断上报所述可纠正错误。
5.根据权利要求4所述的方法,其特征在于,所述将所述非执行路径内存错误降级为所述可纠正错误之前,所述方法还包括:
响应于设置指令,开启错误降级功能。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述对包含所述可纠正错误的内存页进行内存隔离处理,包括:
从所述错误记录寄存器上读取第二预设比特位的数据;
若所述第二预设比特位的数据是有效位数据,从地址记录寄存器读取包含所述可纠正错误的内存页的物理地址;
基于所述物理地址,为内存管理系统中包含所述可纠正错误的内存页添加预设标识,所述预设标识用于指示所述内存管理系统不分配包含所述可纠正错误的内存页。
7.根据权利要求6所述的方法,其特征在于,第二预设比特位为Mci_STATUS寄存器的比特位[58];所述若所述第二预设比特位的数据是有效位数据,从地址记录寄存器读取包含所述可纠正错误的内存页的物理地址,包括:
若所述第二预设比特位的数据置1,从地址记录寄存器读取包含所述可纠正错误的内存页的物理地址。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述获取上报的可纠正错误之后,所述方法还包括:
从所述错误记录寄存器读取所述可纠正错误的错误信息;
生成包含可纠正错误的错误信息的日志文件。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所述错误类型指示所述可纠正错误不为降级的非执行路径内存错误,确定是否满足内存错误修复条件;其中,所述内存错误修复条件包括达到错误上报周期和/或可纠正错误的数量达到预设数量;
若满足所述内存错误修复条件,基于所述日志文件对所述可纠正错误进行修复。
10.一种计算设备,其特征在于,所述计算设备包括:存储器和处理器;所述存储器和所述处理器耦合;
所述存储器用于存储程序指令;所述处理器用于调用所述程序指令,以使所述计算设备执行如权利要求1-9任一项所述的内存错误处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410130276.5A CN117950900A (zh) | 2024-01-30 | 2024-01-30 | 一种内存错误处理方法及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410130276.5A CN117950900A (zh) | 2024-01-30 | 2024-01-30 | 一种内存错误处理方法及计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117950900A true CN117950900A (zh) | 2024-04-30 |
Family
ID=90791964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410130276.5A Pending CN117950900A (zh) | 2024-01-30 | 2024-01-30 | 一种内存错误处理方法及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117950900A (zh) |
-
2024
- 2024-01-30 CN CN202410130276.5A patent/CN117950900A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6832329B2 (en) | Cache thresholding method, apparatus, and program for predictive reporting of array bit line or driver failures | |
US9065481B2 (en) | Bad wordline/array detection in memory | |
US20140188829A1 (en) | Technologies for providing deferred error records to an error handler | |
US20090150721A1 (en) | Utilizing A Potentially Unreliable Memory Module For Memory Mirroring In A Computing System | |
US20150143052A1 (en) | Managing faulty memory pages in a computing system | |
US20140019814A1 (en) | Error framework for a microprocesor and system | |
US10430267B2 (en) | Determine when an error log was created | |
WO2021135272A1 (zh) | 一种内存异常的处理方法、系统、电子设备及存储介质 | |
US20030037280A1 (en) | Computer memory error management system and method | |
US6550019B1 (en) | Method and apparatus for problem identification during initial program load in a multiprocessor system | |
US20060248411A1 (en) | Methods and apparatus for reducing memory errors | |
WO2023193396A1 (zh) | 一种内存故障处理方法、装置及计算机可读存储介质 | |
CN104685474A (zh) | 包括不可纠正的错误的地址范围的通知 | |
US11182233B2 (en) | Method for event log management of memory errors and server computer utilizing the same | |
CN111221775B (zh) | 处理器、缓存处理方法及电子设备 | |
CN112667422A (zh) | 内存故障处理方法及装置、计算设备、存储介质 | |
CN115981898A (zh) | 一种内存可纠错误处理方法、装置、设备及可读存储介质 | |
CN115705261A (zh) | 内存故障的修复方法、cpu、os、bios及服务器 | |
US10635554B2 (en) | System and method for BIOS to ensure UCNA errors are available for correlation | |
CN105868038B (zh) | 内存错误处理方法及电子设备 | |
Kleen | Mcelog: Memory error handling in user space | |
CN117950900A (zh) | 一种内存错误处理方法及计算设备 | |
CN117093389A (zh) | 内存故障判定方法、装置、介质及电子设备 | |
CN111506460B (zh) | 内存故障的处理方法、装置、移动终端及存储介质 | |
WO2021202431A1 (en) | Targeted repair of hardware components in a computing device |
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 |