我有一个带有双Intel Xeon E5503 CPU的戴尔PowerEdge R710。 它具有96GB(12x8GB)的ECC DIMM。 在其BIOS中,内存configuration为“高级ECC”。
我的问题是如果我的DIMM已经是ECC了,在BIOS中启用这种“高级ECC”模式还是应该切换到“优化”模式?
戴尔这样描述这些模式:
高级ECC模式此模式使用两个MCH并将它们“捆绑”在一起以模拟128位数据总线DIMM。 这主要用于实现基于x8 DRAM技术的DIMM的单一设备数据校正(SDDC)。 在每种内存模式下,SDDC都支持基于x4的DIMM。 一个MCH是完全未使用的,安装在此通道中的任何内存将在POST期间生成警告消息。
内存优化模式在这种模式下,MCH独立运行; 例如,一个可以空闲,一个可以执行写操作,另一个可以准备读操作。 内存可以安装在一个,两个或三个通道中。 为了充分实现内存优化模式的性能优势,每个CPU的所有三个通道应该被填充。 这意味着一些“非典型”内存configuration(如3GB,6GB或12GB)将产生最佳性能。 这是推荐的模式,除非需要特定的RASfunction。
戴尔PowerEdge R710系统硬件用户手册(PDF)
它确实有所作为,只有在您需要x4或x8设备上的RAS(可靠性,可用性和服务)function以及了解您的需求时,才有意义。 有关更多详细信息,请参阅戴尔白皮书Dell™PowerEdge™服务器2009 – 内存 。
另外,PowerEdge R710的技术指南中提供了R710特定的configuration和布局 – (这是因为我没有链接的声望)。
要注意的重要问题是芯片上的ECC和Dell的单一设备数据校正(SDDC)BIOS提供的“高级ECC”之间的区别。 你将对两者都有性能影响。 在写入芯片期间,ECC将从错误中恢复。 然而,SDDC更进一步,将组织位,使整个芯片可能会失败,仍然可以恢复。 查看SDDC E7500芯片组的一个例子和细节
问题在于您的性能和/或可靠性是否是您机器的特定用途中最关心的问题。 如果芯片故障会导致此机器上的关键数据或使用的丢失,并且在实施过程中是非冗余的,则高级ECC可能是一个好方法。 但是,您对性能的影响可能更重要。
我已经在Dell PowerEdge服务器上为单个Microsoft SQL Server实施实施了这两个服务。 如果我能有更多的帮助,只是评论让我知道。
希望有所帮助。
编辑:覆盖差距/ ECC实施
是的,即使您同时实施,也存在覆盖率差距。 因为您正在使用高可用性服务器集群,恕我直言,您应该使用高级ECC。 与群集设备的好处相比,您的性能影响是最小的。 根据Crucial的统计,ECC内存的性能只有2%的下降 。
差距将更为具体的发生的错误types和每个如何处理错误。 在你的具体情况下,它不应该转化为数据丢失。 由于这是一个企业数据库pipe理系统,在软件层面pipe理错误,并发问题等,以防止数据丢失。 在正确configuration的DBMS中保存详细的历史logging,并且使用它的软件通常可以设置为在发生严重错误时使事务“回滚”。
ECC实现
ECC将尝试纠正存储器读/写中的任何位错误。 但是,如果错误更为严重,那么甚至连ECC都无法恢复,从而导致数据丢失。 有关ECC的更多讨论,以及ServerFault /什么是ECC内存,为什么更好?
根据维基百科ECC_Memory
ECC内存维护一个内存系统,从而避免单一位错误
SDDC
如果你参考上面的E7500芯片组文档(注意英特尔的55xx / 56xx需要login/合作伙伴,但是这个想法是相似的,这就是为什么我没有链接),这描述了SDDC和它是如何成为可能的。 基本上,它使用一种技术来组织写入内存的单词,以确保所有单词都以这样的方式写入,即每个单词只包含单个位错误,即该单词应该可以从单个位错误中恢复(如上所述)。 现在这是每个单词,所以它可能会从x4设备上的高达4位错误(每个字1个)以及x8设备上的高达8位错误(仍然是1个字)中恢复。
更多的错误,更多的位错误,内存故障,通道故障,总线故障等仍然可能导致可怕的问题,但这就是为什么你有一个集群和一个企业DBMS。
总之,如果你已经启用了一切function,并且错误修正algorithm有太多的位错误来纠正,你仍然会有一个错误,即错误覆盖率的差距。 这些可能是非常罕见的。