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

use*_*ser 25 linux-kernel ram ecc

我打算用一些 ECC RAM 来替换我目前安装在 Asus M5A97 Pro 主板(AMD 970 芯片组,FX-6100 CPU)上的非 ECC RAM。

安装内存后,如何判断内存的ECC功能是否正常?

我想过dmidecode --type memory每个 RAM 棒当前打印的是哪些:

Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Run Code Online (Sandbox Code Playgroud)

(首先,我希望每字节 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可执行文件。其中之一可以用于此目的吗?

use*_*ser 17

似乎没有万无一失的方法可以告诉,但是各种方法可以为您提供某种答案。显然,您几乎必须尝试不同的方法,直到找到一个告诉您 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
Run Code Online (Sandbox Code Playgroud)

这是一个很好的指示。手动执行/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.)
Run Code Online (Sandbox Code Playgroud)

dmidecode --type memory还给出了两个非常强烈的指示:物理内存阵列的“纠错类型”属性(但是由于某种原因,它在非 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
Run Code Online (Sandbox Code Playgroud)

以及每个存储设备的总宽度和数据宽度,分别(附加位是用于 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
Run Code Online (Sandbox Code Playgroud)


pau*_*ska 8

有一种非常简单有效的方法可以做到这一点,前提是您可以通过控制台访问服务器/PC 并可以重新启动它:memtest86+

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

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

  • @MichaelKjörling 我只在使用 Xeon CPU 的行业标准服务器上处理 ECC,所以我不知道。我可以_想象_CPU 需要支持 ECC,因为内存控制器驻留在其中。 (2认同)