CN102214125B - 一种内存ecc功能的测试方法 - Google Patents

一种内存ecc功能的测试方法 Download PDF

Info

Publication number
CN102214125B
CN102214125B CN 201110156713 CN201110156713A CN102214125B CN 102214125 B CN102214125 B CN 102214125B CN 201110156713 CN201110156713 CN 201110156713 CN 201110156713 A CN201110156713 A CN 201110156713A CN 102214125 B CN102214125 B CN 102214125B
Authority
CN
China
Prior art keywords
memory
write
internal memory
address
software
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.)
Active
Application number
CN 201110156713
Other languages
English (en)
Other versions
CN102214125A (zh
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.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry 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 Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN 201110156713 priority Critical patent/CN102214125B/zh
Publication of CN102214125A publication Critical patent/CN102214125A/zh
Application granted granted Critical
Publication of CN102214125B publication Critical patent/CN102214125B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供一种内存ECC功能的测试方法,属于一种计算机服务器的内存检测和纠错方法,具体的测试步骤如下:在内存板的其中一根内存数据位线上引一根线用来拉低电平;启动系统到EFIshell下运行内存检测工具;当内存在检测的时候,将第二步的引线接地,将数据位拉低,模拟产生一位数据错误;检测软件会显示内存出错以及纠错信息。该一种内存ECC功能的测试方法和现有技术相比,可以准确方便的核实内存产生的错误,并可以控制产生错误的次数,通过软件查看产生错误信息,具有很好的推广使用价值。

Description

一种内存ECC功能的测试方法
技术领域
本发明涉及一种计算机服务器的内存检测和纠错方法,具体地说是一种内存ECC功能的测试方法。
背景技术
内存是一种电子器件,在其工作过程中难免会出现错误,而对于稳定性要求高的用户来说,内存错误可能会引起致命性的问题,内存错误根据其原因还可分为硬错误和软错误:硬件错误是由于硬件的损害或缺陷造成的,因此数据总是不正确,此类错误是无法纠正的;软错误是随机出现的,例如在内存附近突然出现电子干扰等因素都可能造成内存软错误的发生。
为了能检测和纠正内存错误,现有技术中的服务器主要用ECC(Error Checking and Correcting,错误检查和纠正)内存来实现,ECC内存即纠错内存,简单的说,其具有发现错误,纠正错误的功能,一般多应用在高档台式电脑/服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳定。
当数据被写入内存,相应的ECC代码与此同时也被保存下来。当重新读回刚才存储的数据时,保存下来的ECC代码就会和读数据时产生的ECC代码做比较。如果两个代码不相同,他们则会被解码,以确定数据中的那一位是不正确的。然后这一错误位会被抛弃,内存控制器则会释放出正确的数据。被纠正的数据很少会被放回内存。假如相同的错误数据再次被读出,则纠正过程再次被执行。重写数据会增加处理过程的开销,这样则会导致系统性能的明显降低。如果是随机事件而非内存的缺点产生的错误,则这一内存地址的错误数据会被再次写入的其他数据所取代。
目前检测内存ECC功能的测试方法有很多,但大多数需要在计算机系统下检测或者在BIOS环境下进行,操作起来不是很方便。
发明内容
本发明的技术任务是解决现有技术的不足,提供一种操作方便的内存ECC功能的测试方法。
本发明的技术方案是按以下方式实现的,该一种内存ECC功能的测试方法,其具体的测试步骤如下:
在服务器上安装Linux操作系统,引出服务器内存DIM插槽数据位上引跟线;
启动服务器到操作系统,开始安装内存检测软件,并配置所需参数:即确定软件要进行的测试方式及测试圈数;
重启服务器和操作系统,启动到EFI SHELL下,运行检测软件;
把内存板上的其中引线接地,该引线将数据位拉低,产生内存的高低数位错误,该错误通过检测软件检测出并纠正,再通过检测界面显示出来。
所述服务器上安装的Linux操作系统为Redhat Linux操作系统。
所述的内存检测软件为memtest软件。
所述检测软件的检测方式包括以下九种:
一:内存写入全 0 或全 1 ,然后分别从高地址和低地址开始读取,判断是否发生改变;
二:每隔7位写入一个1或0,其余位写0或1,然后读出并检验内容是否发生变化;
三:对每个连续的地址,写入的数据每次都左移一位,起始位的位置在每圈检测中也左移一位,并进行 64 圈检测;
四:地址测试,在特定地址写入0,其他地址反复写入1,读出特定地址的内容,检查是否发生了改变;
五:地址测试,在每个地址写入的内容为地址本身,然后读出内容,检验是否正确;
六:将所有的内存写入0或1,然后等待 90 分钟,接着读出内存中的数据,检查它们是否发生了改变;
七:对每个地址写入不同的随机数,然后读出,检查是否发生了改变;
八:使用和 Moving inversions相同的算法,只是写入的是随机数及它的补;
九:每隔一段距离写入一个固定的随机数,其余位置写入该随机数的补,然后读取并检查数据是否发生了改变。
本发明与现有技术相比所产生的有益效果是:
本发明的一种内存ECC功能的测试方法通过将内存板上的引线接地,以产生内存高低位数错误,让内存ECC功能自动检测错误并纠错,通过安装的memtest软件可以查看产生的错误,以核实内存ECC功能是否可以正常使用。该方法可以准确方便的核实内存产生的错误,并可以控制产生错误的次数,通过软件查看产生错误信息,操作过程简单方便。
附图说明
附图1是本发明的检测界面示意图。
附图中的标记分别表示为:
1、总体进度,2、单个测试进度,3、错误统计,4、出现的上一个错误,5、已经完成的测试,6、内存总大小。
具体实施方式
下面结合附图1对本发明所提供的一种操作方便的内存ECC功能的测试方法作以下详细说明。
该一种内存ECC功能的测试方法,其具体的测试步骤如下:
一、在服务器上安装Linux操作系统,引出服务器内存DIM插槽数据位上引跟线;
二、启动服务器到操作系统,开始安装内存检测软件,该内存检测软件为memtest软件,安装过程如下:
1. 解压tar xjvf memtest.tar.bz2;
2. 打patch,压缩包内提供了一个脚本进行patch的安装:
cd memtest
sh patch.sh
脚本会提示输入 Linux 源码所在目录,输入正确的位置后脚本自动完成 patch的安装,输入位置时可使用绝对或相对路径。
3. 重新编译内核:
cd [ Linux 源码所在目录 ]
make [-j cpunum ]
make modules
make modules_install
make install
其中make命令可使用-j选项来指定使用多少个CPU进行编译,以提高编译的速度,
如:
make -j 16
可使用 16 个CPU同时进行编译,这里的cpunum 应小于等于机器上的可用逻辑 CPU 总数 。
编译完成后会生成两个文件:
在/boot/efi/efi/redhat/目录下会生成initrd文件,并以.MEMTEST.img 结尾,如initrd-2.6.28.10.MEMTEST.img ,具体文件名与使用的 Linux 内核版本有关;
在/boot/目录下会生成对应的vmlinuz文件,以.MEMTEST结尾,如 vmlinuz-2.6.28.10.MEMTEST,具体文件名与使用的Linux内核版本有关,将其拷贝到/boot/efi/efi/redhat 目录下:
cp /boot/vmlinuz-*.MEMTEST /boot/efi/efi/redhat
4. 运行配置脚本
sh mconfig.sh
根据提示对测试程序进行配置。
5. 重启系统,选择进入刚才编译的核心。
配置所需参数:即确定软件要进行的测试方式及测试圈数,该检测团建的检测方式包括以下九种, 且每项测试均为可选:
A:内存写入全 0 或全 1 ,然后分别从高地址和低地址开始读取,判断是否发生改变;
B:每隔7位写入一个1或0,其余位写0或1,然后读出并检验内容是否发生变化;
C:对每个连续的地址,写入的数据每次都左移一位。起始位的位置在每圈检测中也左移 一位,为了使用所有的数据模式,需要进行 64 圈检测。这个检测可以有效检测数据敏感的错误,但会耗费较长的时间;
D:地址测试,在特定地址写入0,其他地址反复写入1,读出特定地址的内容,检查是否发生了改变;
E:地址测试,在每个地址写入的内容为地址本身,然后读出内容,检验是否正确。这个 测试可能会检测出上一个测试没发现的一些地址错误。
F:将所有的内存写入0或1,然后等待 90 分钟,接着读出内存中的数据,检查它们是否发生了改变,这个测试耗时不小于 3 小时。
G:对每个地址写入不同的随机数,然后读出,检查是否发生了改变;
H:使用和 Moving inversions相同的算法,只是写入的是随机数及它的补;
I:每隔一段距离写入一个固定的随机数,其余位置写入该随机数的补,然后读取并检查数据是否发生了改变。
三、重启服务器和操作系统,启动到EFI SHELL下,运行检测软件;
四、把内存板上的其中引线接地,该引线将数据位拉低,产生内存的高低数位错误,该错误通过检测软件检测出并纠正,再通过检测界面显示出来。
所述服务器上安装的Linux操作系统为Redhat Linux操作系统。
所述的内存检测软件为memtest软件。
如附图1所示,上述的检测界面包括以下几部分:
1、总体进度:Current cycle为当前正在跑第几圈,Total cycles 为总共跑几圈;下面的进度条以较直 观的方式指示测试进度,进度条仅起到一个参考的作用,由于各个测试花费的时间不同,进度条前进的速度也不均匀。
2、单个测试进度:即当前test的运行情况。显示当前测试的名字,进度条指示测试的进展情况,该进度条也仅仅是起到一个参考作用,在某些循环次数较少的测试中,可能会从0%直接跳到100%。
3、错误统计:对测试中发现的错误信息进行汇总,Total Error为目前的测试发生了几个错误,Total error Bits为发生错误的总位数。
4、出现的上一个错误:此处显示在测试过程中发现的最后一个错误的具体情况,包括地址Address,写入的原始数据Original,读出的错误数据Error三项,当有新错误产生时,此处的数据会相应更新。
5、已经完成的测试:此处列出在当前cycle中已经完成的测试。
6、内存总大小:本次测试内存的大小。
由于进行内存测试时文件系统还未初始化,因此所有输出均保存在内核的一个环形队列中,系统正常启动后,在终端输入:
dmsg | grep "#MEMTEST" > [ 输出文件名 ]
可将测试结果输出到指定文件中。
通过查看测试结果,以核实测试者将内存板接地的次数,这样可以测试处内存ECC功能是否正确。
本发明的一种内存ECC功能的测试方法和现有技术相比,可以准确方便的核实内存产生的错误,并可以控制产生错误的次数,通过软件查看产生错误信息,具有很好的推广使用价值。

Claims (3)

1.一种内存ECC功能的测试方法,其特征在于其具体的测试步骤如下:
步骤一、在服务器上安装Linux操作系统,引出服务器内存DIM插槽数据位上引跟线;
步骤二、启动服务器到操作系统,开始安装内存检测软件,并配置所需参数:即确定软件要进行的测试方式及测试圈数;
步骤三、重启服务器和操作系统,启动到EFI SHELL下,运行检测软件,所述检测软件的检测方式包括以下九种:
一:内存写入全 0 或全 1 ,然后分别从高地址和低地址开始读取,判断是否发生改变;
二:每隔7位写入一个1或0,其余位写0或1,然后读出并检验内容是否发生变化;
三:对每个连续的地址,写入的数据每次都左移一位,起始位的位置在每圈检测中也左移一位,并进行 64 圈检测;
四:地址测试,在特定地址写入0,其他地址反复写入1,读出特定地址的内容,检查是否发生了改变;
五:地址测试,在每个地址写入的内容为地址本身,然后读出内容,检验是否正确;
六:将所有的内存写入0或1,然后等待 90 分钟,接着读出内存中的数据,检查它们是否发生了改变;
七:对每个地址写入不同的随机数,然后读出,检查是否发生了改变;
八:使用和 Moving inversions相同的算法,只是写入的是随机数及它的补;
九:每隔一段距离写入一个固定的随机数,其余位置写入该随机数的补,然后读取并检查数据是否发生了改变;
步骤四、把内存板上的其中引线接地,该引线将数据位拉低,产生内存的高低数位错误,该错误通过检测软件检测出并纠正,再通过检测界面显示出来。
2.根据权利要求1所述的一种内存ECC功能的测试方法,其特征在于所述服务器上安装的Linux操作系统为Redhat Linux操作系统。
3.根据权利要求1所述的一种内存ECC功能的测试方法,其特征在于所述的内存检测软件为memtest软件。
CN 201110156713 2011-06-13 2011-06-13 一种内存ecc功能的测试方法 Active CN102214125B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110156713 CN102214125B (zh) 2011-06-13 2011-06-13 一种内存ecc功能的测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110156713 CN102214125B (zh) 2011-06-13 2011-06-13 一种内存ecc功能的测试方法

Publications (2)

Publication Number Publication Date
CN102214125A CN102214125A (zh) 2011-10-12
CN102214125B true CN102214125B (zh) 2013-07-17

Family

ID=44745446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110156713 Active CN102214125B (zh) 2011-06-13 2011-06-13 一种内存ecc功能的测试方法

Country Status (1)

Country Link
CN (1) CN102214125B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541679B (zh) * 2011-12-30 2014-02-26 曙光信息产业股份有限公司 一种用于测试gpu卡的方法和系统
CN102567159B (zh) * 2011-12-31 2014-10-29 曙光信息产业股份有限公司 内存检测方法
WO2014018060A1 (en) * 2012-07-27 2014-01-30 Hewlett-Packard Development Company, L.P. Systems and methods for detecting a dimm seating error
CN103984634B (zh) * 2014-06-05 2017-06-30 浪潮电子信息产业股份有限公司 一种linux服务器的内存非稳态压力测试方法
CN104268052B (zh) * 2014-10-21 2016-02-03 浪潮电子信息产业股份有限公司 一种基于ITP工具的Memory Rank Spare测试方法
CN105259150B (zh) * 2015-11-02 2019-01-18 深圳市锦瑞生物科技有限公司 一种荧光分析仪定标系统
CN108153616A (zh) * 2016-12-06 2018-06-12 北京京存技术有限公司 一种存储芯片启动程序检测方法和装置
CN108829549A (zh) * 2018-05-30 2018-11-16 郑州云海信息技术有限公司 一种加速筛选内存可纠正报错类型的方法
CN109545268A (zh) * 2018-11-05 2019-03-29 西安智多晶微电子有限公司 一种测试ram的方法
CN112241346B (zh) * 2020-10-23 2023-03-03 浪潮电子信息产业股份有限公司 对bios内存故障检测能力的测试方法、装置及系统
CN115509828A (zh) * 2021-06-22 2022-12-23 华为技术有限公司 一种数据处理方法及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101211292A (zh) * 2006-12-29 2008-07-02 佛山市顺德区顺达电脑厂有限公司 系统内存间错误检测及修正功能验证之系统及其方法
JP4336350B2 (ja) * 2006-03-17 2009-09-30 日本スピンドル製造株式会社 気体輸送の制御方法及びその装置
CN101599046A (zh) * 2009-06-26 2009-12-09 深圳市茁壮网络股份有限公司 一种内存检测方法及装置
CN101814050A (zh) * 2009-02-19 2010-08-25 鸿富锦精密工业(深圳)有限公司 内存测试方法
CN101833492A (zh) * 2010-04-15 2010-09-15 浪潮电子信息产业股份有限公司 一种检测内存故障的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04336350A (ja) * 1991-05-13 1992-11-24 Shikoku Nippon Denki Software Kk 記憶装置の試験方式

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4336350B2 (ja) * 2006-03-17 2009-09-30 日本スピンドル製造株式会社 気体輸送の制御方法及びその装置
CN101211292A (zh) * 2006-12-29 2008-07-02 佛山市顺德区顺达电脑厂有限公司 系统内存间错误检测及修正功能验证之系统及其方法
CN101814050A (zh) * 2009-02-19 2010-08-25 鸿富锦精密工业(深圳)有限公司 内存测试方法
CN101599046A (zh) * 2009-06-26 2009-12-09 深圳市茁壮网络股份有限公司 一种内存检测方法及装置
CN101833492A (zh) * 2010-04-15 2010-09-15 浪潮电子信息产业股份有限公司 一种检测内存故障的方法

Also Published As

Publication number Publication date
CN102214125A (zh) 2011-10-12

Similar Documents

Publication Publication Date Title
CN102214125B (zh) 一种内存ecc功能的测试方法
US9081964B2 (en) Firmware upgrade error detection and automatic rollback
KR100868762B1 (ko) 임베디드용 소프트웨어의 오류 검출 방법
US20150007148A1 (en) Identifying Test Cases Based on Changed Test Code
US20120167060A1 (en) System and Method for Software Immunization Based on Static and Dynamic Analysis
US20150089297A1 (en) Using Crowd Experiences for Software Problem Determination and Resolution
US20100031239A1 (en) Systems, Methods, and Media for Testing Software Patches
US11030074B2 (en) Code update based on detection of change in runtime code during debugging
CN110427289A (zh) 自动测试ssd掉电对数据一致性影响的方法及装置
CN104133743B (zh) 一种将文件烧录到emmc芯片的方法及装置
CN103677754A (zh) 用于优化应用程序的并行构建的方法和系统
CN114138527A (zh) 一种提高服务器性能的方法、装置及介质
CN107766247A (zh) Bootloader的测试方法、装置及可读存储介质
US20070226471A1 (en) Data processing apparatus
CN111857785B (zh) 一种mcu的启动方法、装置及终端设备
Qian et al. A embedded software testing process model
CN107832106A (zh) 一种在低Kernel版本OS下在线更新硬盘FW的方法及系统
CN101727371A (zh) 在bios中加入并运行内存检测工具的方法
CN115422091A (zh) 一种固件调试方法及装置、电子设备、存储介质
CN113849200B (zh) 一种安卓应用在安卓兼容环境中的安装优化方法及系统
WO2012097761A1 (zh) 数据卡与主机间通信异常的修复方法及数据卡
CN1362671A (zh) 基本输入输出系统的追踪除错方法
CN111367738A (zh) 一种Linux下内存安装位置的自动测试方法、装置
US9122551B2 (en) Methods and systems for generating read-only operating systems
CN105242880A (zh) 一种自动化创建Raid并执行压力测试的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant