一种使用Xeon处理器的服务器的内存测试方法和系统的制作方法

文档序号:6489339阅读:251来源:国知局
一种使用Xeon处理器的服务器的内存测试方法和系统的制作方法
【专利摘要】本发明公开了一种使用Xeon处理器的服务器的内存测试方法和系统,方法包括:响应于在所述服务器启动过程中接收到硬件内存测试的请求,获得存储的过去内存测试的结果,其中过去内存测试的结果至少包括在测试中使用的测试循环次数,测试模式以及测试中发生的错误;根据获得的过去内存测试的结果调整所述硬件内存测试的测试循环次数以及使用的测试模式;以及根据调整后的测试循环次数以及使用的测试模式执行硬件内存测试。该方法和系统能够平衡内存系统的可靠性和服务器的启动效率。
【专利说明】—种使用Xeon处理器的服务器的内存测试方法和系统
【技术领域】
[0001]本发明涉及内存测试,更具体地,涉及一种使用Xeon处理器的服务器的内存测试方法和系统。
【背景技术】
[0002]内存,作为计算机的一个重要零件,其兼容性、运行速度和稳定性等性能对计算机的品质起着十分重要的作用。随着数据处理能力要求的持续快速增长,内存在IT工业界扮演着空前重要的角色。具有更大尺寸以及更先进的硅技术的内存子系统对内存测试提出了更高的要求,并且带来了更重的测试负担。
[0003]一方面,更大的内存尺寸导致了更大的测试范围;另一方面,更高级的硅加工技术使得内存更容易损坏,这又要求更严格的内存测试技术,使用更多的测试循环(loops)以及不同的测试模式(patterns),来保证系统的可靠性。
[0004]内存测试的付出与内存的大小以及测试循环次数成正比,而当前计算机的内存大小一直在增加,测试循环次数也一直在增加,内存测试已经成为阻碍计算机系统启动效率的一个主要负担。而计算机系统启动的效率从可获得性以及服务性的角度来说,对于服务器来说是至关重要的,这里就出现了矛盾:内存子系统需要更严格的、更宽广的内存测试,而这又会降低服务器的启动效率。
[0005]Xeon是英特尔公司的一款处理器,主要供服务器及高级工作站使用。它跟奔腾(Pentium)系列一样,经过几代处理器架构的变迁后,名字仍保留下来。旧款Xeon的名字是将Xeon放到相对奔腾的名字之后(例如Pentium II Xeon),但新款的Xeon则直接叫作Xeon0通常使用Xeon处理器的服务器支持的内存的容量都很大。
[0006]使用Xeon处理器的服务器的内存控制器提供了硬件内存测试功能。BIOS能够制定测试模式,内存控制器基于测试模式执行测试。如果发生了测试错误,BIOS发现并通知内存控制器隔离失败的设备。为了更加可靠和一致,现有的BIOS内存测试方案是:执行更多次的内存测试循环,每次循环使用相同的测试模式。更多的测试循环次数意味着更可靠,但是也意味着系统效率更差。目前,折中的BIOS内存测试方案是:使用随机的或者是任意的测试模式来执行一次硬件测试循环,或者是任意次的测试循环进行硬件测试,从而平衡可靠性和效率的要求。

【发明内容】

[0007]本发明的目标是提供一种对使用Xeon处理器的服务器的内存测试方法和系统。
[0008]根据本发明的一个方面,提供了一种使用Xeon处理器的服务器的内存测试方法,包括:
[0009]响应于在所述服务器启动过程中接收到硬件内存测试的请求,获得存储的过去内存测试的结果,其中过去内存测试的结果至少包括在测试中使用的测试循环次数,测试模式以及测试中发生的错误;[0010]根据获得的过去内存测试的结果调整所述硬件内存测试的测试循环次数以及使用的测试模式;以及
[0011]根据调整后的测试循环次数以及使用的测试模式执行硬件内存测试。
[0012]根据本发明的另一个方面,提供了一种使用Xeon处理器的服务器的内存测试系统,包括:
[0013]过去内存测试结果获得装置,被配置为响应于在所述服务器启动过程中接收到硬件内存测试的请求,获得存储的过去内存测试的结果,其中过去内存测试的\结果至少包括在测试中使用的测试循环次数,测试模式以及测试中发生的错误;
[0014]硬件内存测试调整装置,被配置为根据获得的过去内存测试的结果调整所述硬件内存测试的测试循环次数以及使用的测试模式;以及
[0015]硬件内存测试执行装置,被配置为根据调整后的测试循环次数以及使用的测试模式执行硬件内存测试。
【专利附图】

