所有系统运行正常

支持比特币、门罗币、USDT、以太坊或 Solana 付款 · 仅需邮箱注册

硬件

为什么我们的每台服务器都配备 ECC 内存

内存错误比大多数人想象的更常见,而 DDR5 的片上 ECC(On-Die ECC)并不能取代真正的 ECC。本文说明两者的区别,以及如何在您的服务器上检查。

DediCrypto 工程团队阅读约 5 分钟

放大镜下的内存条:一个翻转的比特被纠正回原位

内存错误并不罕见

2009 年发表的一项针对 Google 服务器集群的大规模实地研究发现,约三分之一的机器每年至少出现一次可纠正的内存错误,而且错误率比实验室估算值高出几个数量级。对于一台常年 24/7 不间断运行的服务器,心存“这种事轮不到我”的侥幸,就是押错了宝。

ECC 的作用

ECC 内存会在数据旁额外存储校验位。内存控制器利用这些校验位即时纠正单比特错误,并检测多比特错误,而不是悄无声息地把损坏的数据交给您的应用程序,或者写入磁盘,让文件系统老老实实地为损坏后的数据计算校验和。

DDR5 的片上 ECC 不等于真正的 ECC

每颗 DDR5 芯片都内置片上 ECC(On-Die ECC),用于修正芯片内部的错误。但它不保护数据在内存模组与 CPU 之间传输的过程,也不会向操作系统报告任何信息。真正的 ECC 内存模组增加了额外的芯片和更宽的总线,使内存控制器能够端到端地纠正并记录错误。我们所说的 ECC 指的是后者:Ryzen 平台使用 ECC UDIMM,EPYC 和 Xeon 平台使用寄存器式 ECC RDIMM。

在您的服务器上检查

$ ls /sys/devices/system/edac/mc/
mc0
$ grep . /sys/devices/system/edac/mc/mc*/ce_count
/sys/devices/system/edac/mc/mc0/ce_count:0

如果 EDAC 下列出了内存控制器,说明错误报告已启用。某根内存条的 ce_count(已纠正错误计数)持续上升是一个早期预警:请提交工单,我们会在它演变成问题之前更换该内存条。

资料来源

  1. B. Schroeder、E. Pinheiro、W.-D. Weber,“DRAM Errors in the Wild: A Large-Scale Field Study”,ACM SIGMETRICS 2009 会议论文
延伸阅读

更多博客文章

全部文章

所有型号均配备 ECC 内存。

Ryzen 采用 ECC UDIMM,EPYC 与 Xeon 采用寄存器式 ECC 内存,全系标配,绝非选配。

比特币门罗币泰达币以太坊USDC莱特币Solana波场 TRON+6 种
查看服务器 联系工程师

现货服务器 2⁠–⁠4 小时上线