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.
Respuestas:
Hoy descubrí que hay una versión comercial de
memtest86
(sin la+
) de PassMark que también ofrece una versión gratuita que afortunadamente incluyó ECC-Checks.Además, también es compatible con DDR4 y todas las demás características de
memtest86+
.Mi resultado parece ser positivo para el soporte de ECC, por lo que llamaré a esto hecho, aunque esperaba obtener el mismo resultado con herramientas "tradicionales" como
dmidecode
.Si alguien se topa con esta publicación en un momento posterior y necesita más validación y pruebas, también ofrece una versión paga que admite la inyección de error de ECC para probar realmente las capacidades de ECC.
fuente
Editado : Mala noticia del manual de su placa base ...:
Veo que ejecutas BSD / Linux, ejecuta eso dentro del sistema operativo (Disponible para FreeNAS )
dmidecode -t 17
Deberías tener una salida como:
dmidecode 2.12 SMBIOS 2.5 present.
Handle 0x1100, DMI type 17, 28 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 2048 MB Form Factor: DIMM Set: 1 Locator: DIMM1 Bank Locator: Not Specified Type: DDR2 Type Detail: Synchronous Speed: 667 MHz Manufacturer: AD00000000000000 Serial Number: 00002062 Asset Tag: 010839 Part Number: HYMP125P72CP8-Y5 Rank: 2
El ancho total: 72 bits es la parte que está buscando.
En el sistema Windows puedes ejecutar
wmic MEMORYCHIP get DataWidth,TotalWidth
La respuesta para FreeBSD y Windows tomó desde allí
fuente
dmidecode -t memory
y mi resultado fue 128 bitsTotal
y 64 bitsData
dmidecode -t memory
: slexy.org/view/s2JimvAzl6Utilizando un procesador Ryzen 7, ninguna de las herramientas mencionadas funcionó para mí tampoco. Sin embargo, con un kernel de Linux lo suficientemente reciente, las herramientas en edac-utils, edac-ctl y edac-util pueden leer el estado de ECC y también cosas como la cantidad de errores corregidos. El registro del kernel también contendrá líneas con "EDAC" en dmesg, que también debería proporcionar cierta información. Esta funcionalidad se puede probar aún más haciendo un overclocking de la RAM y verificando que se informan los errores (si va lo suficientemente alto), eso es casi la mayor cantidad de pruebas que puede obtener de que realmente funciona. Sin embargo, incluso si estas herramientas informan errores o no funcionan, eso solo significa que no se admite la lectura de la información del estado de ECC, parece que no hay una forma 100% confiable de demostrar que ECC NO funciona ...
fuente
dmesg | grep EDAC
(es posible que deba ejecutar esto con privilegios de root). Por ejemplo, en un sistema basado en Ryzen con memoria ECC instalada y habilitada en el BIOS (si corresponde), es posible que vea una línea que pareceamd64: Node 0: DRAM ECC enabled.
Para placas base y conjuntos de chips que no sean servidores, solo las placas base AMD específicas (como ASRock) y cualquier conjunto de chips AMD ofrecen ECC.
Para Intel, solo hacen que ECC esté disponible en los conjuntos de chips Xeon del servidor. Intel desactiva ECC en sus conjuntos de chips de escritorio.
fuente