CN117472623A - 处理内存故障的方法、装置、设备及存储介质 - Google Patents

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

Info

Publication number
CN117472623A
CN117472623A CN202311297257.3A CN202311297257A CN117472623A CN 117472623 A CN117472623 A CN 117472623A CN 202311297257 A CN202311297257 A CN 202311297257A CN 117472623 A CN117472623 A CN 117472623A
Authority
CN
China
Prior art keywords
memory
error
detected
information
memory unit
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
CN202311297257.3A
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 CN202311297257.3A priority Critical patent/CN117472623A/zh
Publication of CN117472623A publication Critical patent/CN117472623A/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

处理内存故障的方法、装置、设备及存储介质
技术领域
本申请涉及内存技术领域,尤其涉及一种处理内存故障的方法、装置、设备及存储介质。
背景技术
计算机内存是计算机系统中的关键组成部分,对于计算机的运行和性能起着重要作用。如果计算机内存发生故障可能会导致系统崩溃、数据丢失、程序错误、性能下降以及系统不稳定等危害。
常见的计算机内存故障主要是单比特故障,这种故障可能会导致数据的错误读取、写入或计算结果的错误,进而影响系统的正常运行。
在相关方案中,主要是通过纠错码(Error Correction Code,ECC)校验的方式来检测和纠正计算机内存故障。但是单纯使用ECC校验的方式,在内存发生故障较多的时候难以精准判断出需要及时隔离的内存单元,在对计算机性能要求高的场景中难以适用。
发明内容
本申请实施例提供了一种处理内存故障的方法、装置、设备及存储介质,可以解决如何精准识别并及时隔离发生可纠正错误的内存单元的技术问题。
第一方面,本申请实施例提供了一种处理内存故障的方法,包括:
获取多个待检测内存单元的错误次数信息,所述错误次数信息用于表示所述待检测内存单元可纠正错误发生的次数。
通过筛选可纠正错误发生次数较高的内存单元,可以提高系统的可靠性。
利用基板管理控制器,根据所述错误次数信息从多个所述待检测内存单元中筛选出目标内存单元,所述目标内存单元是所述可纠正错误发生的次数大于或等于预设隔离次数阈值的内存单元。
将BMC作为判断目标内存单元是否需要隔离的决策和处理中心,可以集中管理和监控整个系统的内存状态,实现实时监测内存,一旦发现需要隔离的内存单元,可以立即做出决策和处理。这样可以快速识别和定位内存故障,减少系统的停机时间,并及时采取措施进行修复。
查找所述目标内存单元的地址信息。
查找出每一个目标内存单元对应的地址信息,方便后续步骤中对目标内存单元进行精准隔离。
根据所述目标内存单元所对应的地址信息对所述目标内存单元进行隔离。
隔离操作可以防止发生故障的内存单元被继续使用,进而避免其对系统的正常运行造成更大的影响。
第二方面,本申请实施例提供了一种处理内存故障的装置,该装置具有实现第一方面或其任意可能的实现方式中的方法的功能。具体地,该装置包括实现第一方面或其任意可能的实现方式中的方法的单元。
在其中的一个实施例中,该装置包括:
获取单元,用于获取多个待检测内存单元的错误次数信息,错误次数信息用于表示待检测内存单元可纠正错误发生的次数。
处理单元,用于利用基板管理控制器,根据错误次数信息从多个待检测内存单元中筛选出目标内存单元,目标内存单元是可纠正错误发生的次数大于或等于预设隔离次数阈值的内存单元。
处理单元还用于,查找目标内存单元的地址信息。
处理单元还用于,根据目标内存单元所对应的地址信息对目标内存单元进行隔离。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,该处理器执行计算机程序时,使得计算机设备实现上述第一方面任意一种实现方式的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被计算机设备执行时,使得计算机设备实现上述第一方面任意一种实现方式的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备执行上述第一方面任意一种实现方式的方法。
本申请实施例与现有技术相比存在的有益效果是:将待检测内存单元发生的可纠正错误次数作为筛选出目标内存单元的依据,提高了判断的可靠性;将BMC作为判断是否需要隔离内存单元的决策和处理中心,通过检测内存单元的可纠正错误次数是否大于或等于预设次数阈值来精准识别判断出发生故障的内存单元,可以避免误隔离正常状态的内存单元,同时,也可以实现集中管理和即时响应,有助于提高系统的管理性;由于地址信息和内存单元具有唯一对应关系,根据地址信息将筛选出的目标内存单元进行精准隔离,是避免误隔离正常状态的内存单元的双重验证,可以最大程度地保证系统性能和运行的稳定性。
附图说明
图1是本申请实施例提供的一种内存出现故障的场景示意图。
图2是本申请实施例提供的一种处理内存故障的流程示意图。
图3是本申请实施例提供的一种判断目标内存单元的流程示意图。
图4是本申请实施例提供的一种内存管理模块处理目标内存单元的地址信息的流程示意图。
图5是本申请实施例提供的一种触发内存故障处理的流程示意图。
图6是本申请实施例提供的另一种内存故障处理方法的流程示意图。
图7是本申请实施例提供的处理内存故障的装置的结构示意图。
图8是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
内存(Memory)是计算机系统中用于存储和读写数据的硬件设备,它是计算机的重要组成部分,用于临时存储和处理数据和指令。
内存由一系列存储单元组成,每个存储单元都可以存储一个固定大小的数据单元(通常是字节)。这些存储单元按照一定的地址顺序排列,每个存储单元都有一个唯一的地址,用于访问和读写数据。如果内存出现问题或故障,就会导致计算机无法正常读取或写入数据,出现系统崩溃、程序崩溃、数据丢失或错误等问题。
内存故障一般可以分为软故障和硬故障。软故障在本质上是瞬时的,通常可能是由内存子系统组件中的电气干扰引起的。这些干扰可能发生在内存子系统的许多位置中的任何一个。硬故障在本质上是持久性的,不能随着时间的推移或者通过系统复位、重启来解决。
可纠正的错误(correctable error,CE)是可以被服务器平台检测和纠正的错误。这些通常是单比特错误,可纠正的错误可以由软故障和硬故障引起,不会破坏服务器的运行。但是当可纠正错误出现的次数增加时,可能会出现不可纠正的错误,造成系统宕机。
下面结合图1来具体解释内存发生故障的场景。
图1是本申请实施例提供的一种内存出现故障的场景示意图。
图1中黑色部分表示出现故障的内存单元,白色部分表示正常的内存单元。CE表示出现可纠正错误的次数。
如图1的A部分所示,有一个内存单元出现了可纠正错误,CE=1,表示该内存单元出现可纠正错误的次数是1次。其余的内存单元是正常的。
如图1中的B部分所示,有4个内存单元,出现可纠正错误的次数分别是1次、1次、2次和5次。
结合图1可以理解,内存单元出现故障的数量是随机的,出现可纠正错误的次数也是随机的。
在相关方案中,当内存出现故障时,只要发现某一内存单元的CE次数大于某一数值(例如CE>2)就会把该内存单元隔离,这样会导致大量内存单元无法正常使用,也就是说,此种方式误隔离了可以正常使用的内存单元,产生了不必要的资源浪费。
针对上述问题,本申请提出了一种处理内存故障的方法,通过将基板管理控制器作为处理和决策中心,利用基板管理控制器来判断哪些内存单元需要隔离,哪些内存单元不需要隔离,避免误隔离可以正常使用的内存单元。
为了进一步说明本申请的技术方案,下面通过具体实施例来说明。
图2是本申请实施例提供的一种处理内存故障的流程示意图。
如图2所示,上述方法包括以下步骤S201~S204。
S201、获取多个待检测内存单元的错误次数信息。
待检测内存单元既可以是计算机中或电子设备中的所有内存单元,也可以是计算机中或电子设备中的部分内存单元。对于待检测内存单元的具体数量或范围可以根据实际情况来具体选择,此处不作限定。
在一种实现方式中,待检测内存单元可以是ARM架构的服务器中的内存单元。ARM架构的处理器通常具有较低的功耗,在能源效率方面具有优势,可以更好地应用于对于大规模数据中心和云计算环境。
错误次数信息用于表示待检测内存单元可纠正错误发生的次数,也就是说,错误次数信息是指待检测内存单元发生可纠正错误(CE)的次数信息。
例如图1的A部分所示,某一内存单元出现了可纠正错误,CE=1,表示该内存单元出现可纠正错误的次数是1次,也即待检测内存单元可纠正错误发生的次数是1次。
较高的CE次数意味着该内存单元存在较高的错误率,可能会对系统的稳定性和数据完整性产生影响。因此,通过筛选CE次数较高的内存单元,可以提高系统的可靠性。同时,CE次数可以帮助预测内存单元的故障概率。当内存单元的CE次数持续增加时,可能预示着该内存单元即将发生不可纠正的错误,此时应及时隔离该内存单元,以防止数据丢失或系统崩溃。
S202、利用基板管理控制器,根据错误次数信息从多个待检测内存单元中筛选出目标内存单元。
基板管理控制器(Baseboard Management Controller,BMC)是一种集成电路,用于管理和监控计算机系统中的硬件和基板。它通常嵌入在服务器、网络设备和其他计算机系统的主板上。也可以理解为BMC是一种位于主板上的管理控制器,负责监控和管理整个系统。
目标内存单元是可纠正错误发生的次数大于或等于预设隔离次数阈值的内存单元。
也就是说,目标内存单元是需要隔离的内存单元,也可以理解为,是无法正常工作的内存单元。
可以理解,并非是所有发生CE的内存单元都需要隔离,有的内存单元即使发生了CE,但是只要发生CE的次数(也可以是频率)在一定范围内,这样的内存单元就不需隔离。
此处是通过判断内存单元的CE次数(即错误次数信息)是否大于或等于预设次数阈值来从多个待检测内存单元中筛选出目标内存单元。
可以理解,预设次数阈值根据不同的应用场景、不同的计算机设备或电子设备而有所不同,并不是一个唯一恒定的数值,例如可以取值3次。
例如,当对计算机或电子设备的性能要求较高时,预设次数阈值的数值就应较低,反之,当对计算机或电子设备的性能要求较低时,预设次数阈值的数值就应较高。
将BMC作为判断目标内存单元是否需要隔离的决策和处理中心,可以集中管理和监控整个系统的内存状态,实现实时监测内存,一旦发现需要隔离的内存单元,可以立即做出决策和处理。这样可以快速识别和定位内存故障,减少系统的停机时间,并及时采取措施进行修复。
再者,BMC可以根据预设的策略和规则,自动进行内存失效的处理。它可以根据失效地址提供的信息,进行错误纠正、错误检测、错误恢复等操作,以保证系统的稳定性和可靠性。
此外,BMC还可以提供失效地址的信息,即使在内存失效后,也可以准确地确定故障发生的位置,可以快速定位故障点,减少维修时间和成本。
最后,BMC还支持远程管理功能,可以通过网络连接进行远程监控和管理。这使得管理员可以在任何时间、任何地点对内存状态进行监测和管理,提高了管理的灵活性和效率。
S203、查找目标内存单元的地址信息。
当确定了哪些内存单元需要隔离之后,即筛选出目标内存单元之后,需要确查找出每一个目标内存单元对应的地址信息,方便后续步骤中对目标内存单元进行精准隔离。
可以理解,不同的内存单元具有不同的地址信息,二者具有唯一对应的关系。
S204、根据目标内存单元所对应的地址信息对目标内存单元进行隔离。
一旦确定了需要隔离的地址信息,就可以将这些地址对应的页面进行隔离。隔离内存意味着将其从系统的内存池中分离,防止其继续被使用,以避免对系统的正常运行造成进一步的影响。
具体的隔离形式此处不作限定,例如可以将目标内存单元标记为不可访问、或将目标内存单元标记为只读、或将目标内存单元移动到特定的备份区域等等。
上述方法,将待检测内存单元发生的CE次数信息作为筛选出目标内存单元(需要隔离的内存单元)的依据,提高了判断的可靠性,也可以减少对整个内存系统的维护成本,即只需关注具有较高故障概率的内存单元,而不是对整个内存系统进行全面的维护和更换;然后将BMC作为判断是否需要隔离内存单元的决策和处理中心,通过检测内存单元的CE次数是否大于或等于预设次数阈值来精准判断出发生故障的内存单元,避免误隔离可以正常使用的内存单元,也可以实现集中管理、即时响应、自动化处理、失效地址提供和远程管理,有助于提高系统的可靠性和管理性;最后根据地址信息将筛选出的目标内存单元进行精准隔离,可以最大程度地保证系统性能和运行的稳定性。
在一种实现方式中,利用内存管理模块将获取到的多个待检测内存单元的错误次数信息以及地址信息转发到基板管理控制器中。
内存管理模块(Management Mode,MM)是负责管理内存的模块,它会监测内存的状态和错误情况。当待检测内存单元发生可纠正错误时,MM可将待检测内存单元的CE次数信息和对应的地址信息上报给BMC。
可以理解,内存管理模块可以通过直接与内存控制器进行通信,实时获取内存单元的错误次数信息和地址信息。这种直接的通信方式可以提高数据传输的效率和响应速度,确保及时准确地获取到内存单元的错误信息。
利用内存管理模块可以精确地记录和统计每个内存单元的错误次数。它可以通过监测内存读写操作中的错误校验码或其他错误检测机制,准确地判断内存单元是否发生错误,并记录下错误次数和地址信息。这种精确的统计和记录方式可以提供准确的错误信息,有助于进行故障诊断和修复。
此外,内存管理模块可以适应不同规模和类型的内存系统。它可以支持同时监测和管理多个内存单元,无论是单个服务器还是整个数据中心的内存系统。内存管理模块可以通过配置和扩展,适应不同的内存架构和规格,提供灵活性和扩展性。
下面结合图3来具体介绍如何利用基板管理控制器来筛选出目标内存单元。
图3是本申请实施例提供的一种判断目标内存单元的流程示意图。图3可以看作是上述步骤S202的一个具体示例。如图3所示,图3包括以下步骤S301~S302。
S301、利用基板管理控制器读取内存管理模块转发的每一个待检测内存单元的错误次数信息。
结合上文可知,MM会将待检测内存单元的CE次数信息发送给BMC。
可以理解,MM可以实时发送一个或多个内存单元的CE次数信息,也可以根据实际需求定时发送一个或多个内存单元的CE次数信息。
例如,MM可以每隔5个小时给BMC发送这5个小时内所有待检测内存单元发生的CE次数信息。
BMC接收MM发送的所有待检测内存单元的CE次数信息,然后逐一读取每一个待检测内存单元的CE次数信息。
S302、将多个待检测内存单元中可纠正错误发生的次数大于或等于预设隔离次数阈值的内存单元确定为目标内存单元。
当BMC检测到某待检测内存单元的CE次数大于或等于预设隔离次数阈值,就将认定该待检测内存单元是目标内存单元。
作为示例而非限定,假设预设隔离次数是3次,当BMC检测到MM发送的某待检测内存单元的CE次数是5次,则将该待检测内存单元认定是目标内存单元。
在一种实现方式中,根据目标内存单元的地址信息生成常见平台错误记录对象信息并进行存储;解析常见平台错误记录对象信息得到目标内存单元的地址信息;根据目标内存单元地址信息将对应的目标内存单元进行隔离。
下面结合图4来具体介绍。
图4是本申请实施例提供的一种内存管理模块处理目标内存单元的地址信息的流程示意图。如图4所示,图4包括以下步骤S401~S403。
S401、内存管理模块从基板管理控制器中获取目标内存单元的地址信息。
当BMC确定出目标内存单元后,MM可以从BMC中获取目标内存单元的地址信息。
可以理解,经过BMC的判断过程之后,MM获取到的地址信息都是需要隔离的内存单元的地址信息。MM既可以实时获取一条或多条目标内存单元的地址信息,也可以定时获取一条或多条目标内存单元的地址信息,此处不做限定。
S402、根据目标内存单元的地址信息生成常见平台错误记录对象信息。
常见平台错误记录对象(Common Platform Error Record blobs,CPER blobs)是一种用于记录和报告计算机系统硬件错误和故障的标准化数据结构。它可以包括内存错误的详细信息,如错误类型、错误源、错误时间戳等。CPER blobs通常用于记录和报告系统中发生的错误,以便进行故障排查和错误处理。
在获取到目标内存单元的地址信息之后,根据该地址信息,MM可以生成常见平台错误记录对象信息。这些错误记录对象可以包括错误类型、错误地址、错误次数等信息。它们可以作为故障诊断和排除的参考,帮助管理员快速定位和解决问题,同时,也可以用于生成报告和警报,提醒管理员注意系统中存在的错误和潜在的风险。
S403、将常见平台错误记录对象信息发送到可拓展固件接口中存储。
可拓展固件接口(Unified Extensible Firmware Interface,UEFI)是一种现代化的固件接口标准。
BMC提供故障地址信息,MM可以读取并将该信息上报给UEFI。UEFI可以根据这些地址信息,快速定位故障发生的具体内存位置。这样可以加快故障定位的速度,减少排除故障的时间和努力。
通过BMC提供的故障地址信息,UEFI可以准确地确定故障发生的内存地址。这对于故障排除和修复非常重要,可以快速定位故障点,避免不必要的维修和更换。
MM可以实时读取BMC提供的故障地址信息,并及时上报给UEFI。这使得UEFI能够在故障发生后立即得到相关信息,可以及时采取措施进行故障处理,减少系统的停机时间和影响,可以加强系统的故障处理能力。及时而准确地定位和处理内存故障,有助于提高系统的可靠性和稳定性,减少系统崩溃和数据丢失的风险。
可以理解,将CPER blobs存储到UEFI中之后,操作系统就可以从UEFI中获取并解析出目标内存单元的地址信息,然后操作系统根据该地址信息把对应的目标内存单元隔离。
在一种实现方式中,从存储有内存故障信息的寄存器中读取多个待检测内存单元的错误次数信息。
此处的寄存器可以是错误记录寄存器。
错误记录寄存器(Error record register)是一种用于存储和记录系统或设备中发生的错误信息的寄存器。它可以记录异常、故障或错误事件的相关信息。
此处所说的错误记录寄存器可以存储待检测内存单元的CE次数信息和对应的地址信息。当内存发生错误时,前述信息会被写入错误记录寄存器中,通过读取错误记录寄存器,系统或设备的软件可以获取错误信息,帮助开发人员和维护人员快速定位和解决问题,提高系统的可靠性和可维护性。
在一种实现方式中,在错误中断程序的触发下获取多个待检测内存单元的错误次数信息。
错误中断程序(Error interrupt)用于处理系统或设备中发生的错误事件。当系统或设备检测到内存错误时,会触发一个错误中断,通知处理器或操作系统发生了异常情况,需要进行相应的错误处理。
当出现内存错误触发错误中断程序时,计算机设备或电子设备会产生对应的错误信息,包括待检测内存单元的CE次数信息和对应的地址信息。
当接收到错误中断的中断信号时,处理器可以立即停止当前的任务,并保存当前的上下文信息,以便后续恢复。在错误处理完成后,处理器会恢复之前被中断的任务的上下文信息,继续执行中断发生之前的任务。通过使用错误中断,系统可以及时地检测和处理错误事件,避免错误的进一步影响和扩散。错误中断的处理可以提高系统的可靠性和稳定性,确保系统在发生错误时能够正确地响应和处理。
在一种实现方式中,在获取多个待检测内存单元的错误次数信息之前,还包括以下步骤S501~S502。
图5是本申请实施例提供的一种触发内存故障处理的流程示意图。如图5所示,图5包括以下步骤S501~S502。
S501、监听发生可纠正错误的待检测内存单元的数量。
可以理解,不是任意一个内存单元出现故障时就会执行上文中叙述的内存故障处理程序。只有一定数量的待检测内存单元出现可纠正错误时,才会触发上文中叙述的内存故障处理程序。
此时可以实时监听待检测内存单元出现CE错误的数量,也可以定时监听待检测内存单元出现CE错误的数量,例如在工作时间监听,非工作时间不监听。具体的监听方式可以根据实际情况来选择,此处不作限定。
S502、当发生可纠正错误的待检测内存单元的数量大于或等于预设触发数量阈值时,执行内存故障处理方法的步骤。
可以理解,预设触发数量阈值根据不同的应用场景、不同的计算机设备或电子设备而有所不同,并不是一个唯一恒定的数值,此处不作限定。
当发生CE的待检测内存单元的数量满足预设触发数量阈值时,才会触发上文中叙述的内存故障处理程序。也就是说,当发生CE的待检测内存单元的数量满足预设触发数量阈值时,才开始执行上文中的步骤S201~S204;反之,则不执行。
通过设置与应用场景和应用设备相匹配的预设触发数量阈值来作为触发内存故障处理程序的门槛,可以过滤掉少量、偶发的错误,只关注数量较多的可纠正错误。这样可以减少误报和不必要的干预,集中精力处理那些真正需要关注的内存故障。
也就是说,只有当发生可纠正错误的待检测内存单元的数量达到或超过预设触发数量阈值时,才执行内存故障处理方法的步骤。这样可以避免频繁地执行故障处理方法,减少对系统性能的影响,提高处理效率。
下面结合图6来整体性地介绍上文中提到的处理内存故障的方法。
图6是本申请实施例提供的另一种内存故障处理方法的流程示意图。
S601、获取发生CE的待检测内存单元的数量。
结合上文可知,此处可以通过读取错误记录寄存器(Error record register)或触发错误中断(Error interrupt)程序这两种方式来获取可纠正错误的数量信息。
S602、触发内存异常错误。
当检测到内存发生CE的数量超过了处理器基础固件设置的错误数量阈值时,RAS错误处理模块会触发内存异常错误。
处理器基础固件(Processor Base Firmware,PBF)位于处理器内部,与处理器硬件紧密集成,负责管理和控制处理器的基本功能和特性。
此处的PBF主要有三大模块功能,包括:RAS错误处理(RAS Error Handler)、安全分区管理(Secure Partition Manager,SPM)以及软件委派异常接口调度(SoftwareDelegated Exception Interface dispatcher,SDEI dispatcher)。
RAS是指可靠性(Reliability)、可用性(Availability)和系统可以提供的诊断功能(Serviceability)。
RAS作为一个整体,其作用在于确保整个系统尽可能长期可靠的运行而不下线,并且具备足够强大的容错机制。这对于像大型的数据中心,网络中心如股票证券交易所,电信机房,银行的数据库中心等应用环境是不可或缺的一部分。
SPM是一种软件组件,用于管理和控制处理器上的安全分区。安全分区是一种硬件隔离的机制,用于将不同的软件组件或任务隔离开来,以提高系统的安全性和可信度。
SDEI dispatcher是指是一种软件组件,它负责处理和分发处理器上发生的异常事件。SDEI dispatcher是在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通过读取相应的寄存器来获取该数量信息和地址信息。
S603、调用SPM程序。
PBF调用SPM程序的作用是管理和控制处理器上的安全分区。
安全分区是一种特殊的软件环境,用于运行敏感的计算任务和应用程序。它提供了一种隔离的执行环境,可以保护敏感数据和代码免受恶意软件和攻击的影响。
例如,PBF通过调用SPM程序,可以创建和销毁安全分区。当需要创建新的安全分区时,PBF会向SPM发送相应的请求,SPM根据请求创建一个新的安全分区。当安全分区不再需要时,PBF可以通过调用SPM销毁安全分区。
再例如,PBF可以通过调用SPM程序,启动和停止安全分区。当需要启动安全分区时,PBF会向SPM发送启动请求,SPM会加载安全分区的代码和数据,并将处理器切换到安全分区的执行环境。当安全分区不再需要运行时,PBF可以通过调用SPM停止安全分区,并将处理器切换回非安全分区的执行环境。
PBF通过调用SPM程序,可以实现安全分区之间的通信和交互。SPM提供了一些接口和机制,使安全分区能够安全地进行数据交换和协作。通过PBF和SPM的配合,可以实现安全分区的隔离和保护,提高系统的安全性和可靠性。
S604、MM将获取到的信息发送给BMC。
MM将获取到的可纠正错误的数量信息和对应的地址信息发送给BMC。
结合上文可知,MM将获取到的可纠正错误的数量信息和对应的地址信息发送给BMC进行判断,从而筛选出目标内存单元。
S605、BMC判断出目标内存单元。
结合上文可知,当BMC检测到某待检测内存单元的CE次数大于或等于预设隔离次数阈值,就将认定该待检测内存单元是目标内存单元。
S606、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表来获取和处理这些错误信息,方便内存故障处理过程。
S607、调用隔离处理程序。
PBF通知SDEI dispatcher调用SDEI client来调用操作系统中的隔离处理程序。
SDEI client是指使用SDEI(System Design and Execution Interface)的客户端应用程序或组件。SDEI是一种软件接口和协议,用于在ARM架构的系统中实现安全的、可靠的系统设计和执行。
SDEI client可以是运行在ARM处理器上的任何应用程序或组件,包括操作系统内核、驱动程序、应用程序等。它们使用SDEI提供的接口和协议来与SDEI dispatcher(调度器)进行通信,并执行特定的系统设计和执行任务。
PBF在隔离处理程序的注册过程将告知SDEI调度器有关隔离处理程序的位置和可用性。
PBF通过向SDEI调度器发送异常事件请求来触发异常事件。当SDEI调度器接收到异常事件请求后,它将根据异常事件的优先级和处理程序的可用性,决定是否调用隔离处理程序。如果隔离处理程序已注册并可用,SDEI调度器将调用该处理程序来处理异常事件。
一旦SDEI调度器决定调用隔离处理程序,它将传递相关的参数和数据给该处理程序,并将处理器切换到隔离处理程序的执行环境。隔离处理程序可以是操作系统内核中的一部分,用于处理特定的隔离任务或事件。
PBF通知SDEI调度器调用操作系统中的隔离处理程序的作用是实现隔离和保护敏感的计算任务和应用程序。通过在隔离处理程序中执行敏感任务,可以确保这些任务在受到恶意软件和攻击时不会泄露敏感数据或受到破坏。
也可以理解为,隔离处理程序提供了一个独立的执行环境,可以隔离敏感任务和应用程序,防止它们与其他不受信任的软件或恶意代码进行交互。隔离处理程序可以确保敏感数据在处理过程中得到保护。它可以提供加密、访问控制和安全通信等机制,以确保敏感数据的机密性和完整性,防止恶意软件和攻击利用系统漏洞来破坏或干扰敏感任务的执行。
S608、隔离目标内存单元。
操作系统从可拓展固件接口中获取并解析地址信息,根据该地址信息把对应的内存单元隔离。
操作系统利用APEIDriver从APEI Table中获取CPER blobs,解析出目标内存单元的地址信息,然后将对应的目标内存单元隔离。
APEIDriver是一种驱动程序,用于在操作系统中实现对ACPI(AdvancedConfiguration and Power Interface)平台错误接口的支持。APEI是ACPI的扩展,提供了一种用于处理内存错误的接口和机制。
例如,当需要隔离某个内存地址时,操作系统可以将其对应的页面标记为不可访问或只读,或者将其移动到特定的备份区域。这样,访问该地址时,操作系统会检测到权限错误或者页面不存在的错误,并进行相应的处理。
当访问被隔离的内存地址时,操作系统会捕获到相关的错误,例如访问权限错误或者页面不存在错误。操作系统可以根据错误类型进行相应的处理,例如终止进程、生成错误报告或者进行其他的容错操作。
上文主要结合附图对本申请实施例的方法进行了介绍。应理解,虽然如上所述的各实施例所涉及的流程图中的各个步骤依次显示,但是这些步骤并不是必然按照图中所示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。下面结合附图对本申请实施例的一种的装置进行介绍。为了简洁,在下文介绍装置时,会进行适当省略,相关内容可以参照上文的方法中的相关描述,不再重复介绍。
图7申请实施例提供的一种处理内存故障的装置的结构示意图。
如图7所示,该装置1000包括以下单元。
获取单元1001,用于获取多个待检测内存单元的错误次数信息,错误次数信息用于表示待检测内存单元可纠正错误发生的次数。
处理单元1002,用于利用基板管理控制器,根据错误次数信息从多个待检测内存单元中筛选出目标内存单元,目标内存单元是可纠正错误发生的次数大于或等于预设隔离次数阈值的内存单元。
处理单元1002还用于,查找目标内存单元的地址信息。
处理单元1002还用于,根据目标内存单元所对应的地址信息对目标内存单元进行隔离。
在一种实现方式中,上述获取单元1001还可以用于执行上述步骤S301、S401以及S601中的方法。
在一种实现方式中,上述处理单元1002还可以用于执行上述步骤S302、S402~S403、S501~S502以及S602~S608中的方法。
在一种实现方式中,该装置1000还包括存储单元,该存储单元可以用于存储指令和/或数据,从而实现上述实施例中的方法。
需要说明的是,上述单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
图8是本申请实施例提供的计算机设备的结构示意图。如图8所示,该实施例的计算机设备3000包括:至少一个处理器3100(图8仅示出一个)处理器、存储器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.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据所述目标内存单元的地址信息生成常见平台错误记录对象信息并进行存储;
解析所述常见平台错误记录对象信息得到所述目标内存单元的地址信息;
根据所述目标内存单元的地址信息将对应的所述目标内存单元进行隔离。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标内存单元的地址信息生成常见平台错误记录对象信息并进行存储,包括:
所述内存管理模块从所述基板管理控制器中获取所述目标内存单元的地址信息;
根据所述目标内存单元的地址信息生成常见平台错误记录对象信息;
将所述常见平台错误记录对象信息发送到可拓展固件接口中存储。
5.根据权利要求4所述的方法,其特征在于,所述获取多个待检测内存单元的错误次数信息,包括:
从存储有内存故障信息的寄存器中读取所述多个待检测内存单元的错误次数信息。
6.根据权利要求4所述的方法,其特征在于,所述获取多个待检测内存单元的错误次数信息,包括:
在错误中断程序的触发下获取所述多个待检测内存单元的错误次数信息。
7.根据权利要求1-6中任一项所述的方法,其特征在于,在所述获取多个待检测内存单元的错误次数信息之前,所述方法还包括:
监听发生可纠正错误的所述待检测内存单元的数量;
当所述发生可纠正错误的待检测内存单元的数量大于或等于预设触发数量阈值时,执行所述内存故障处理方法的步骤。
8.一种处理内存故障的装置,其特征在于,包括:
获取单元,用于获取多个待检测内存单元的错误次数信息,所述错误次数信息用于表示所述待检测内存单元可纠正错误发生的次数;
处理单元,用于利用基板管理控制器,根据所述错误次数信息从多个所述待检测内存单元中筛选出目标内存单元,所述目标内存单元是所述可纠正错误发生的次数大于或等于预设隔离次数阈值的内存单元;
所述处理单元还用于,查找所述目标内存单元的地址信息;
所述处理单元还用于,根据所述目标内存单元所对应的地址信息对所述目标内存单元进行隔离。
9.一种计算机设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,使得所述计算机设备实现如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被计算机设备执行时实现如权利要求1至7中任一项所述的方法。
CN202311297257.3A 2023-10-07 2023-10-07 处理内存故障的方法、装置、设备及存储介质 Pending CN117472623A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311297257.3A CN117472623A (zh) 2023-10-07 2023-10-07 处理内存故障的方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311297257.3A CN117472623A (zh) 2023-10-07 2023-10-07 处理内存故障的方法、装置、设备及存储介质

