首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查RAM是否在ECC模式下运行?

如何检查RAM是否在ECC模式下运行?
EN

Server Fault用户
提问于 2016-10-20 18:59:35
回答 5查看 37.5K关注 0票数 19

我更新了这篇文章,因为我更换了处理器,但我问题的核心(不幸的是,结果也一样)是一样的。

我构建了我的第一个FreeNAS盒,并希望使用ECC,因为我想存储关键数据。因为我的预算,我想去寻找最负担得起的解决方案,仍然将支持ECC RAM。

在做了一些研究之后,我发现我需要一个支持ECC的主板、内存和CPU。我选择的主板是“千兆字节X150M-Pro ECC”,它有C232芯片组、DDR4和一个LGA1151插座。

我还购买了金斯敦生产的两个DIMM的工具包,型号为"KVR21E15S8K2/8“(规格单)。千兆字节发布了一个测试内存模块的列表,我的模块似乎被工作的ECC (支持的模块列表)所支持。

由于我的预算,我需要一个负担得起的Skylake CPU,支持ECC。根据英特尔的说法,塞隆G3900确实支持ECC,所以我选择了那个。

在构建计算机之后,我想验证我的系统是否确实使用ECC内存运行,并输入主板的BIOS。从不同的网站上,我发现一些主板上有一个特殊截面,它可以判断ECC是否工作,但我的主板似乎没有。我检查了所有的菜单,却找不到类似的部分。

在做了更多的研究之后,在Unix&Linux上找到了一个帖子,这并没有解决我的问题。我尝试了最新的memtest86+,据我所知,它甚至没有显示出"ECC“的值。我尝试了较早的4.20版本的Puget系统使用的,它显示了"ECC: off“。然而,在阅读了前面提到的文章之后,我怀疑它是否说出了真相(也许这就是为什么这个特性被删除了?)这两个版本都没有读出DIMM的正确速度和延迟,这增加了我对memtest86+的怀疑。

另一种常用的方法是发出dmidecode -t memory命令并读出Total WidthData Width。结果分别为128 Bits64 Bits。输出的一部分显示了内存数组的详细信息,该数组具有键值对Error Correction Type: Single-bit ECC

我原以为72 bitsTotal Width,所以我认为它可能与双通道有关,并将内存模块移动到两个相邻的插槽中,这应该会阻止双通道,但结果是一样的。这里是全输出 of dmidecode -t memory

我甚至尝试了Puget系统发布的有趣的C-程序,但是结果是0,表明不支持ECC。

现在我开始怀疑英特尔自己网站上的数据是否正确,而我的CPU实际上并不支持ECC。内存和主板都有"ECC“的特殊标签,所以我可以排除那些。

是否有可能BIOS版本需要一个更新(目前没有)来启用ECC,或者ECC实际上已经在工作,而我只是无法验证它?或者我选择CPU是错误的,如果我想运行ECC内存和英特尔的网站是错误的/误导?

如果我的CPU被证明是错误的选择,那么“预算ECC CPU”的下一个最佳选择是什么?

更新:我看到了一些新指示,实际上我的系统可能在启用ECC的情况下运行,而dmidecode工具只是报告奇怪的数据。在FreeNAS论坛上,用户杜桑正在使用服务器级硬件(SuperMicro MB、Xeon、Kingston ),并与128 Bits具有类似的输出。但他写道,他不确定自己是否真的能成功。

更新2:正如yagmoth555在他的回答中提到的那样,我的主板似乎只支持带有Xeon处理器的ECC,尽管我认为这是以前被复制的手册中的一小部分。我想这意味着我需要调查Xeon处理器。*-/

更新3:我现在买了一个XeonE3-1220v5,当然它支持ECC,并且应该满足手册的要求。我再次运行了所有测试以检查ECC的功能,结果基本上是相同的:

从Puget的评论来看,ecc_check.c程序似乎不适用于Xeon和核心i7处理器。*-/

这次我又检查了一下memtest86+,我很确定它根本不支持DDR4或C232芯片组,因为它不仅报告了错误的速度和时间,而且还报告了DDR3而不是已安装的DDR4。然而,它可以很好地检测处理器,但我仍然得到了与两个版本的memtest86+相同的结果:

4.20版本甚至没有正确地检测到我的处理器。

任何关于我如何测试ECC的想法都是非常感谢的。

EN

回答 5

Server Fault用户

回答已采纳

发布于 2016-10-24 15:05:10

今天,我发现有一个商业版 of memtest86 (没有+)来自PassMark,它也提供了一个免费版本,值得庆幸的是,它包括了ECC检查。

此外,它还支持DDR4和memtest86+的所有其他特性。

我的结果似乎对ECC的支持是积极的,所以我将称之为完成,尽管我希望通过“传统”工具(如dmidecode )获得同样的结果。

如果有人在晚些时候偶然发现这个帖子,并且需要进一步的验证和测试,他们还提供了一个付费版本,支持ECC错误注入来实际测试ECC功能。

票数 10
EN

Server Fault用户

发布于 2016-10-21 12:28:33

编辑:你的主板手册上的坏消息.:

我看到您运行BSD/linux,在操作系统中运行它;(可用于FreeNAS)

dmidecode -t 17

您的输出应该如下所示:

dmidecode 2.12 SMBIOS 2.5 present.

Handle 0x1100, DMI type 17, 28 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 2048 MB Form Factor: DIMM Set: 1 Locator: DIMM1 Bank Locator: Not Specified Type: DDR2 Type Detail: Synchronous Speed: 667 MHz Manufacturer: AD00000000000000 Serial Number: 00002062 Asset Tag: 010839 Part Number: HYMP125P72CP8-Y5 Rank: 2

总宽度: 72位是您正在寻找的部分。

在Windows系统上可以运行

wmic MEMORYCHIP get DataWidth,TotalWidth

//ECC内存DataWidth TotalWidth 64 72 //非ECC内存DataWidth TotalWidth 64 64

FreeBSD和Windows的答案来自于那里

票数 7
EN

Server Fault用户

发布于 2017-05-13 11:22:23

使用Ryzen 7处理器,上面提到的工具也没有对我起作用。然而,有了最近的Linux内核,edac-utils、edac-ctl和ECC中的工具可以读取ECC状态以及更正错误的数量。内核日志还将包含dmesg中带有"EDAC“的行,这也会给出一些信息。这个功能可以通过超频RAM和检查错误是否被报告来进一步测试(如果足够高的话),这几乎是你能得到的证明它真的工作的证据。然而,即使这些工具报告错误或不工作,这只是意味着不支持读取ECC状态信息,似乎没有100%可靠的方法来证明ECC不工作.

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/810314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档