Actualicé esta publicación desde que reemplacé el procesador, pero el núcleo de mi pregunta (y desafortunadamente los resultados también) son los mismos.
Construí mi primera caja FreeNAS y quería usar RAM ECC ya que quiero almacenar datos críticos. Debido a que tengo un presupuesto limitado, quería buscar la solución más asequible que aún admitiera ECC RAM.
Después de investigar un poco, descubrí que necesito una placa base, memoria y una CPU que admita ECC. Mi placa base preferida es la "Gigabyte X150M-Pro ECC" que tiene el chipset C232, DDR4 y un zócalo LGA1151.
También compré un kit de dos DIMM fabricados por Kingston con el número de modelo "KVR21E15S8K2 / 8" ( hoja de especificaciones ). Gigabyte publicó una lista de módulos de memoria probados y mis módulos parecen ser compatibles con ECC de trabajo ( lista de módulos compatibles ).
Como tengo un presupuesto limitado, necesitaba una CPU Skylake asequible que admita ECC. Según Intel, el Celeron G3900 es compatible con ECC, así que fui con ese.
Después de construir la computadora, quería verificar que mi sistema realmente funciona con memoria ECC e ingresé al BIOS de la placa base. En varios sitios de Internet, descubrí que algunas placas base tienen una sección especial que debería indicar si ECC está funcionando, pero mi placa base no parece tener eso. Revisé todos los menús y no pude encontrar una sección similar.
Después de investigar un poco más y encontré una publicación sobre el intercambio de pila de Unix y Linux que no resolvió mi problema. Intenté lo último memtest86+
que, por lo que pude ver, ni siquiera muestra el valor "ECC". Probé la versión 4.20 anterior que usaban los sistemas Puget que mostraba "ECC: apagado". Sin embargo, después de leer la publicación mencionada anteriormente, dudo que diga la verdad (¿tal vez por eso se eliminó la función?). Ambas versiones tampoco leyeron la velocidad y la latencia correctas del DIMM, lo que aumenta mis dudas sobre memtest86+
.
Otra forma popular de averiguar, si ECC está funcionando, era emitir el dmidecode -t memory
comando y leer el Total Width
y Data Width
. Mis resultados fueron 128 Bits
y 64 Bits
respectivamente. Una parte de la salida mostró detalles sobre la matriz de memoria que tenía un par clave-valor de Error Correction Type: Single-bit ECC
.
Estaba esperando 72 bits
el Total Width
, así que pensé que podría estar relacionado con el doble canal y moví los módulos de memoria a dos ranuras adyacentes que deberían evitar el doble canal, pero el resultado fue el mismo. Aquí está la salida completa de dmidecode -t memory
.
Incluso probé el interesante programa C que publicaron los sistemas Puget, pero el resultado fue que 0
indica que no hay soporte ECC.
Ahora estoy empezando a dudar de que los datos del sitio web de Intel sean correctos y que mi CPU no sea compatible con ECC. Tanto la memoria como la placa base están marcadas específicamente con "ECC", por lo que puedo descartarlas.
¿Es posible que la versión del BIOS necesite una actualización (actualmente no hay ninguna) para habilitar ECC o ECC ya está funcionando y simplemente no pude verificarlo? ¿O mi elección de CPU es incorrecta si quiero ejecutar memoria ECC y el sitio web de Intel es incorrecto / engañoso?
Si mi CPU resulta ser la elección incorrecta, ¿cuál sería la siguiente mejor opción para una "CPU ECC económica"?
ACTUALIZACIÓN: Vi una nueva indicación de que mi sistema en realidad podría estar funcionando con ECC habilitado y la dmidecode
herramienta solo informa datos extraños. En el foro de FreeNAS, el usuario Dusan está utilizando hardware de nivel de servidor (SuperMicro MB, Xeon CPU, Kingston DIMM) y tiene una salida similar con 128 Bits
. Pero escribió que no está seguro de sí mismo, si realmente funciona.
ACTUALIZACIÓN 2: Como yagmoth555 mencionó en su respuesta a esta pregunta, parece que mi placa base solo admite ECC con procesadores Xeon, aunque pensé que esa nota era una reliquia de manuales anteriores que se copiaron. Supongo que eso significa que necesito buscar un procesador Xeon ...: - /
ACTUALIZACIÓN 3: Compré un Xeon E3-1220v5 ahora que, por supuesto, es compatible con ECC y debería cumplir con los requisitos del manual. Ejecuté todas las pruebas nuevamente para verificar la funcionalidad de ECC y los resultados son básicamente idénticos:
De los comentarios en Puget Systems, también parece que el ecc_check.c
programa no funciona en los procesadores Xeon y Core i7 ..: - /
memtest86+
Esta vez revisé un poco más y estoy bastante seguro de que no es compatible con DDR4 o el chipset C232, ya que informa no solo la velocidad y los tiempos incorrectos, sino también DDR3 en lugar del DDR4 instalado. Sin embargo, detectó el procesador muy bien, pero aún obtuve el mismo resultado final con ambas versiones de memtest86+
:
La versión 4.20 ni siquiera detecta mi procesador correctamente.
Cualquier idea sobre cómo más puedo probar para ECC es muy apreciada.