Publications (1)

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

Family

ID=89635484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311297257.3A Pending CN117472623A (zh) 2023-10-07 2023-10-07 处理内存故障的方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117472623A (zh)

Similar Documents

Publication Publication Date Title
US8108724B2 (en) Field replaceable unit failure determination
US9021317B2 (en) Reporting and processing computer operation failure alerts
JP2017517060A (ja) 障害処理方法、関連装置、およびコンピュータ
US11853150B2 (en) Method and device for detecting memory downgrade error
US11321454B2 (en) Notice of intrusion into firmware
CN109409087B (zh) 防提权检测方法及设备
US20170132102A1 (en) Computer readable non-transitory recording medium storing pseudo failure generation program, generation method, and generation apparatus
KR101649909B1 (ko) 가상 머신 취약점 점검과 복구 방법 및 장치
JP2012003651A (ja) 仮想化環境監視装置とその監視方法およびプログラム
JP5712714B2 (ja) クラスタシステム、仮想マシンサーバ、仮想マシンのフェイルオーバ方法、仮想マシンのフェイルオーバプログラム
CN117170806A (zh) 虚拟机运行稳定性增强的方法、装置、电子设备及介质
CN117472623A (zh) 处理内存故障的方法、装置、设备及存储介质
WO2011051999A1 (ja) 情報処理装置及び情報処理装置の制御方法
CN117472622A (zh) 隔离故障内存的方法、装置、设备及存储介质
CN114911659A (zh) 一种ce风暴抑制方法、装置及相关设备
US10846162B2 (en) Secure forking of error telemetry data to independent processing units
JP5955165B2 (ja) 管理装置、管理方法及び管理プログラム
JPWO2008120383A1 (ja) 情報処理装置、障害処理方法
KR102526368B1 (ko) 멀티벤더를 지원하는 서버 관리 시스템
CN108415788B (zh) 用于对无响应处理电路作出响应的数据处理设备和方法
US11797368B2 (en) Attributing errors to input/output peripheral drivers
CN110716818B (zh) 一种异常处理方法、装置、硬件保护设备及存储介质
US20240159812A1 (en) Method for monitoring in a distributed system
CN102681919A (zh) 一种远程管理计算机的实现方法、计算机和系统
CN116431373A (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