ECC RAM 故障是什么样的

ECC RAM 故障是什么样的

对于非 ECC 内存,我对故障的出现有大致的了解;某些随机的事情开始出错(例如,PNG 校验和验证失败一次,然后下次就成功了),诸如此类。但我对 ECC RAM 还比较陌生。ECC RAM 发生故障时我该怎么办?我知道如果有一个位翻转,它应该会自动纠正,但我如何知道是否存在更严重的问题或是否需要更换模块?

我发现一份报告这表明系统可能会自动关闭或无法启动,但我不清楚为什么会出现这种情况。

答案1

Linux 使用 SIGBUS 信号终止使用内存页面的程序,这些页面的位翻转不可恢复(因此一个 ECC 字有 2 次翻转)。然后它将该页面列入黑名单,这样它就不会被重复使用。

当反复遇到已纠正的错误时(通常不是瞬时翻转的情况,而是纠正后仍然存在的硬错误),页面会透明地迁移到另一个物理页面,但使用相同的虚拟地址。这是通过“漏桶”计数器完成的,该计数器会计算过去 X 个时间单位内每个页面的 ECC 错误。

这些方法分别称为硬页面脱机和软页面脱机。您可以通过以下方式了解更多信息并访问错误统计信息/日志:麦克洛格,它是从 2.6 版开始的所有 Linux 内核的一部分,或者通过更新的替代方案守护进程。请注意,如果您愿意,您可以将其设置为让您的内核在每次出现错误时崩溃并重新启动机器。

这也存在于内存页退休在 Solaris 系统中,并且其他操作系统无疑也有自己的版本,尽管我不知道它的名称或参考资料。

简而言之,硬件报告错误,操作系统减轻其影响。因此,您可能不会遇到很多症状,但您可以向操作系统或工具询问统计数据。

答案2

我只见过一次 ECC 错误。这是在一台戴尔服务器上,问题出现在几个地方:

  • 在 vCenter 服务器(它是一台 VMWare 主机)中通过 IPMI
  • 在 BIOS 日志文件中 - 通常,您可以在启动时进入设置以查看记录的错误
  • 通过戴尔远程管理工具或类似工具管理其他系统

鉴于许多服务器内存量大,单个错误可能不会对正在运行的程序造成足够的损害,导致崩溃。如果错误发生在未分配给特定程序的 RAM 中,则可能只会引起轻微问题,甚至根本不会引起任何问题。

此外,由于它是 ECC RAM,因此单个位错误是可以纠正的,不会影响正在运行的程序。拥有 ECC RAM 的意义大致就是上面提到的两点:

  • 检测和记录错误的能力
  • 纠正单比特错误的能力

因此,您可以在管理工具中查找错误,通常,您得到的错误应该比使用非 ECC RAM 时少。如果错误开始出现,即如果错误率高于(非常低的)背景事件率,则始终建议更换模块。希望这能稍微澄清一下。

编辑:另请参阅这个问题了解有关同一主题的更多信息。

编辑2:实际上我刚刚又有一个 - 对于那些对它在 VMWare vCenter 中的样子感兴趣的人,这里有一个屏幕截图(硬件 ID 混乱): vCenter 中显示内存错误

相关内容