CN117472622A - 隔离故障内存的方法、装置、设备及存储介质 - Google Patents

隔离故障内存的方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117472622A
CN117472622A CN202311287751.1A CN202311287751A CN117472622A CN 117472622 A CN117472622 A CN 117472622A CN 202311287751 A CN202311287751 A CN 202311287751A CN 117472622 A CN117472622 A CN 117472622A
Authority
CN
China
Prior art keywords
memory
memory unit
error
detected
management module
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
CN202311287751.1A
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.)
China Great Wall Technology Group Co ltd
Original Assignee
China Great Wall Technology Group 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 China Great Wall Technology Group Co ltd filed Critical China Great Wall Technology Group Co ltd
Priority to CN202311287751.1A priority Critical patent/CN117472622A/zh
Publication of CN117472622A publication Critical patent/CN117472622A/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/0706Error 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/073Error 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
    • 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/0793Remedial 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)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请适用于内存技术领域,提供了一种隔离故障内存的方法、装置、设备及存储介质,该方法包括:利用内存故障的专用内存管理模块读取待检测内存单元的错误次数;利用所述专用内存管理模块,根据所述错误次数从所述待检测内存单元中筛选出目标内存单元,所述目标内存单元是所述错误次数大于或等于预设隔离次数阈值的内存单元;利用所述专用内存管理模块指示隔离模块根据所述目标内存单元所对应的地址信息对所述目标内存单元进行隔离。该方案利用专用内存管理模块筛选目标内存单元,可以避免误隔离正常状态的内存单元,有利于准确识别故障内存单元。

Description