【附图说明】
[0016]通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0017]图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
[0018]图2示意性地示出了 BIOS如何初始化内存以及加载OS的启动流程;
[0019]图3示出了根据本发明的一种实施方式的一种使用Xeon处理器的服务器的内存测试方法的流程图;
[0020]图4示出了根据本发明的一种实施方式的一种使用Xeon处理器的服务器的内存测试系统的结构框图。
【具体实施方式】
[0021]下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0022]所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0023]可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0024]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0025]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0026]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0027]下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0028]也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
[0029]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0030]图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0031]如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。[0032]总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
[0033]计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0034]系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如⑶-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0035]具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0036]计算机系统/服务器12也可以与一个或多个外部设备14 (例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口 22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0037]现在参看图2,图2示意性地示出了 BIOS如何初始化内存以及加载OS的启动流程。
[0038]在步骤S201,系统上电时,BIOS开始启动流程.[0039]在步骤S202,B10S进行预先内存初始化。此时,BIOS在没有可使用的系统内存情况下,接管系统,进行最 初的初始化。
[0040]在步骤S203中,BIOS检测到系统内存的存在,内存的大小、速度等后,初始化安装的全部内存设备,这样才可以读写内存,以便系统使用。
[0041]在步骤S204,BIOS给内存控制器发出“硬件内存测试”的命令。硬件内存测试的基本原理是由内存控制器完成内存的读写和验证操作。在该步骤期间,BIOS可以指定测试模式,内存控制器基于测试模式执行写/读测试,每执行一次就是一次测试循环。目前的内存硬件测试使用固定的一个测试模式或者固定次数的测试模式(假设是10),对于一个配置64GB内存的服务器系统,测试一个测试模式,一个测试循环需要5-10秒的时间,那么10个测试模式就是50-100秒。显然,硬件测试是很耗时的,会降低服务器系统的启动效率。如果在该步骤发生测试错误,错误设备可以被暂停并且很快被隔离,这样以后就不会访问出错的内存。
[0042]在步骤S205,硬件测试后,就建立了系统内存,所有的通过硬件内存测试的初始化的内存设备都映射到系统内存图,可以使用内存地址访问。
[0043]在步骤S206,使用建立好的系统内存图,BIOS执行软件内存测试来补充以前的硬件测试。软件测试使用稀疏的测试覆盖水平达到比硬件测试更快的效率,即目前的软件测试只选择一块内存区域做读写测试,大概只有1GB。类似于硬件测试,目前的软件测试也使用固定的一个测试模式和一次测试循环。
[0044]在步骤S207,如果系统通过硬件测试和软件测试,就进行早期POST初始化。在该步骤中,BIOS初始化必要的系统资源,并且准备建立运行时内存错误处理机制。
[0045]在步骤S208,建立运行时内存错误处理机制。在Xeon系统上的运行时内存错误处理是通过 SMI (System Management Interrupt,系统管理中断)和 IPMI (IntelligentPlatform Management Interface,智能平台管理接口)进行汇报的。该步骤需要建立SMM处理器机制以及IPMI通信方,以便在后续的步骤中,由运行时内存处理机制进行内存测试。SMM模式是Intel X86处理器的一个特定的操作模式,用于处理系统级的功能。比如:电源管理(Power management),系统硬件控制(system hardware control),特殊的 OEM定制代码(special OEM designed code)。它被设计成只给系统固件使用,不是给应用软件或者一般的系统软件使用。SMM主要的好处是其提供了一个独特且易用的独立的处理器环境,以便更容易操作OS及软件应用。BIOS会注册一个SMM处理函数用来处理运行时(runtime)的错误。比如内存错误,如果是可恢复的内存错误,SMM处理函数处理完之后会直接返回,离开SMM模式,这样操作系统可以继续运行。如果是不可恢复的错误(fatal error),服务器系统会直接重新启动。
[0046]在步骤S209,进行后期POST初始化,并且准备启动OS。
[0047]然后在步骤S210,OS启动装载器激活,并且完全接管服务器系统的控制。
[0048]在步骤S211,该流程结束。
[0049]上述硬件内存测试固定10个测试模式的一次测试循环就达到50-100秒的测试时间,如果多次测试循环,测试时间更大。其实对于一个稳定的服务器系统,可以考虑不进行硬件测试或者减少硬件测试强度;但是对于一个不稳定的内存系统,使用一个或者固定的测试模式的硬件测试往往不能完全检测到所有内存错误。软件的稀疏内存测试虽然也不能完全检测到所有内存错误,但是软件内存测试由于效率很高,可以执行更多次的测试循环,使用更多的测试模式,而没有服务器启动效率的损失。因此,本发明考虑将内存测试的历史结果存储起来,来确定该服务器的内存子系统是否是稳定的,从而确定是执行何种程度的内存测试。
[0050]图3示出了根据本发明的一个实施方式的一种使用Xeon处理器的服务器的内存测试方法的流程图。根据图3,
[0051]在步骤S301,响应于在所述服务器启动过程中接收到硬件内存测试的请求,获得存储的过去内存测试的结果,其中过去内存测试结果包括在测试中使用的测试循环次数,测试模式以及测试中发生的错误;这里的过去内存测试的结果至少包括以下之一:过去的硬件内存测试结果,过去的软件内存测试结果,以及过去的运行时内存错误。后续流程中会描述这些结果是如何获得的。过去内存测试的结果可以存储在flash中。存储的格式没有限定。
[0052]在步骤S302,根据获得的过去内存测试的结果调整所述硬件内存测试的测试循环次数以及使用的测试模式;根据过去内存测试的结果,来调整本次硬件测试需要使用的测试循环次数以及使用的测试模式,基本原则是:对于测试循环的次数,如果系统不稳定,并且以前硬件内存测试没有有效地检测到错误,就增加内存硬件测试的测试循环次数;如果系统是稳定的,就减少硬件内存测试循环的次数;对于测试模式,如果纪录的测试模式小于测试循环的次数,可以用预先设定的模式或者随机模式作为补充。
[0053]可以考虑以下几种情况:
[0054](I)第一次启动,因为没有过去的内存测试结果,可以使用一个设定的内存测试模式和设定的测试循环次数(假设是10),做硬件内存测试。
[0055](2)响应于存储的过去内存测试的结果是正常的,也就是没有发生过内存测试错误,那么本次硬件测试需要使用的测试循环次数以及使用的测试模式都设为0,也就是跳过硬件内存测试,即可以响应于存储的过去内存测试的结果中没有错误,将所述硬件内存测试的测试循环次数调整为O ;然后响应于所述硬件内存测试的测试循环次数为0,不执行硬件内存测试。从而对64GB字节的内存,节省50-100秒的时间;或者调整为很小的测试循环次数(例如I次)以及固定一个测试模式,从而减少硬件测试的时间消耗,提高服务器系统的启动效率。
[0056](3)响应于存储的过去内存测试的结果存在不正常的情况,并且上一次软件测试结果不正常,比如上一次软件测试在测试模式(0x5A5AA5A5)的时候出现错误,那么这次可以只使用模式(0x5A5AA5A5)做硬件测试,此时循环次数可以使用一个固定值,例如10,来发现内存错误。
[0057]本领域技术人员可以知道,上述的调整方式只是示例性的,具体本领域技术人员可以了解,有多种调整方式,并不仅仅限于上述的调整方式,只要能根据过去的测试结果,来调整本次硬件测试的测试模式和测试循环次数,任何调整方法都落在本发明的保护范围内。
[0058]在步骤S303,根据调整后的测试循环次数以及使用的测试模式执行硬件内存测试。这里包括本次硬件测试需要使用的测试循环次数以及使用的测试模式都为0,也就是跳过硬件内存测试,本次不进行硬件内存测试。该步骤由使用Xeon处理器的服务器系统的内存控制器提供的硬件内存测试逻辑,硬件内存测试由BIOS启动,内存控制器执行。
[0059]在另一种实施方式中,可以对存储的过去内存测试的结果进行统计,即获得存储的过去内存测试的结果中全部内存错误发生的次数;响应于所述全部内存错误发生的次数大于设定的阈值,终止服务器的启动流程,以便进行硬件修复,而不是进一步增加内存测试的强度(图3未示出)。该实施方式用于防止一种死循环,就是软件测试每次都能发现错误,但是硬件测试没有检测到错误,这样会导致系统不停地在重复内存测试,当然这是一种极端情况,这里的阈值假设暂定为3次。[0060]在另一种实施方式中,在步骤S304,响应于硬件内存测试执行完毕,记录硬件内存测试结果。该记录结果在以后内存测试中就称为存储的过去内存测试的结果。在步骤S305,响应于硬件内存测试检测到内存错误,暂停并隔离出错的内存设备;这时被隔离的内存设备以后就不会被访问,也不会被进行软件内存测试。除非系统重新启动后该出错的内存设备被更换,可以重新启动该测试方法。BIOS模块可以在内部的内存初始化模块中使用内存控制器隔离有错误的内存设备。其中还包括一种实施方式:判断隔离出错的内存设备后剩余的内存是否足够;响应于没有足够的剩余的内存,终止服务器的启动流程并且通知用户更换出错的内存设备(图3未不出)。
[0061]在步骤S306,根据获得的过去内存测试的结果调整所述软件内存测试的测试循环次数以及使用的测试模式,并根据调整后的测试循环次数以及使用的测试模式执行软件内存测试。软件测试使用稀疏测试覆盖水平,即读写间隔可以为IM字节(其中1M=1,000,000),因此,软件测试的时间通常远小于硬件测试的时间。如果内存测试发生错误,使用稀疏测试检测到错误的概率是很高的。和硬件测试相比,软件测试更快,因此可以测试更多的测试模式,使用更多的测试模式,而没有明显的服务器起动性能降低。然而,软件测试只能检测到错误的内存地址,但是不能识别以及隔离出错的内存设备。假设在BIOS内预置了 10 个测试模式,分别:0χΑΑΑΑΑΑΑΑ,0x55555555,0x5A5A5A5A,0xA5A5A5A5,0xFFFFFFFF,0x00000000,OxFOFOFOFO,OxOFOFOFOF,0x12345678,0x87654321。这里可以分为几种情况:
[0062](I)本次硬件内存测试没有错误或者跳过了硬件内存测试,那么本次软件测试需要使用所有的测试模式,每个测试模式循环一次测试循环。
[0063](2)响应于本次硬件内存测试检测到错误,假设错误发生在测试模式OxAAAAAAAA,则本次软件测试会忽略测试模式OxAAAAAAAA,使用剩下的9个测试模式,每个测试模式循环一次。因为硬件测试是全部内存都参与的,如果有发生错误的测试模式,就说明发生错误的设备已经被隔离,没必要再进行一次软件测试。这样可以进一步平衡内存系统的可靠性和服务器的启动效率。
[0064]本领域技术人员可以知道,上述的调整方式只是示例性的,具体本领域技术人员可以了解,有多种调整方式,并不仅仅限于上述的调整方式,只要能根据过去的测试结果,来调整本次软件测试的测试模式和此时循环次数,任何调整方法都落在本发明的保护范围内。
[0065]这里的软件内存测试跟硬件内存测试不同,软件内存测试只在每条内存的最后IMB字节做读写测试,这样做的好处就是既使用了所有测试模式,又覆盖了所有内存条。对于一个配置了 16条4G (其中1G=1,000,000,000)字节的内存的系统(一共64G字节),最多只需要测试16*1M字节*10=160M字节,对于现在内存带宽达到GB/s (字节/秒)的系统,读写测试160MB,只需要不到I秒的时间。
[0066]在一种实施方式中,在步骤S307,响应于软件内存测试执行完毕,记录软件内存测试结果。该记录结果在以后内存测试中就称为存储的过去内存测试的结果。在步骤S308,响应于软件内存检测发生错误,重新启动该服务器的启动流程。软件内存检测发生错误有两种可能的情况:第一是硬件内存测试没有执行,因此,软件测试出错后需要重启服务器系统,再用出错的测试模式重新进行硬件内存测试。另一种情况是:硬件内存测试执行了,但是没有发现错误,可能是因为测试的循环次数不够或者使用的测试模式不够多。软件测试出错后,重启服务器系统,硬件测试相应增减测试循环的次数,并且使用该次软件内存测试中发现错误的测试模式。
[0067]在另一种实施方式中,该方法还包括步骤S309,响应于软件内存测试没有检测到错误,并且检测到运行时内存错误,记录该运行时内存错误;判断该内存错误对服务器运行是否致命;响应于该内存错误对服务器运行是致命的,重新启动该服务器的启动流程。从而,新的硬件和软件内存测试可以基于错误状态进行调整。对于使用Xeon处理器的服务器,如果通过了硬件和软件内存测试,运行到后期的上电自测或者操作系统,发生了内存错误,BIOS或者服务器管理控制器(BMC)能够被通知到,并且处理该错误。类似于软件内存测试,如果错误被运行时错误处理器检测到,该处理器记录错误信息,以便在下次启动时,硬件内存测试可以相应增加测试的强度。
[0068]如果服务器通过了硬件内存测试、软件内存测试、以及运行时内存测试,测试流程就结束了。在该发明中,对于没有内存错误的服务器系统,可以省掉所有硬件内存测试的时间,大多数情况下都是这样的情形,因此可以大大提高服务器系统的启动效率;对于存在内存错误的系统,所用的时间和现在的内存测试设计是一样的,因此,也没有降低服务器系统的启动效率。
[0069]在同一个发明构思下,本发明还公开了一种使用Xeon处理器的服务器的内存测试系统,图4示出了根据本发明的一个实施方式的一种使用Xeon处理器的服务器的内存测试系统400的结构框图。根据图4,该系统包括:过去内存测试结果获得装置401,被配置为响应于在所述服务器启动过程中接收到硬件内存测试的请求,获得存储的过去内存测试的结果,其中过去内存测试的结果至少包括在测试中使用的测试循环次数,测试模式以及测试中发生的错误;硬件内存测试调整装置402,被配置为根据获得的过去内存测试的结果调整所述硬件内存测试的测试循环次数以及使用的测试模式;以及硬件内存测试执行装置403,被配置为根据调整后的测试循环次数以及使用的测试模式执行硬件内存测试。
[0070]在一种实施方式中,所述过去内存测试结果至少包括以下之一:过去的硬件内存测试结果,过去的软件内存测试结果,以及过去的运行时内存错误。
[0071]在一种实施方式中,硬件内存测试调整装置还被配置为:响应于存储的过去内存测试的结果中没有错误,将所述硬件内存测试的测试循环次数调整为O ;响应于所述硬件内存测试的测试循环次数为0,所述硬件内存测试执行装置被配置为不执行硬件内存测试。
[0072]在一种实施方式中,该系统还包括统计装置,被配置为获得存储的过去内存测试的结果中全部内存错误发生的次数;以及终止服务器的启动流程装置,被配置为响应于所述全部内存错误发生的次数大于设定的阈值,终止服务器的启动流程(图4未示出)。
[0073]在一种实施方式中,该系统还包括记录装置404,被配置为响应于硬件内存测试执行装置测试完毕,记录硬件内存测试结果。
[0074]在一种实施方式中,该系统还包括:隔离装置405,被配置为响应于硬件内存测试执行装置检测到内存错误,暂停并隔离出错的内存设备。
[0075]在一种实施方式中,该系统还包括:判断装置,被配置为判断隔离出错的内存设备后剩余的内存是否足够;以及终止服务器的启动流程装置,被配置为响应于判断装置判断没有足够的剩余的内存,终止服务器的启动流程并且通知用户更换出错的内存设备(图4未示出)。[0076]在一种实施方式中,该系统还包括:软件内存测试调整装置406,被配置为根据获得的过去内存测试的结果调整软件内存测试的测试循环次数以及使用的测试模式;以及软件内存测试执行装置407,被配置为根据调整后的测试循环次数以及使用的测试模式执行软件内存测试。
[0077]在一种实施方式中,该系统的记录装置还被配置为响应于软件内存测试执行装置测试完毕,记录软件内存测试结果。
[0078]在一种实施方式中,该系统还包括:重启服务器的启动流程装置408,被配置为所述响应于软件内存测试执行装置检测到内存错误,重新启动该服务器的启动流程。
[0079]在一种实施方式中,该系统还包括:运行时内存测试装置409,被配置为响应于检测到运行时内存错误,指示所述记录装置记录该运行时内存错误;以及重启服务器的启动流程装置408,被配置为响应于检测到运行时内存错误,判断运行时内存错误对服务器运行是否致命,响应于运行时内存错误对服务器运行是致命的,重新启动该服务器的启动流程。
[0080]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0081]以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本【技术领域】的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本【技术领域】的其它普通技术人员能理解本文披露的各实施例。
【权利要求】
1.一种使用Xeon处理器的服务器的内存测试方法,包括: 响应于在所述服务器启动过程中接收到硬件内存测试的请求,获得存储的过去内存测试的结果,其中过去内存测试的结果至少包括在测试中使用的测试循环次数,测试模式以及测试中发生的错误; 根据获得的过去内存测试的结果调整所述硬件内存测试的测试循环次数以及使用的测试模式;以及 根据调整后的测试循环次数以及使用的测试模式执行硬件内存测试。
2.根据权利要求1所述的方法,其中所述过去内存测试结果至少包括以下之一:过去的硬件内存测试结果,过去的软件内存测试结果,以及过去的运行时内存错误。
3.根据权利要求1或2所述的方法,其中还包括: 响应于存储的过去内存测试的结果中没有错误,将所述硬件内存测试的测试循环次数调整为O ; 响应于所述硬件内存测试的测试循环次数为0,所述根据调整后的测试循环次数以及使用的测试模式执行硬件内存测试中不执行硬件内存测试。
4.根据权利要求1或2所述的方法,其中还包括: 获得存储的过去内存测试的结果中全部内存错误发生的次数; 响应于所述全部内存错误 发生的次数大于设定的阈值,终止服务器的启动流程。
5.根据权利要求1所述的方法,其中还包括: 响应于硬件内存测试执行完毕,记录硬件内存测试结果。
6.根据权利要求5所述的方法,其中还包括: 响应于硬件内存测试中检测到内存错误,暂停并隔离出错的内存设备。
7.根据权利要求6所述的方法,其中还包括: 判断隔离出错的内存设备后剩余的内存是否足够; 响应于没有足够的剩余的内存,终止服务器的启动流程并且通知用户更换出错的内存设备。
8.根据权利要求5或6所述的方法,其中还包括: 根据获得的过去内存测试的结果调整软件内存测试的测试循环次数以及使用的测试模式; 根据调整后的测试循环次数以及使用的测试模式执行软件内存测试。
9.根据权利要求8所述的方法,其中还包括: 响应于软件内存测试执行完毕,记录软件内存测试结果。
10.根据权利要求9所述的方法,其中还包括: 响应于软件内存测试中检测到内存错误,重新启动该服务器的启动流程。
11.根据权利要求9所述的方法,其中还包括: 响应于软件内存测试没有检测到错误,并且检测到运行时内存错误,记录该运行时内存错误; 判断该内存错误对服务器运行是否致命; 响应于该内存错误对服务器运行是致命的,重新启动该服务器的启动流程。
12.一种使用Xeon处理器的服务器的内存测试系统,包括:过去内存测试结果获得装置,被配置为响应于在所述服务器启动过程中接收到硬件内存测试的请求,获得存储的过去内存测试的结果,其中过去内存测试的结果至少包括在测试中使用的测试循环次数,测试模式以及测试中发生的错误; 硬件内存测试调整装置,被配置为根据获得的过去内存测试的结果调整所述硬件内存测试的测试循环次数以及使用的测试模式;以及 硬件内存测试执行装置,被配置为根据调整后的测试循环次数以及使用的测试模式执行硬件内存测试。
13.根据权利要求12所述的系统,其中所述过去内存测试结果至少包括以下之一:过去的硬件内存测试结果,过去的软件内存测试结果,以及过去的运行时内存错误。
14.根据权利要求12或13所述的系统,其中硬件内存测试调整装置还被配置为:响应于存储的过去内存测试的结果中没有错误,将所述硬件内存测试的测试循环次数调整为O ; 响应于所述硬件内存测试的测试循环次数为O,所述硬件内存测试执行装置被配置为不执行硬件内存测试。
15.根据权利要求12或13所述的系统,其中还包括: 统计装置,被配置为获得存储的过去内存测试的结果中全部内存错误发生的次数; 终止服务器的启动流程装置,被配置为响应于所述全部内存错误发生的次数大于设定的阈值,终止服务器的启动流程。
16.根据权利要求12所述的系统,其中还包括: 记录装置,被配置为响应于 硬件内存测试执行装置测试完毕,记录硬件内存测试结果。
17.根据权利要求16所述的系统,其中还包括: 隔离装置,被配置为响应于硬件内存测试执行装置检测到内存错误,暂停并隔离出错的内存设备。
18.根据权利要求17所述的系统,其中还包括: 判断装置,被配置为判断隔离出错的内存设备后剩余的内存是否足够; 终止服务器的启动流程装置,被配置为响应于判断装置判断没有足够的剩余的内存,终止服务器的启动流程并且通知用户更换出错的内存设备。
19.根据权利要求16或17所述的系统,其中还包括: 软件内存测试调整装置,被配置为根据获得的过去内存测试的结果调整软件内存测试的测试循环次数以及使用的测试模式; 软件内存测试执行装置,被配置为根据调整后的测试循环次数以及使用的测试模式执行软件内存测试。
20.根据权利要求18所述的系统,其中记录装置还被配置为响应于软件内存测试执行装置测试完毕,记录软件内存测试结果。
21.根据权利要求20所述的系统,其中还包括: 重启服务器的启动流程装置,被配置为所述响应于软件内存测试执行装置检测到内存错误,重新启动该服务器的启动流程。
22.根据权利要求19所述的系统,其中还包括: 运行时内存测试装置,被配置为响应于软件内存测试没有检测到错误,并且检测到运行时内存错误,指示所述记录装置记录该运行时内存错误;以及 重启服务器的启动流程装置,被配置为响应于检测到运行时内存错误,判断运行时内存错误对服务器运行是否致命,响应于运行时内存错误对服务器运行是致命的,重新启动该服务器的启动流程。
【文档编号】G06F11/22GK103699463SQ201210367361
【公开日】2014年4月2日 申请日期:2012年9月28日 优先权日:2012年9月28日
【发明者】李翔, S·考查尔, 徐超, 李海强 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1