如何判断RAM ECC是否正常工作?


19

我正计划购买一些ECC RAM来代替我目前在华硕M5A97 Pro主板(AMD 970芯片组,FX-6100 CPU)上安装的非ECC RAM。

安装RAM后,如何判断RAM的ECC功能是否正常工作?

我考虑过dmidecode --type memory当前每个RAM棒可以打印的内容:

Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits

(对于其中之一,我希望每字节1位ECC的数据宽度可以保持64位,但总宽度可以读取72位。)

可以用来确定ECC是否有效吗?还是dmidecode太低了?我还能使用什么(除了等待并查看日志中是否显示ECC错误,这表明它正在工作,但不是在不工作)?

更新:后来我想到了edac-utils。安装它们,我得到了Not enabling Memory Error Detection and Correction since EDAC_DRIVER is not set。那给了我edac-utiledac-ctl可执行文件。可以将其中之一用于此目的吗?


2
是否有比我更多时间的人可以将来自pugetsystems.com/labs/articles/…的有关ecc_check.c的部分添加到答案之一中?
Costin Gușă 2014年

Answers:


12

似乎没有确定的方法可以告诉您,但是各种方法都可以为您提供某种答案。显然,您几乎必须尝试其他方法,直到找到一个告诉您ECC正在工作的方法。

在我的情况下,无法诱使memtest86 + 4.20意识到它正在处理ECC RAM。即使我将其配置为ECC On,它仍会ECC: Disabled在IMC行上报告。我尚未尝试使用新版本。但是(可能是在安装edac-utils之后,不幸的是我基本上同时完成了这两项操作),Linux在启动日志中报告了(穿插了其他一些条目):

[    4.867198] EDAC MC: Ver: 2.1.0
...
[    4.874374] MCE: In-kernel MCE decoding enabled.
[    4.875414] AMD64 EDAC driver v3.4.0
[    4.875438] EDAC amd64: DRAM ECC enabled.
...
[    4.875542] EDAC amd64: CS0: Unbuffered DDR3 RAM
[    4.875545] EDAC amd64: CS1: Unbuffered DDR3 RAM
[    4.875546] EDAC amd64: CS2: Unbuffered DDR3 RAM
[    4.875548] EDAC amd64: CS3: Unbuffered DDR3 RAM

这是一个很好的指示。手动执行/etc/init.d/edac restart不会创建类似的日志条目,并且在几次重新启动之前查看了较旧的日志,我看到:

[   13.886688] EDAC MC: Ver: 2.1.0
[   13.890389] MCE: In-kernel MCE decoding enabled.
[   13.891082] AMD64 EDAC driver v3.4.0
[   13.891107] EDAC amd64: DRAM ECC disabled.
[   13.891116] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load.
[   13.891117]  Either enable ECC checking or force module loading by setting 'ecc_enable_override'.
[   13.891118]  (Note that use of the override may cause unknown side effects.)

dmidecode --type memory还提供了两个非常有力的指示:物理内存阵列的“纠错类型”属性(但是由于某种原因,它在non-ECC RAM上显示了相同的内容,因此这可能与主板的支持而不是内存的功能有关),

Handle 0x0026, DMI type 16, 23 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: Multi-bit ECC

以及每个存储设备的总宽度和数据宽度(其他位是用于ECC的位):

Handle 0x0028, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0026
    Error Information Handle: Not Provided
    Total Width: 72 bits
    Data Width: 64 bits

5

如果您具有对服务器/ PC的控制台访问权并可以重新启动,则有一种非常简单有效的方法:memtest86 +

这个漂亮的工具将快速向您显示内存是否启用了ECC。我也相信,在进行实际测试时,它将执行ECC验证。

这是一个(略过时的)屏幕截图: 在此处输入图片说明


完善!现在,我正在看IMC : AMD FX(tm)-6100 Six-Core Processor (ECC : Disabled)和ECC off。我想,那么,如果它显示了比其他任何事情Disabled,并off为ECC与新的DIMM,我都准备好尽可能的硬件去至少?
2014年

2
@MichaelKjörling我只处理具有Xeon CPU的行业标准服务器上的ECC,所以我不知道。我可以想象 CPU需要支持ECC,因为内存控制器位于其中。
pauska 2014年

en.wikipedia.org/wiki/…将FX-6100列为Zambezi(基于Bulldozer),其中的“所有模型都支持... ECC [RAM]”
CVn 2014年

不幸的是,memtest86 + 4.20似乎不想将我的RAM识别为ECC。但是,还有其他一些非常有力的迹象表明ECC正在运行。看我的答案。不过,还是非常感谢您!
2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.