隔离故障内存的方法、装置、设备及存储介质
技术领域
本申请涉及内存技术领域,尤其涉及一种隔离故障内存的方法、装置、设备及存储介质。
背景技术
计算机内存是计算机系统中的关键组成部分,对于计算机的运行和性能起着重要作用。如果计算机内存发生故障可能会导致系统崩溃、数据丢失、程序错误、性能下降以及系统不稳定等危害。
在传统方案中,内存故障的处理进程存在着跟计算机系统中的其他处理进程抢占系统资源的现象,导致内存故障的处理进程难以做到第一时间响应,不利于内存故障的及时处理。
发明内容
本申请实施例提供了一种隔离故障内存的方法、装置、设备及存储介质,可以解决如何及时识别并隔离发生故障的内存单元的技术问题。
第一方面,本申请实施例提供了一种隔离故障内存的方法,包括:
利用内存故障的专用内存管理模块读取待检测内存单元的错误次数。通过筛选错误发生次数较高的内存单元,可以提高系统的可靠性。
利用专用内存管理模块,根据错误次数从待检测内存单元中筛选出目标内存单元,目标内存单元是错误次数大于或等于预设隔离次数阈值的内存单元。将专用内存管理模块作为判断目标内存单元是否需要隔离的决策和处理中心,可以提供更精确和准确的内存管理功能,一旦发现需要隔离的内存单元,可以立即做出决策和处理。这样可以快速精准地识别和定位内存故障,避免误隔离不需要隔离的内存单元。
利用专用内存管理模块指示隔离模块根据目标内存单元所对应的地址信息对目标内存单元进行隔离。隔离操作可以防止发生故障的内存单元被继续使用,进而避免其对系统的正常运行造成更大的影响。
第二方面,本申请实施例提供了一种隔离故障内存的装置,该装置具有实现第一方面或其任意可能的实现方式中的方法的功能。具体地,该装置包括实现第一方面或其任意可能的实现方式中的方法的单元。
在其中的一个实施例中,该装置包括:
获取单元,用于利用内存故障的专用内存管理模块读取待检测内存单元的错误次数。
处理单元,用于利用专用内存管理模块,根据错误次数从待检测内存单元中筛选出目标内存单元,目标内存单元是错误次数大于或等于预设隔离次数阈值的内存单元。
处理单元还用于,利用专用内存管理模块指示隔离模块根据目标内存单元所对应的地址信息对目标内存单元进行隔离。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,该处理器执行计算机程序时,使得计算机设备实现上述第一方面任意一种实现方式的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被计算机设备执行时,使得计算机设备实现上述第一方面任意一种实现方式的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备执行上述第一方面任意一种实现方式的方法。
本申请实施例与现有技术相比存在的有益效果是:将待检测内存单元发生的错误次数作为筛选出目标内存单元的依据,提高了判断的可靠性;由于专用内存管理模块是专门设计用于管理和监控计算机内存的模块,具有更高的专业性和专注度,将专用内存管理模块作为判断是否需要隔离内存单元的决策和处理中心,通过检测内存单元的错误次数是否大于或等于预设次数阈值来精准识别判断出发生故障的内存单元,可以实现精准隔离,避免误隔离正常状态的内存单元;由于地址信息和内存单元具有唯一对应关系,根据地址信息将筛选出的目标内存单元进行精准隔离,是避免误隔离正常状态的内存单元的双重验证,可以最大程度地保证隔离内存单元的准确性。
附图说明
图1是本申请实施例提供的一种本申请实施例解决内存故障和传统方案解决内存故障的对比示意图。
图2是本申请实施例提供的一种隔离故障内存的流程示意图。
图3是本申请实施例提供的一种专用内存管理模块处理目标内存单元的地址信息的流程示意图。
图4是本申请实施例提供的一种触发内存故障处理的流程示意图。
图5是本申请实施例提供的另一种内存故障处理方法的流程示意图。
图6是本申请实施例提供的隔离故障内存的装置的结构示意图。
图7是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
内存(Memory)是计算机系统中用于存储和读写数据的硬件设备,它是计算机的重要组成部分,用于临时存储和处理数据和指令。
内存由一系列存储单元组成,每个存储单元都可以存储一个固定大小的数据单元(通常是字节)。这些存储单元按照一定的地址顺序排列,每个存储单元都有一个唯一的地址,用于访问和读写数据。如果内存出现故障,就会导致计算机无法正常读取或写入数据,出现系统崩溃、程序崩溃、数据丢失或错误等问题。
下面结合图1来具体解释解决内存故障的两种场景。
图1是本申请实施例提供的一种本申请实施例解决内存故障和传统方案解决内存故障的对比示意图。
图1中的A部分是本申请实施例提供的一种解决内存故障的方式,该方法是利用专用内存管理模块来解决内存故障,当内存故障检测模块检测到内存故障信息之后,可以将该内存故障信息发送给专用内存管理模块。此时,专用内存管理模块可以判断哪些内存需要隔离,哪些内存不需要隔离,当判断出需要隔离的内存之后,专用内存管理模块向内存故障处理模块发送隔离指示信息,内存故障处理模块根据隔离指示信息将对应的内存单元进行隔离。
图1中的B部分是传统方案中提供的一种解决内存故障的方式,该方法是利用通用的基板管理控制器(Baseboard Management Controller,BMC)来解决内存故障。计算机系统中可能会出现多种多样的故障,例如电源故障、网络故障、内存故障、CPU故障等其他故障。当发生各种各样的故障时,对应的故障检测模块会将各种故障信息发送给基板管理控制器,基板管理控制器会统一处理各种故障信息,并发出指示信息,以便对应的故障处理模块进行处理。
如图1中的B部分所示,当发生电源故障时,电源故障检测模块发送电源故障信息给基板管理控制器,基板管理控制器向电源故障处理模块发送处理电源故障指示信息,电源故障处理模块对电源故障进行处理。当发生网络故障时,网络故障检测模块发送网络故障信息给基板管理控制器,基板管理控制器向网络故障处理模块发送处理网络故障指示信息,网络故障处理模块对网络故障进行处理。当发生内存故障时,内存故障检测模块发送内存故障信息给基板管理控制器,基板管理控制器向内存故障处理模块发送内存隔离指示信息,内存故障处理模块对内存故障进行隔离。当发生其他故障时,其他故障检测模块发送其他故障信息给基板管理控制器,基板管理控制器向其他故障处理模块发送处理其他故障指示信息,其他故障处理模块对其他故障进行处理。
通过上述两种方式的对比可以明显看出,基板管理控制器需要处理多种类型的计算机故障,当同时出现多种故障,或者出现的故障较多时,基板管理控制器不一定能够第一时间处理内存故障,这就会导致内存故障得不到及时处理,产生系统宕机等一系列问题。
针对上述问题,本申请提出了一种隔离故障内存的方法,通过将专用内存管理模块作为处理和决策中心,利用专用内存管理模块来判断哪些内存单元需要隔离,哪些内存单元不需要隔离,避免误隔离可以正常使用的内存单元。
为了进一步说明本申请的技术方案,下面通过具体实施例来说明。
图2是本申请实施例提供的一种隔离故障内存的流程示意图。
如图2所示,上述方法包括以下步骤S201~S203。
S201、利用内存故障的专用内存管理模块读取待检测内存单元的错误次数。
专用内存管理模块(Management Mode,MM)是一种硬件或软件组件,用于监控、管理和控制计算机系统中的内存资源。它通常是一个独立的模块,负责执行内存管理任务,包括内存错误检测、纠正和隔离、内存分配和释放、内存映射和地址转换等。专用内存管理模块可以与其他系统组件(如处理器、操作系统、存储控制器等)进行通信,以实现对内存的有效管理和优化。
待检测内存单元既可以是计算机中或电子设备中的所有内存单元,也可以是计算机中或电子设备中的部分内存单元。可以是一个也可以是多个,对于待检测内存单元的具体数量或范围可以根据实际情况来具体选择,此处不作限定。
在一种实现方式中,待检测内存单元可以是ARM架构的服务器中的内存单元。ARM架构的处理器通常具有较低的功耗,在能源效率方面具有优势,可以更好地应用于大规模数据中心和云计算环境。
错误次数用于表示待检测内存单元发生故障的次数。这种错误可以是可纠正错误(Correctable Errors),也可以是不可纠正错误(Uncorrectable Errors),此处不作限定。
S202、利用专用内存管理模块,根据错误次数从待检测内存单元中筛选出目标内存单元。
目标内存单元是错误次数大于或等于预设隔离次数阈值的内存单元。
也就是说,目标内存单元是需要隔离的内存单元,也可以理解为,是无法正常工作的内存单元。
可以理解,并非是所有发生错误的内存单元都需要隔离,有的内存单元即使发生了错误,但是只要发生错误的情况在允许范围内,这样的内存单元就不需隔离,例如,只发生过一次可纠正错误的内存单元通常不需要隔离。
此处可以通过判断内存单元的错误次数是否大于或等于预设隔离次数阈值来从待检测内存单元中筛选出目标内存单元。
可以理解,预设隔离次数阈值根据不同的应用场景、不同的计算机设备或电子设备而有所不同,并不是一个唯一恒定的数值,例如可以取值3次等,此处不作限定。
例如,当对计算机或电子设备的性能要求较高时,预设隔离次数阈值的数值就应较低,反之,当对计算机或电子设备的性能要求较低时,预设次数阈值的数值就应较高。
将专用内存管理模块作为判断目标内存单元是否需要隔离的决策和处理中心,能够提供更精确和准确的内存管理功能。因为专用内存管理模块通常具有较高的性能和低延迟,能够快速响应内存故障,并采取相应措施进行处理,并且作为一个独立的硬件模块,专用内存管理模块是与其他系统组件相互隔离的,不容易受到其他组件故障的影响。即使其他组件发生了故障,专用内存管理模块也可以正常工作,大大提高了内存故障识别的稳定性。
此种方式与将基板管理控制器作为判断目标内存单元是否需要隔离的决策和处理中心相比,具有以下几点区别。
BMC是一种通用的管理控制器,负责监控和管理整个计算机系统的各个组件,包括CPU、硬盘、电源等。相比之下,专用内存管理模块专注于内存管理,提供更专业和精确的内存管理功能。例如,BMC可能需要处理多个系统组件的管理和监控任务,而专用内存管理模块只需关注内存相关的任务。
BMC通常具有较低的性能和较高的延迟,因为它需要处理多个系统组件的管理和监控任务。这可能导致在处理内存故障时的响应时间较长。相比之下,专用内存管理模块专注于内存管理,具有更高的性能和更低的延迟。
BMC通常是一个集成在主板上的组件,与其他系统组件共享相同的电源和资源。这使得它在面对系统故障时容易受到影响,可能导致其自身功能的受限。相比之下,专用内存管理模块是一个独立的硬件模块,具有更高的可靠性和独立性。
举例来说,假设在一个服务器系统中,专用内存管理模块被用作判断目标内存单元是否需要隔离的决策和处理中心。当专用内存管理模块检测到某个内存单元出现故障时,它可以立即采取措施将该内存单元隔离,以避免对系统的影响。隔离后,专用内存管理模块可以记录故障信息,并通知系统管理员进行进一步的处理。同时,专用内存管理模块还可以监控其他内存单元的状态,以确保系统的稳定性和可靠性。相比之下,如果使用基板管理控制器作为判断目标内存单元是否需要隔离的决策和处理中心,基板管理控制器可能需要处理多个系统组件的管理和监控任务。当基板管理控制器检测到内存故障时,它可能需要与其他组件进行通信,并与其他决策中心进行协调,以确定是否需要隔离目标内存单元。这可能导致响应时间较长,并可能受到其他组件故障的影响。
也就是说,将BMC作为判断目标内存单元是否需要隔离的决策和处理中心可以理解为是一种判断内存故障的通用的方法,侧重于通用性;而将MM作为判断目标内存单元是否需要隔离的决策和处理中心可以理解为是一种专用的方法,侧重于专用性。
S203、利用专用内存管理模块指示隔离模块根据目标内存单元所对应的地址信息对目标内存单元进行隔离。
当确定了哪些内存单元需要隔离之后,即筛选出目标内存单元之后,需要确查找出每一个目标内存单元对应的地址信息,方便后续步骤中对目标内存单元进行精准隔离。
专用内存管理模块确定了需要隔离的内存单元的地址信息,就可以指示隔离模块将这些地址对应的页面进行隔离。隔离内存意味着将其从系统的内存池中分离,防止其继续被使用,以避免对系统的正常运行造成进一步的影响。
具体的隔离形式此处不作限定,例如可以将目标内存单元标记为不可访问、或将目标内存单元标记为只读、或将目标内存单元移动到特定的备份区域等等。
上述方法,将待检测内存单元发生的错误次数信息作为筛选出目标内存单元(需要隔离的内存单元)的依据,提高了判断的可靠性,也可以减少对整个内存系统的维护成本,即只需关注具有较高故障概率的内存单元,而不是对整个内存系统进行全面的维护和更换;然后将MM作为判断是否需要隔离内存单元的决策和处理中心,通过检测内存单元的错误次数是否大于或等于预设隔离次数阈值来精准判断出发生故障的内存单元,避免误隔离可以正常使用的内存单元,能够快速响应内存故障;最后根据地址信息将筛选出的目标内存单元进行精准隔离,可以最大程度地保证系统性能和运行的稳定性。
在一种实现方式中,根据内存故障的处理机制,为内存故障检测创建专用内存管理模块。
此处可以通过创建一个专门的内存管理模块来监测和处理内存故障。该模块负责检测内存中的错误,并根据错误的类型和严重程度采取相应的措施。它可以使用硬件或软件的方式来监测内存的状态,例如检测内存位翻转、电压噪声等。
作为示例而非限定,可以在系统中添加一个专用的硬件模块作为专用内存管理模块,该模块与内存子系统紧密集成,可以直接访问内存并监测其状态。
通过创建一个专用的内存管理模块,可以提高系统对内存故障的检测和处理能力,增强系统的稳定性和可靠性。
在一种实现方式中,利用专用内存管理模块,根据错误次数从待检测内存单元中筛选出目标内存单元,包括:当预设时间内待检测内存单元的错误发生的次数大于或等于预设隔离次数阈值时,将待检测内存单元确定为目标内存单元。
预设时间可以根据实际情况来设置,例如,24h、48h等,此处不作限定。
预设隔离次数阈值可以根据实际情况来设置,例如,3次、5次等,此处不作限定。
可以理解,对计算机设备的性能要求不同的场景,对内存单元错误的发生频率有不同的要求。当内存单元在某一段时间内发生错误次数大于一定的次数时,即发生的频率大于某一数值时,说明该内存单元产生故障的可能性越大,此时可以根据实际需要进行隔离处理。
在一种实现方式中,根据目标内存单元的地址信息生成常见平台错误记录对象信息并进行存储;解析常见平台错误记录对象信息得到目标内存单元的地址信息;根据目标内存单元地址信息将对应的目标内存单元进行隔离。
下面结合图3来具体介绍。
图3是本申请实施例提供的一种专用内存管理模块处理目标内存单元的地址信息的流程示意图。如图3所示,图3包括以下步骤S301~S303。
S301、专用内存管理模块获取目标内存单元的地址信息。
当确定出目标内存单元后,MM可以通过查找内存地址信息列表来获取目标内存单元的地址信息。
可以理解,MM获取到的地址信息都是需要隔离的内存单元的地址信息。MM既可以实时获取一条或多条目标内存单元的地址信息,也可以定时获取一条或多条目标内存单元的地址信息,此处不做限定。
S302、根据目标内存单元的地址信息生成常见平台错误记录对象信息。
常见平台错误记录对象(Common Platform Error Record blobs,CPER blobs)是一种用于记录和报告计算机系统硬件错误和故障的标准化数据结构。它可以包括内存错误的详细信息,如错误类型、错误源、错误时间戳等。CPER blobs通常用于记录和报告系统中发生的错误,以便进行故障排查和错误处理。
在获取到目标内存单元的地址信息之后,根据该地址信息,MM可以生成常见平台错误记录对象信息。这些错误记录对象可以包括错误类型、错误地址、错误次数等信息。它们可以作为故障诊断和排除的参考,帮助管理员快速定位和解决问题,同时,也可以用于生成报告和警报,提醒管理员注意系统中存在的错误和潜在的风险。
S303、将常见平台错误记录对象信息发送到可拓展固件接口中存储。
可拓展固件接口(Unified Extensible Firmware Interface,UEFI)是一种现代化的固件接口标准。
MM获取到目标内存单元的地址信息之后,MM可以直接将目标内存单元的地址信息,也就是发生故障的需要隔离的内存单元的地址信息上报给UEFI。UEFI可以根据这些地址信息,快速定位故障发生的具体内存位置。这样可以加快故障定位的速度,减少排除故障的时间和努力。
通过MM提供的故障内存单元的地址信息,UEFI可以准确地确定故障发生的内存地址。这对于故障排除和修复非常重要,可以快速定位故障点,避免不必要的维修和更换。
MM可以实时获取故障内存单元的地址信息,并及时上报给UEFI。这使得UEFI能够在故障发生后立即得到相关信息,可以及时采取措施进行故障处理,减少系统的停机时间和影响,可以加强系统的故障处理能力。及时而准确地定位和处理内存故障,有助于提高系统的可靠性和稳定性,减少系统崩溃和数据丢失的风险。
可以理解,将CPER blobs存储到UEFI中之后,操作系统就可以从UEFI中获取并解析出目标内存单元的地址信息,然后操作系统根据该地址信息把对应的目标内存单元隔离。
在一种实现方式中,从存储有内存故障信息的寄存器中读取待检测内存单元的错误次数。
此处的寄存器可以是错误记录寄存器。错误记录寄存器(Error RecordRegister)是一种用于存储和记录系统或设备中发生的错误信息的寄存器。它可以记录异常、故障或错误事件的相关信息。
此处所说的错误记录寄存器可以存储待检测内存单元的CE次数信息和对应的地址信息。当内存发生错误时,前述信息会被写入错误记录寄存器中,通过读取错误记录寄存器,系统或设备的软件可以获取错误信息,帮助开发人员和维护人员快速定位和解决问题,提高系统的可靠性和可维护性。
在一种实现方式中,在错误中断程序的触发下读取待检测内存单元的错误次数。
错误中断程序(Error Interrupt)用于处理系统或设备中发生的错误事件。当系统或设备检测到内存错误时,会触发一个错误中断,通知处理器或操作系统发生了异常情况,需要进行相应的错误处理。
当出现内存错误触发错误中断程序时,计算机设备或电子设备会产生对应的错误信息,包括待检测内存单元的CE次数信息和对应的地址信息。
当接收到错误中断的中断信号时,处理器可以立即停止当前的任务,并保存当前的上下文信息,以便后续恢复。在错误处理完成后,处理器会恢复之前被中断的任务的上下文信息,继续执行中断发生之前的任务。通过使用错误中断,系统可以及时地检测和处理错误事件,避免错误的进一步影响和扩散。错误中断的处理可以提高系统的可靠性和稳定性,确保系统在发生错误时能够正确地响应和处理。
在一种实现方式中,专用内存管理模块将目标内存单元的地址信息转发到基板管理控制器中。
基板管理控制器用于管理和监控计算机系统中的硬件和基板。它通常嵌入在服务器、网络设备和其他计算机系统的主板上。也可以理解为BMC是一种位于主板上的管理控制器,负责监控和管理整个系统。
当待检测内存单元发生错误时,MM可以将目标内存单元的地址信息上报给BMC。此时,并非是利用BMC作为判断发生故障的内存单元是否需要隔离的决策和处理中心,可以理解为只是一个通知的行为,MM将故障内存单元的地址信息发送给BMC,可以使BMC更方便地获取故障内存单元的信息,便于进行后续的其他系统处理操作。
可以理解,专用内存管理模块可以通过直接与内存控制器进行通信,实时获取内存单元的错误次数和地址信息。这种直接的通信方式可以提高数据传输的效率和响应速度,确保及时准确地传递内存单元的错误信息。
在一种实现方式中,在获取待检测内存单元的错误次数之前,还包括以下步骤S401~S402。
图4是本申请实施例提供的一种触发内存故障处理的流程示意图。如图4所示,图4包括以下步骤S401~S402。
S401、监听发生错误的待检测内存单元的数量。
可以理解,不是任意一个内存单元出现故障时就会执行上文中叙述的内存故障处理程序。只有一定数量的待检测内存单元出现错误时,才会触发上文中叙述的内存故障处理程序。
此时可以实时监听待检测内存单元出现错误的数量,也可以定时监听待检测内存单元出现错误的数量,例如在工作时间监听,非工作时间不监听。具体的监听方式可以根据实际情况来选择,此处不作限定。
S402、当发生错误的待检测内存单元的数量大于或等于预设触发数量阈值时,执行内存故障处理方法的步骤。
可以理解,预设触发数量阈值根据不同的应用场景、不同的计算机设备或电子设备而有所不同,并不是一个唯一恒定的数值,此处不作限定。
当发生错误的待检测内存单元的数量满足预设触发数量阈值时,才会触发上文中叙述的内存故障处理程序。也就是说,当发生错误的待检测内存单元的数量满足预设触发数量阈值时,才开始执行上文中的步骤S201~S204;反之,则不执行。
通过设置与应用场景和应用设备相匹配的预设触发数量阈值作为触发内存故障处理程序的门槛,可以过滤掉少量、偶发的错误,只关注数量较多的错误。这样可以减少误报和不必要的干预,集中精力处理那些真正需要关注的内存故障。
也就是说,只有当发生错误的待检测内存单元的数量达到或超过预设触发数量阈值时,才执行内存故障处理方法的步骤。这样可以避免频繁地执行故障处理方法,减少对系统性能的影响,提高处理效率。
下面结合图5来整体性地介绍上文中提到的隔离故障内存的方法。
图5是本申请实施例提供的另一种内存故障处理方法的流程示意图。
S501、获取发生错误的待检测内存单元的数量。
结合上文可知,此处可以通过读取错误记录寄存器(Error Record Register)或触发错误中断(Error Interrupt)程序这两种方式来获取内存错误的数量信息。
S502、触发内存异常错误。
当检测到内存发生错误的数量超过了处理器基础固件设置的错误数量阈值时,RAS错误处理模块会触发内存异常错误。
处理器基础固件(Processor Base Firmware,PBF)位于处理器内部,与处理器硬件紧密集成,负责管理和控制处理器的基本功能和特性。
此处的PBF主要有三大模块功能,包括:RAS错误处理(RAS Error Handler)、安全分区管理(Secure Partition Manager,SPM)以及软件委派异常接口调度(SoftwareDelegated Exception Interface Dispatcher,SDEIDispatcher)。
RAS是指可靠性(Reliability)、可用性(Availability)和系统可以提供的诊断功能(Serviceability)。
RAS作为一个整体,其作用在于确保整个系统尽可能长期可靠的运行而不下线,并且具备足够强大的容错机制。这对于像大型的数据中心,网络中心如股票证券交易所,电信机房,银行的数据库中心等应用环境是不可或缺的一部分。
SPM是一种软件组件,用于管理和控制处理器上的安全分区。安全分区是一种硬件隔离的机制,用于将不同的软件组件或任务隔离开来,以提高系统的安全性和可信度。
SDEIDispatcher是指是一种软件组件,它负责处理和分发处理器上发生的异常事件。SDEIDispatcher是在ARM架构中引入的,用于处理处理器的异常事件,包括中断、系统调用、虚拟化异常等。它负责将异常事件分发给相应的处理程序,并根据调度策略对异常事件进行调度和管理。SDEI调度器的存在可以提高处理器对异常事件的处理效率和灵活性,从而提高系统的可靠性和性能。
内存异常错误包括:同步外部中断(Synchronous External Abort)和系统错误中断(System Error Interrupt)这两种错误类型。
Synchronous External Abort是一种ARM处理器的异常类型,它表示在执行指令时发生了一个同步的外部中断或异常。当处理器尝试访问一个无效的物理地址或者执行了一个非法的指令时,可能会触发Synchronous External Abort异常。这种异常通常是由于软件错误、内存故障或总线错误等原因引起的。
System Error Interrupt(SEI)是一种用于ARM处理器的中断类型,它表示系统级别的错误或异常。当处理器检测到系统级别的错误,例如内部总线错误、内存控制器错误、外设错误等,就会触发System Error Interrupt中断。SEI通常用于指示严重的系统错误,需要立即处理或进行系统重启。在ARM处理器中,Synchronous External Abort和SystemError Interrupt都是用于处理系统中出现的错误或异常情况。它们的触发可以帮助系统进行错误处理、故障诊断和恢复操作。
结合上文,可以理解,当存在同步外部中断和系统错误中断中的任意一种错误类型时,RAS模块将该错误类型发送到PBF中进行异常处理。
PBF接收到内存异常错误时,获取发生错误的待检测内存单元的数量信息和对应的地址信息。
结合上文可知,上述数量信息和地址信息可以保存在相应的寄存器中,PBF通过读取相应的寄存器来获取该数量信息和地址信息。
S503、调用SPM程序。
PBF调用SPM程序的作用是管理和控制处理器上的安全分区。
安全分区是一种特殊的软件环境,用于运行敏感的计算任务和应用程序。它提供了一种隔离的执行环境,可以保护敏感数据和代码免受恶意软件和攻击的影响。
例如,PBF通过调用SPM程序,可以创建和销毁安全分区。当需要创建新的安全分区时,PBF会向SPM发送相应的请求,SPM根据请求创建一个新的安全分区。当安全分区不再需要时,PBF可以通过调用SPM销毁安全分区。
再例如,PBF可以通过调用SPM程序,启动和停止安全分区。当需要启动安全分区时,PBF会向SPM发送启动请求,SPM会加载安全分区的代码和数据,并将处理器切换到安全分区的执行环境。当安全分区不再需要运行时,PBF可以通过调用SPM停止安全分区,并将处理器切换回非安全分区的执行环境。
PBF通过调用SPM程序,可以实现安全分区之间的通信和交互。SPM提供了一些接口和机制,使安全分区能够安全地进行数据交换和协作。通过PBF和SPM的配合,可以实现安全分区的隔离和保护,提高系统的安全性和可靠性。
S504、MM判断出目标内存单元并发送给BMC。
结合上文可知,当MM检测到某待检测内存单元发生的错误次数大于或等于预设隔离次数阈值,就将认定该待检测内存单元是目标内存单元。同时,MM将目标内存单元的地址信息发送给BMC,从而方便BMC进行其他系统管理操作。
S505、MM生成CPER blobs。
MM根据目标内存单元的地址信息生成CPER blobs。
MM可以获取到目标内存单元的地址信息,然后根据该地址信息生成CPER blobs,并将前述CPER blobs填充到APEI表(ACPIPlatform Error Interface Table)中指定的空间里。
APEI是ACPI(Advanced Configuration and Power Interface)规范定义的一种接口,用于提供平台错误信息的传递和处理机制。APEI表是一个数据结构,用于存储和传递与平台错误相关的信息。也就是说,MM会根据系统中发生的错误情况,生成相应的CPER数据块。然后,MM会将这些CPER数据块填充到APEI表中指定的空间中。这样,系统的其他组件(如操作系统或固件)就可以通过访问APEI表来获取和处理这些错误信息,方便内存故障处理过程。
S506、调用隔离处理程序。
PBF通知SDEIDispatcher调用SDEI Client来调用操作系统中的隔离处理程序。
SDEI Client是指使用SDEI(System Design and Execution Interface)的客户端应用程序或组件。SDEI是一种软件接口和协议,用于在ARM架构的系统中实现安全的、可靠的系统设计和执行。
SDEI Client可以是运行在ARM处理器上的任何应用程序或组件,包括操作系统内核、驱动程序、应用程序等。它们使用SDEI提供的接口和协议来与SDEIDispatcher(调度器)进行通信,并执行特定的系统设计和执行任务。
PBF在隔离处理程序的注册过程将告知SDEI调度器有关隔离处理程序的位置和可用性。
PBF通过向SDEI调度器发送异常事件请求来触发异常事件。当SDEI调度器接收到异常事件请求后,它将根据异常事件的优先级和处理程序的可用性,决定是否调用隔离处理程序。如果隔离处理程序已注册并可用,SDEI调度器将调用该处理程序来处理异常事件。
一旦SDEI调度器决定调用隔离处理程序,它将传递相关的参数和数据给该处理程序,并将处理器切换到隔离处理程序的执行环境。隔离处理程序可以是操作系统内核中的一部分,用于处理特定的隔离任务或事件。
PBF通知SDEI调度器调用操作系统中的隔离处理程序的作用是实现隔离和保护敏感的计算任务和应用程序。通过在隔离处理程序中执行敏感任务,可以确保这些任务在受到恶意软件和攻击时不会泄露敏感数据或受到破坏。
也可以理解为,隔离处理程序提供了一个独立的执行环境,可以隔离敏感任务和应用程序,防止它们与其他不受信任的软件或恶意代码进行交互。隔离处理程序可以确保敏感数据在处理过程中得到保护。它可以提供加密、访问控制和安全通信等机制,以确保敏感数据的机密性和完整性,防止恶意软件和攻击利用系统漏洞来破坏或干扰敏感任务的执行。
S507、隔离目标内存单元。
操作系统从可拓展固件接口中获取并解析地址信息,根据该地址信息把对应的内存单元隔离。
操作系统利用APEIDriver从APEI Table中获取CPER blobs,解析出目标内存单元的地址信息,然后将对应的目标内存单元隔离。
APEIDriver是一种驱动程序,用于在操作系统中实现对ACPI(AdvancedConfiguration and Power Interface)平台错误接口的支持。APEI是ACPI的扩展,提供了一种用于处理内存错误的接口和机制。
例如,当需要隔离某个内存地址时,操作系统可以将其对应的页面标记为不可访问或只读,或者将其移动到特定的备份区域。这样,访问该地址时,操作系统会检测到权限错误或者页面不存在的错误,并进行相应的处理。
当访问被隔离的内存地址时,操作系统会捕获到相关的错误,例如访问权限错误或者页面不存在错误。操作系统可以根据错误类型进行相应的处理,例如终止进程、生成错误报告或者进行其他的容错操作。
上文主要结合附图对本申请实施例的方法进行了介绍。应理解,虽然如上所述的各实施例所涉及的流程图中的各个步骤依次显示,但是这些步骤并不是必然按照图中所示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。下面结合附图对本申请实施例的装置进行介绍。为了简洁,在下文介绍装置时,会进行适当省略,相关内容可以参照上文的方法中的相关描述,不再重复介绍。
图6申请实施例提供的一种隔离故障内存的装置的结构示意图。
如图6所示,该装置1000包括以下单元。
获取单元1001,用于利用内存故障的专用内存管理模块读取待检测内存单元的错误次数。
处理单元1002,用于利用专用内存管理模块,根据错误次数从待检测内存单元中筛选出目标内存单元,目标内存单元是错误次数大于或等于预设隔离次数阈值的内存单元。
处理单元1002还用于,利用专用内存管理模块指示隔离模块根据目标内存单元所对应的地址信息对目标内存单元进行隔离。
在一种实现方式中,上述获取单元1001还可以用于执行上述步骤S301以及S501中的方法。
在一种实现方式中,上述处理单元1002还可以用于执行上述步骤S302~S303、S401~S402以及S502~S508中的方法。
在一种实现方式中,该装置1000还包括存储单元,该存储单元可以用于存储指令和/或数据,从而实现上述实施例中的方法。
需要说明的是,上述单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
图7是本申请实施例提供的计算机设备的结构示意图。如图7所示,该实施例的计算机设备3000包括:至少一个处理器3100(图7仅示出一个)处理器、存储器3200以及存储在存储器3200中并可在至少一个处理器3100上运行的计算机程序3210,处理器3100执行计算机程序3210时,使得所述计算机设备实现上述实施例中的步骤。
处理器3100可以是中央处理单元(Central Processing Unit,CPU),该处理器3100还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器3200在一些实施例中可以是计算机设备3000的内部存储单元,例如计算机设备3000的硬盘或内存。存储器3200在另一些实施例中也可以是计算机设备3000的外部存储设备,例如计算机设备3000上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器3200还可以既包括计算机设备3000的内部存储单元也包括外部存储设备。存储器3200用于存储操作系统、应用程序、引导装载程序(Boot Loader)数据以及其他程序等,例如计算机程序的程序代码等。存储器3200还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被计算机设备执行时,使得计算机设备实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备能够实现上述各个方法。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,使得计算机设备可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。在描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
另外,在本申请说明书和所附权利要求书的描述中,术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置、计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置、计算机设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种隔离故障内存的方法,其特征在于,包括:
利用内存故障的专用内存管理模块读取待检测内存单元的错误次数;
利用所述专用内存管理模块,根据所述错误次数从所述待检测内存单元中筛选出目标内存单元,所述目标内存单元是所述错误次数大于或等于预设隔离次数阈值的内存单元;
利用所述专用内存管理模块指示隔离模块根据所述目标内存单元所对应的地址信息对所述目标内存单元进行隔离。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据内存故障的处理机制,为内存故障检测创建所述专用内存管理模块。
3.根据权利要求1所述的方法,其特征在于,所述利用专用内存管理模块,根据所述错误次数从所述待检测内存单元中筛选出目标内存单元,包括:
当预设时间内所述待检测内存单元的所述错误次数大于或等于所述预设隔离次数阈值时,将所述待检测内存单元确定为所述目标内存单元。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述目标内存单元的地址信息生成常见平台错误记录对象信息并进行存储;
解析所述常见平台错误记录对象信息得到所述目标内存单元的地址信息;
根据所述目标内存单元的地址信息将对应的所述目标内存单元进行隔离。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标内存单元的地址信息生成常见平台错误记录对象信息并进行存储,包括:
所述专用内存管理模块读取所述目标内存单元的地址信息;
根据所述目标内存单元的地址信息生成常见平台错误记录对象信息;
将所述常见平台错误记录对象信息发送到可拓展固件接口中存储。
6.根据权利要求1所述的方法,其特征在于,所述利用内存故障的专用内存管理模块读取待检测内存单元的错误次数,包括:
从存储有内存故障信息的寄存器中读取所述待检测内存单元的错误次数。
7.根据权利要求1所述的方法,其特征在于,所述利用内存故障的专用内存管理模块读取待检测内存单元的错误次数,包括:
在错误中断程序的触发下读取所述待检测内存单元的错误次数。
8.根据权利要求1-7中任一项所述的方法,其特征在于,在所述利用内存故障的专用内存管理模块读取待检测内存单元的错误次数之前,所述方法还包括:
监听发生错误的所述待检测内存单元的数量;
当所述发生错误的待检测内存单元的数量大于或等于预设触发数量阈值时,执行所述隔离故障内存的方法的步骤。
9.一种计算机设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,使得所述计算机设备实现如权利要求1至8中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被计算机设备执行时实现如权利要求1至8中任一项所述的方法。
CN202311287751.1A 2023-10-07 2023-10-07 隔离故障内存的方法、装置、设备及存储介质 Pending CN117472622A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311287751.1A CN117472622A (zh) 2023-10-07 2023-10-07 隔离故障内存的方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311287751.1A CN117472622A (zh) 2023-10-07 2023-10-07 隔离故障内存的方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117472622A true CN117472622A (zh) 2024-01-30

