我有一台配备双英特尔至强 E5503 CPU 的戴尔 PowerEdge R710。它有 96GB(12x8GB)的 ECC DIMM。在其 BIOS 中,内存配置为“高级 ECC”。
我的问题是,如果我的 DIMM 已经是 ECC,在 BIOS 中启用这种“高级 ECC”模式是否有意义,还是我应该切换到“优化”?
戴尔这样描述这些模式:
高级 ECC 模式 此模式使用两个 MCH 并将它们“绑定”在一起以模拟 128 位数据总线 DIMM。这主要用于实现基于 x8 DRAM 技术的 DIMM 的单设备数据校正 (SDDC)。在每种内存模式下,基于 x4 的 DIMM 都支持 SDDC。一个 MCH 完全未使用,安装在该通道中的任何内存都会在 POST 期间生成一条警告消息。
内存优化模式在此模式下,MCH 彼此独立运行;例如,一个可以空闲,一个可以执行写操作,另一个可以准备读操作。内存可以安装在一个、两个或三个通道中。为了充分实现内存优化模式的性能优势,每个 CPU 的所有三个通道都应该被填充。这意味着某些“非典型”内存配置(例如 3GB、6GB 或 12GB)将产生最佳性能。除非需要特定的 RAS 功能,否则这是推荐的模式。
它确实有所不同,只有当您需要 x4 或 x8 设备上的 RAS(可靠性、可用性和服务)功能并了解您的需求的权衡时,它才有意义。更多详细信息可以在戴尔白皮书Dell™ PowerEdge™ Servers 2009 - Memory中进行解释。
此外,在 PowerEdge R710 的技术指南中提供了包含 R710 特定详细信息的配置和布局 - (谷歌这个因为我没有链接的声誉)。
需要注意的重要问题是芯片上的 ECC 与戴尔 BIOS 为单设备数据校正 (SDDC) 提供的“高级 ECC”之间的区别。您将对两者产生性能影响。ECC 将在写入芯片期间从错误中恢复。然而,SDDC 更进一步,将组织这些位,以便整个芯片可以发生故障并且仍然可以恢复。查看示例和详细信息SDDC E7500 芯片组
问题是您的性能和/或可靠性是否是您对机器的特定使用最关心的问题。如果芯片故障会导致关键数据丢失或在这台机器上使用,并且在实施中没有冗余,则高级 ECC 可能是一个不错的选择。但是,您这样做会对性能产生影响,这对您来说可能更重要。
我已经在 Dell PowerEdge 服务器上为单个 Microsoft SQL Server 实施现场实施了这两种方法。如果我能提供更多帮助,请发表评论让我知道。
希望有所帮助。
编辑:覆盖范围差距/ECC 实施
是的,即使您同时实施两者,也存在覆盖缺口。由于您专门使用高可用性服务器集群,恕我直言,您应该使用高级 ECC。与集群设备的好处相比,您对性能的影响微乎其微。根据 Crucial 的说法,一般而言,ECC 内存的性能仅降低 2% 。
差距将更具体地针对发生的错误类型以及每个错误的处理方式。在您的特定情况下,它不应转化为数据丢失。由于这是一个企业 DBMS,错误、并发问题等在软件级别进行管理,以防止数据丢失。在正确配置的 DBMS 中保存了详细的更改历史记录,并且使用它的软件通常可以设置为在发生严重错误时让事务“回滚”。
ECC 实施
ECC 将尝试纠正内存读/写中的任何位错误。但是,如果错误更严重,则即使是 ECC 也无法恢复,从而可能导致数据丢失。在ServerFault/What is ECC ram and why is it better?上也有更多关于 ECC 的讨论。
根据ECC_Memory 上的维基百科
SDDC
如果您参考上面的 E7500 芯片组文档(注意Intel 的 55xx/56xx 需要登录/合作,但想法相似,这就是我最初没有链接的原因),它描述了 SDDC 及其实现方式。基本上,它使用一种技术来组织写入内存的字,确保所有的字都以这样的方式写入,即每个字只包含一个位错误,即该字应该可以从单位错误中恢复(如上所述)。 现在这是每个字,因此它可能会通过纠错每个字从 x4 设备上最多 4 位错误(每个字 1 个)和 x8 设备上最多 8 位错误(每个字仍然 1 个)中恢复。
额外的错误、更多的位错误、总内存故障、通道故障、总线故障等仍然会导致可怕的问题,但这就是您拥有集群和企业 DBMS 的原因。
简而言之,如果您启用了所有功能,并且纠错算法无法纠正的位错误太多,您仍然会遇到错误,即错误覆盖率差距。不过,这些可能非常罕见。