¿Cómo verificar si la RAM se está ejecutando en modo ECC?

11

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 ).

Etiqueta RAM

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+.

memtest86 + captura de pantalla

Otra forma popular de averiguar, si ECC está funcionando, era emitir el dmidecode -t memorycomando y leer el Total Widthy Data Width. Mis resultados fueron 128 Bitsy 64 Bitsrespectivamente. 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 bitsel 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 0indica 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 dmidecodeherramienta 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:

ecc_check y dmidecode

De los comentarios en Puget Systems, también parece que el ecc_check.cprograma 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+:

memtest86 + v5.01

La versión 4.20 ni siquiera detecta mi procesador correctamente.

memtest86 + v4.20

Cualquier idea sobre cómo más puedo probar para ECC es muy apreciada.

comfreak
fuente
Bueno, si su máquina no admitiera ECC, no comenzaría :)
Huérfanos
1
@Orphans Antes de encontrar la placa base, vi algunas más baratas que afirmaban "compatibilidad ECC" en otros conjuntos de chips como Z170, etc. Resulta que solo significa que la placa puede funcionar (no bloquearse) con la memoria ECC pero efectivamente no la usará. ¿Entonces me pregunto si mi caso es uno así?
Comfreak
Si ECC generalmente lo ves en la sección POST. ¿Puedes presionar ESC durante el arranque para ver la pantalla de arranque?
yagmoth555
Pruebe también memtest de memtest86.com
citrin
@comfreak hmm, tienes razón.
Huérfanos

Respuestas:

4

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.

resultado memtest86


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.

comfreak
fuente
3

Editado : Mala noticia del manual de su placa base ...:

ingrese la descripción de la imagen aquí


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

// Ancho de datos de memoria ECC Ancho total 64 72

// Ancho de datos de memoria no ECC Ancho total 64 64

La respuesta para FreeBSD y Windows tomó desde allí

yagmoth555
fuente
Eso es básicamente lo que ya probé dmidecode -t memoryy mi resultado fue 128 bits Totaly 64 bitsData
comfreak
@comfreak dmidecode -t 17 ¿devolver qué?
yagmoth555
Básicamente obtengo el mismo resultado como dmidecode -t memory: slexy.org/view/s2JimvAzl6
comfreak el
@comfreak bueno, 128 no tiene sentido para mí. generalmente es 64 no ecc o 64b + 8b (72) para ECC (espejo ?? 64 + 64?). pero buscando 'dmidecode total width 128' enumera muchas publicaciones de freenas ... parece que muchos intentan detectar el ECC con el script ./ecc_check.py python
yagmoth555
Supuse que podría estar relacionado con el doble canal, pero incluso obtengo el mismo resultado cuando pongo los dos módulos en dos canales separados, lo que significa que el doble canal no debería funcionar.
Comfreak
3

Utilizando 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 ...

usuario415177
fuente
1
¿Probaste Passmarks memtest86? (El que mencioné en mi respuesta)
comfreak
Si bien su salida puede variar, para verificar la información EDAC en dmesg, puede ejecutar 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.
Joe
0

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.

d hee
fuente
Eso podría ser cierto, pero no responde la pregunta real que se hizo aquí.
Comfreak
Se aplica a la pregunta operativa ya que está ejecutando un chip Intel que no es xeon. La respuesta es que no puede verificar.
Ji
Solo la última oración de su respuesta es incorrecta, ya que el chipset C232, por ejemplo, es un "chipset de escritorio" y admite ECC. Aparte de eso, la pregunta es más general, como en cómo verificar, como si no sabes si es compatible o no.
Comfreak