今天早上我醒来时第一次发现了一件事:我的一个系统记录了DRAM ECC error
通知。事实上,据我所知,有三个通知位于完全相同的内存位置(显然,系统没有实际上名为本地主机):
Aug 31 05:00:46 localhost kernel: [719099.816034] [Hardware Error]: CPU:0 MC4_STATUS[-|CE|MiscV|-|AddrV|-|-|CECC]: 0x9c6c40006b080a13
Aug 31 05:00:46 localhost kernel: [719099.816046] [Hardware Error]: MC4_ADDR: 0x0000000641f49d20
Aug 31 05:00:46 localhost kernel: [719099.816051] [Hardware Error]: Northbridge Error (node 0): DRAM ECC error detected on the NB.
Aug 31 05:00:46 localhost kernel: [719099.816059] EDAC amd64 MC0: CE ERROR_ADDRESS= 0x641f49d20
Aug 31 05:00:46 localhost kernel: [719099.816070] EDAC MC0: CE page 0x641f49, offset 0xd20, grain 0, syndrome 0x6bd8, row 2, channel 0, label "": amd64_edac
Aug 31 05:00:46 localhost kernel: [719099.816075] [Hardware Error]: cache level: L3/GEN, mem/io: MEM, mem-tx: RD, part-proc: RES (no timeout)
上述内容之后,系统时间05:10:46
(719699.8160) 出现了相同的通知,然后系统时间05:20:46
(720299.8160) 又出现了一个通知,该通知也Over
在线上CPU:0 MC4_STATUS
(status 0xdc6c40006b080813
)。到目前为止,系统一直很稳定,没有记录进一步的错误。系统活动正常,有问题的系统自 2014 年以来一直使用 ECC RAM 运行,但从未记录任何 ECC 错误。
我不会太担心单个可纠正的 ECC 错误。记录错误之间的时间间隔几乎正好是十分钟(实际上精确到几微秒)可以只是每十分钟进行一次 RAM 清理;不幸的是,在这个特定的系统上,清理间隔没有作为设置公开。然而,三个连续的错误在相同的内存位置(相同的值CE ERROR_ADDRESS
)确实让我有点担心。
更新:自从我最初发布该问题以来,相关主机已记录了更多日志,所有日志都具有相同的值CE ERROR_ADDRESS
。
我应该如何认真对待这个问题?什么是好的回应?立即订购替换 RAM 并安排尽快安装,将其视为暂时故障,还是如果再次发生则更换 RAM 但现在没有具体行动?
答案1
ECC RAM 通常用于关键服务器。系统报告硬件故障。如果这不是一个关键系统,并且您不介意所有东西都经过它,这可能会造成损坏,请等待并观察会发生什么,但如果您更关心数据而不是 RAM 的成本,请尽快更换有故障的 RAM。
答案2
答案3
我今天早上醒来发现了一件对我来说是第一次的事情;我的一个系统记录了 DRAM ECC 错误通知。三事实上,对于...我不会太担心单个可纠正的 ECC 错误。几乎完全相同10分钟(实际上下降到几微秒)在记录的错误之间可能只是为了每十分钟发生一次的 RAM 清理;不幸的是,在这个特定的系统上,清理间隔没有作为设置显示。
维基百科的网页内存清理说:
“超过 8% 的 DIMM 模块至少会经历一可纠正错误每年。这对于基于 DRAM 和 SRAM 的存储器来说可能是一个问题。任何单个存储器位发生软错误的概率都非常小。”
“为了不干扰 CPU 的常规内存请求,从而防止性能下降,清理是通常只在空闲时间进行由于清理由正常的读写操作组成,因此与非清理操作相比,它可能会增加内存的功耗。因此,清理不是连续进行的,而是定期进行的对于许多服务器来说,可以在BIOS设置程序中配置清理周期。
该网页包含 SuperMicro X9SRA 主板手册的链接,其中解释了清洗间隔:
“巡逻灌木丛
Patrol Scrubbing 是允许 CPU 纠正内存模块上检测到的可纠正内存错误并将纠正结果发送给请求者(原始来源)的过程。当此项设置为 Enabled 时,北桥将读取并写回一个缓存行每 16K 个周期,如果内部处理不会造成任何延迟。通过这种方式,北桥后面大约 64 GB 的内存将每隔一段时间被清理一次。天。选项为 Enabled(启用)和 Disabled(禁用)。”
因此,原因不是擦洗。而是可能的有一个故障位。虽然故障可能突然发生,但故障消失后又再次出现似乎很奇怪,尤其是当故障发生如此频繁时。
“我应该如何认真对待这个问题?正确的应对方法是:立即订购替换 RAM 并尽快安排安装,将其视为暂时故障,还是如果再次发生则更换 RAM,但现在没有具体行动?”
帕维尔·马切克 (Pavel Machek) 发明了诺哈默内核模块说:
“意外发生 Rowhammer 是相当困难的,所以如果你碰到了它,那可能是有人故意的。……好吧,宇宙射线和 Rowhammer 之间的差异超过了三个数量级。如果我没记错的话,宇宙射线预计每年会导致 2 次位翻转……罗默可以进行位翻转10分钟,而且这是旧版本,不是优化版本之一。”。
您可以交换 RAM 模块,看看错误报告是否跟随芯片、停留在内存位置或出现在其他地方。
HPE 建议(针对故障的内存模块):
“症状:在操作系统日志中发现以下错误消息:
host1 kernel: Northbridge Error (node X): DRAM ECC error detected on the NB.
修复:
1. 确定发生故障的内存模块编号(如果错误中提到)
2. 检查 IML 中是否存在与内存模块相关的错误。例如 Proc x slot x
3. 更新系统 BIOS
4. 如果未发现错误,则运行诊断程序并更换内存模块(5-6 次内存诊断循环以隔离内存模块)”
建议采取的行动:
在插槽中切换 RAM 将告诉您它是否是特定的 RAM 模块或者故障是否出在其他电路中。
只要每隔几天不会出现超过一个比特的错误,就没有必要恐慌。
如果你每 10 分钟就会被击中一次可能受到重击。
也可以看看: ”在内核中防御 RowHammer“ 和 ”ECCploit:ECC 内存易受 Rowhammer 攻击“。对于 ARM 处理器,有:”Android GuardION 补丁可缓解针对 ARM 的基于 DMA 的 Rowhammer 攻击“。