本申请涉及服务器领域,特别涉及一种内存ce的故障处理方法、系统及相关装置。
背景技术:
内存patrolscrubuce是内存在巡检模式下检测出的不可修复的uce错误,这种uce错误经过bios处理可以降级为可修复的ce错误,但是当前的bios无法区分patrolscrubuce降级的ce和普通ce,而bios对普通ce错误的处理机制是只有错误计数满足漏错阈值才会上报给bmc进行记录,因为普通的ce错误发生频率很高,一天可能产生上百次,如果每一条都触发smi中断处理容易造成服务器宕机,但这样就造成了patrolscrubuce降级的ce就和普通ce一样在没有满足漏错阈值时被漏掉。这种处理机制是有缺陷的,因为patrolscrubuce降级的ce发生频率较低,几天才能检测到一次,如果也被漏掉的话,就导致服务器运维人员无法及时获得内存的故障信息,非常不利于运维人员对内存状态的监控,因此如何找到一种通过bios区分内存patrolscrubuce降级的ce和普通ce的方法是当前亟需解决的问题。
技术实现要素:
本申请的目的是提供一种内存ce的故障处理方法、系统、计算机可读存储介质和内存ce的故障处理设备,能够及时发现patrolscrubuce。
为解决上述技术问题,本申请提供一种内存ce的故障处理方法,具体技术方案如下:
bios通过读取预设寄存器判断是否发生patrolscrubuce;
若否,判断普通ce计数是否满足漏错阈值;
若发生patrolscrubuce或普通ce计数满足所述漏错阈值,触发smi中断。
其中,所述预设寄存器为msr_mc13_status寄存器;
则通过读取预设寄存器判断是否发生patrolscrubuce包括:
通过读取msr_mc13_status寄存器的预设位,根据所述预设位的数值判断是否发生patrolscrubuce。
其中,触发smi中断后,还包括:
向bmc发送错误信息指令;所述错误信息指令中包含smi中断原因。
其中,还包括:
若所述错误信息指令为patrolscrubuce对应的错误信息指令,所述bios将所述patrolscrubuce降级为普通ce;
若所述错误信息指令为普通ce对应的错误信息指令,所述bios终止所述普通ce对应的进程。
本申请还提供一种内存ce的故障处理系统,包括:
第一判断模块,用于读取预设寄存器判断是否发生patrolscrubuce;
第二判断模块,用于所述第一判断模块判断为否时,判断普通ce计数是否满足漏错阈值;
中断触发模块,用于所述第一判断模块判断为是或所述第二判断模块判断为是时,触发smi中断。
其中,所述预设寄存器为msr_mc13_status寄存器;
则所述第一判断模块为用于通过读取msr_mc13_status寄存器的预设位,根据所述预设位的数值判断是否发生patrolscrubuce的模块。
其中,还包括:
错误信息发送模块,用于向bmc发送错误信息指令;所述错误信息指令中包含smi中断原因。
其中,还包括:
修复模块,用于若所述错误信息指令为patrolscrubuce对应的错误信息指令,将所述patrolscrubuce降级为普通ce;若所述错误信息指令为普通ce对应的错误信息指令,终止所述普通ce对应的进程。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。
本申请还提供一种内存ce的故障处理设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。
本申请提供一种内存ce的故障处理方法,包括:bios通过读取预设寄存器判断是否发生patrolscrubuce;若否,判断普通ce计数是否满足漏错阈值;若发生patrolscrubuce或普通ce计数满足所述漏错阈值,触发smi中断。
本申请通过在patrolscrubuce发生时即触发smi中断,避免bios在patrolscrubuce发生时作为普通ce计数,使得bios可以及时发现patrolscrubuce,使得服务器运维人员及时获取内存故障信息,有利于对服务器内存状态的监控。本申请还提供一种内存ce的故障处理系统、计算机可读存储介质和内存ce的故障处理设备,具有上述有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种内存ce的故障处理方法的流程图;
图2为本申请实施例所提供的一种内存ce的故障处理系统结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
ce(correctederror),可矫正的错误。当内存检查遇到了错误时,这时候cpu可以对错误进行纠正,不会影响系统的任何进程,此时即为ce。
uce(uncorrecterror),不可纠正的错误。指系统硬件不能直接处理恢复内存错误,此时即为uncorrectederror。
另外,uce又分为uce-non-fatal和uce-fatal。
uce-non-fatal,指的是发生了进程错误,但是可以恢复。还是以内存为例,通常采用的动作是找到使用到错误内存的进程,终止该进程即可。此时对系统影响较小。
uce-fatal,指的是产生相当严重的错误,cpu必须进入关机或者重启的流程。
现有技术中,每当内存发生patrolscrubuce降级的ce或者普通ce时,bios都会判断是否满足漏错阈值,如果满足漏错阈值,bios就会触发smi中断把错误信息发送给bmc,否则错误就会被漏掉,不进行记录。这种方法将patrolscrubuce降级的ce作为普通ce判断,然而patrolscrubuce降级的ce通常会对系统造成较大影响,一旦作为普通ce判断将造成错误进程持续运行,带来更大的负面影响,影响服务器的正常运行。
为此,本申请提供一种内存ce的故障处理方法,具体内容如下:
请参考图1,图1为本申请实施例所提供的一种内存ce的故障处理方法的流程图,该方法包括:
s101:bios通过读取预设寄存器判断是否发生patrolscrubuce;若否,进入s102;若是,进入s103;
本步骤中,bios需要读取预设寄存器以判断是否发生patrolscrubuce。patrolscrub指巡检清除,发生patrolscrubuce指内存巡检清除功能异常。一旦出现patrolscrubuce意味着内存并不能在进程关闭后自动清除,造成内存随着进程的增多持续占用,严重影响服务器性能。容易理解的是,本步骤默认需要预设一个寄存器以表示patrolscrubuce的状态。在此对于采用何种寄存器以及使用哪些数值表示发生patrolscrubuce不作具体限定。例如,可以利用msr_mc13_status寄存器的bit31:16位,如果bios检测到该位数值为0x0010,则表示内存发生patrolscrubuce降级的ce,否则就是普通ce。当然,本领域技术人员也可以采用其他寄存器和相应的寄存器值,也应在本申请的保护范围内。
此外,在此对于bios读取预设寄存器的频率不作限定。可以为采用预设频率,即以一定的周期读取预设寄存器。通常patrolscrubuce为几天发生一次,因此可以设置为每小时读取一次预设寄存器。也可以设置为触发读取,即每次在内存发生ce错误时读取预设寄存器。由于在发生ce错误时无法确定究竟为patrolscrubuce还是普通ce,则可以触发bios读取预设寄存器的步骤。
s102:判断普通ce计数是否满足漏错阈值;若是,进入s103;
若是bios通过读取预设寄存器并未发现发生patrolscrubuce,则进一步判断普通ce计数是否满足漏错阈值。通常每发生一次普通ce,则漏错阈值加一。由于普通ce为可修正的内存错误,其所造成的影响较小,因此可以在积累一定的普通ce后统一执行修复。当然,可以理解的是,即使是普通ce,也不能积累过多,避免影响服务器的正常运行。因此当bios未检测到patrolscrubuce时,此时还需要判断普通ce的计数是否达到了漏错阈值。
在此对于漏错阈值的具体数值不作限定,应由本领域技术人员根据服务器的实际运行状态需求等作相应的设定。
s103:触发smi中断。
若发生patrolscrubuce,或者普通ce计数满足漏错阈值,此时都应触发smi中断。smi(systemmanagementinterrupt)为系统管理中断,使得系统进入smm(systemmanagementmode,系统管理模式)的特殊中断。
在此对于触发smi中断后的操作不作具体限定,通常可以针对patrolscrubuce或者普通ce进行相关的修复操作。
在触发smi中断后,可以执行对于普通ce的修复,或者,针对于patrolscrubuce的降级等操作。
本申请实施例通过在patrolscrubuce发生时即触发smi中断,避免bios在patrolscrubuce发生时作为普通ce计数,使得bios可以及时发现patrolscrubuce,使得服务器运维人员及时获取内存故障信息,有利于对服务器内存状态的监控。
基于上述实施例,作为优选的实施例,步骤s104触发smi中断后,还可以包括:
向bmc发送错误信息指令;错误信息指令中包含smi中断原因。
在触发smi中断后,还可以向bmc发送错误信息指令,即表明当前已发生patrolscrubuce或普通ce计数满足漏错阈值,需要进行相关修复工作。而bmc此时根据错误信息指令确定smi中断原因,即确定具体是patrolscrubuce或普通ce。而针对于patrolscrubuce或普通ce的相应处理方式并不相同,例如发生patrolscrubuce时可以进行降级将uce转换为ce并修复。
此外,bmc还可以记录该错误信息指令,并生成相应的系统日志,便于本领域技术人员掌控内存状态,有利于对服务器的内存进行维护。
在进行具体修复时,根据引起smi中断原因采用不同的修复手段。
若错误信息指令为patrolscrubuce对应的错误信息指令,bios将patrolscrubuce降级为普通ce;若错误信息指令为普通ce对应的错误信息指令,bios终止普通ce对应的进程。
当发生patrolscrubuce时,可以利用bios先将patrolscrubuce降级为ce,在此对于降级过程不作具体描述,bios根据不同的patrolscrubuce可以采用不同的降级方式。当然,严重的patrolscrubuce还需要进行关机重启,或者依赖于本领域技术人员现场修复。
当普通ce满足漏错阈值时,针对每个普通ce,可以关闭或重启对应的进程,通常即可解决普通ce。
下面对本申请实施例提供的一种内存ce的故障处理系统进行介绍,下文描述的故障处理系统与上文描述的一种内存ce的故障处理方法可相互对应参照。
参见图2,图2为本申请实施例所提供的一种内存ce的故障处理系统结构示意图,本申请还提供一种内存ce的故障处理系统,包括:
第一判断模块100,用于读取预设寄存器判断是否发生patrolscrubuce;
第二判断模块200,用于所述第一判断模块判断为否时,判断普通ce计数是否满足漏错阈值;
中断触发模块300,用于所述第一判断模块判断为是或所述第二判断模块判断为是时,触发smi中断。
基于上述实施例,作为优选的实施例,所述预设寄存器为msr_mc13_status寄存器;
则所述第一判断模块为用于通过读取msr_mc13_status寄存器的预设位,根据所述预设位的数值判断是否发生patrolscrubuce的模块。
基于上述实施例,作为优选的实施例,还包括:
错误信息发送模块,用于向bmc发送错误信息指令;所述错误信息指令中包含smi中断原因。
基于上述实施例,作为优选的实施例,还包括:
修复模块,用于若所述错误信息指令为patrolscrubuce对应的错误信息指令,将所述patrolscrubuce降级为普通ce;若所述错误信息指令为普通ce对应的错误信息指令,终止所述普通ce对应的进程。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种内存ce的故障处理设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述内存ce的故障处理设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。