Family

ID=89636936

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311287751.1A Pending CN117472622A (zh) 2023-10-07 2023-10-07 隔离故障内存的方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117472622A (zh)

Similar Documents

Publication Publication Date Title
JP4882845B2 (ja) 仮想計算機システム
US10095576B2 (en) Anomaly recovery method for virtual machine in distributed environment
US11108793B2 (en) Preemptive alerts in a connected environment
US11321454B2 (en) Notice of intrusion into firmware
JP2017091077A (ja) 擬似故障の発生プログラム、発生方法、及び発生装置
CN117573418B (zh) 针对显存访问异常的处理方法、系统、介质及设备
JP5712714B2 (ja) クラスタシステム、仮想マシンサーバ、仮想マシンのフェイルオーバ方法、仮想マシンのフェイルオーバプログラム
CN117170806A (zh) 虚拟机运行稳定性增强的方法、装置、电子设备及介质
JP5689783B2 (ja) コンピュータ、コンピュータシステム、および障害情報管理方法
CN117472622A (zh) 隔离故障内存的方法、装置、设备及存储介质
CN117472623A (zh) 处理内存故障的方法、装置、设备及存储介质
US9176806B2 (en) Computer and memory inspection method
US10846162B2 (en) Secure forking of error telemetry data to independent processing units
US20110271138A1 (en) System and method for handling system failure
CN108415788B (zh) 用于对无响应处理电路作出响应的数据处理设备和方法
US11797368B2 (en) Attributing errors to input/output peripheral drivers
CN116483612B (zh) 内存故障处理方法、装置、计算机设备和存储介质
CN110716818B (zh) 一种异常处理方法、装置、硬件保护设备及存储介质
US20240241779A1 (en) Signaling host kernel crashes to dpu
WO2022181020A1 (ja) 情報処理装置および情報処理方法
EP3940565A1 (en) System management states
CN109815064B (zh) 节点隔离方法、装置、节点设备及计算机可读存储介质
US20240159812A1 (en) Method for monitoring in a distributed system
CN107451035B (zh) 用于计算机装置的错误状态数据提供方法
JP5381151B2 (ja) 情報処理装置、バス制御回路、バス制御方法及びバス制御プログラム

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