¿Cómo interpreto las estadísticas de una ejecución de memtest?

63

Tengo un cuaderno aquí que sospecho que tiene un módulo de memoria defectuoso. Por lo tanto, descargué Memtest86 + y lo dejé correr.

Tenga en cuenta que la captura de pantalla no es la mía real, es proporcionada por memtest86 +

memtest

¿Cómo interpreto los números en la pantalla? Lo dejé correr durante unas cuatro horas y ahora estoy en el pase 7.

Especialmente, que hace

  • el número de prueba
  • el recuento de errores
  • el recuento de errores de ECC

¿indicar? ¿Cuáles son los valores razonables para los errores de memoria? ¿En qué punto debería considerar reemplazar la memoria?

slhck
fuente
3
¿Quieres seguir usando la memoria con algún error?
Daniel Beck
44
Solo un consejo :). No ignore los errores en memtest. Solo un pequeño error en la RAM puede romper un sistema operativo completo y causar pérdida de datos.
Rufo El Magufo
2
En general, si no ve grandes áreas rojas intermitentes, todo está bien :-)
Col
55
Si los errores están limitados a un área específica en la memoria, y está ejecutando Linux, puede decirle al núcleo que ignore esas áreas como se especifica aquí: gquigs.blogspot.com/2009/01/bad-memory-howto.html Si usted está ejecutando Windows, los errores no están en un área consistente, o hay demasiados, debería obtener nueva RAM.
user55325
44
Además, si el dispositivo de memoria comienza a fallar, es posible que más y más áreas se vuelvan defectuosas. La memoria es barata en comparación con el gasto de buscar repetidamente corrupción de datos y problemas de bloqueo del sistema.
Zds

Respuestas:

82

TL; DR

El número más importante primero: el recuento de errores para una memoria saludable debe ser 0 . Cualquier número por encima de 0 puede indicar sectores dañados / defectuosos.


Explicación de la pantalla

     Memtest86+ v1.00      | Progress of the entire pass (test series)
CPU MODEL and clock speed  | Progress of individual, current test
Level 1 cache size & speed | Test type that is currently running
Level 2 cache size & speed | Part of the RAM (sector) that is being tested
RAM size and testing speed | Pattern that is being written to the sector
Information about the chipset that your mainboard uses
Information about your RAM set-up, clock speed, channel settings, etc.

WallTime   Cached  RsvdMem   MemMap   Cache  ECC  Test  Pass  Errors  ECC Errs
---------  ------  -------  --------  -----  ---  ----  ----  ------  --------
Elapsed    Amount  Amount    Mapping  on     on   Test  # of  # of    # of ECC
time       of RAM  of        used     or     or   type  pass  errors  errors
           cached  reserved           off    off        done  found   found
                   RAM, not
                   tested

Explicación de datos / prueba

MemTest ejecuta una serie de pruebas, escribe patrones específicos en cada sector de la memoria y lo recupera. Si los datos recuperados difieren de los datos almacenados originalmente, MemTest registra un error y aumenta el recuento de errores en uno. Los errores suelen ser signos de malas tiras de RAM.

Dado que la memoria no es solo un bloc de notas que contiene información, sino que tiene funciones avanzadas como el almacenamiento en caché, se realizan varias pruebas diferentes. Esto es lo que Test #indica. MemTest ejecuta varias pruebas diferentes para ver si se producen errores.

Algunos ejemplos de prueba (simplificados):

  • Pruebe los sectores en este orden: A, B, C, D, E, F. (Serie)
  • Pruebe los sectores en este orden: A, C, E, B, D, F. (en movimiento)
  • Rellene todos los sectores con patrón: aaaaaaaa
  • Rellene todos los sectores con un patrón aleatorio.

Descripción más detallada de todas las pruebas de: https://www.memtest86.com/technical.htm#detailed

Prueba 0 [Prueba de dirección, caminando, sin caché]

Prueba todos los bits de dirección en todos los bancos de memoria utilizando un patrón de dirección de caminar.

Prueba 1 [Prueba de dirección, dirección propia, secuencial]

Cada dirección se escribe con su propia dirección y luego se verifica la coherencia. En teoría, las pruebas anteriores deberían haber detectado cualquier problema de direccionamiento de memoria. Esta prueba debe detectar cualquier error de direccionamiento que de alguna manera no se haya detectado previamente. Esta prueba se realiza secuencialmente con cada CPU disponible.

Prueba 2 [Prueba de dirección, dirección propia, paralela]

Igual que la prueba 1, pero la prueba se realiza en paralelo con todas las CPU y con direcciones superpuestas.

Prueba 3 [Moviendo inversiones, unos y ceros, secuencial]

Esta prueba utiliza el algoritmo de inversiones en movimiento con patrones de todos unos y ceros. La memoria caché está habilitada aunque interfiere en algún grado con el algoritmo de prueba. Con el caché habilitado, esta prueba no lleva mucho tiempo y debería encontrar rápidamente todos los errores "duros" y algunos errores más sutiles. Esta prueba es solo una comprobación rápida. Esta prueba se realiza secuencialmente con cada CPU disponible.

Prueba 4 [Moviendo inversiones, unos y ceros, paralelos]

Igual que la prueba 3, pero la prueba se realiza en paralelo con todas las CPU.

Prueba 5 [Inversiones en movimiento, 8 bits pat]

Esto es lo mismo que en la prueba 4, pero utiliza un patrón de 8 bits de ancho de "caminar" y ceros. Esta prueba detectará mejor los errores sutiles en los chips de memoria "anchos".

Prueba 6 [Inversiones en movimiento, patrón aleatorio]

La prueba 6 usa el mismo algoritmo que la prueba 4, pero el patrón de datos es un número aleatorio y es un complemento. Esta prueba es particularmente efectiva para encontrar errores sensibles a la detección de datos difíciles de detectar. La secuencia de números aleatorios es diferente con cada pase, por lo que múltiples pases aumentan la efectividad.

Prueba 7 [movimiento de bloque, 64 movimientos]

Esta prueba enfatiza la memoria mediante el uso de instrucciones de movimiento de bloque (movsl) y se basa en la prueba burnBX de Robert Redelmeier. La memoria se inicializa con patrones de desplazamiento que se invierten cada 8 bytes. Luego, se mueven bloques de memoria de 4 MB utilizando la instrucción movsl. Después de completar los movimientos, se verifican los patrones de datos. Debido a que los datos se verifican solo después de que se completan los movimientos de memoria, no es posible saber dónde ocurrió el error. Las direcciones informadas son solo para el lugar donde se encontró el patrón incorrecto. Dado que los movimientos están restringidos a un segmento de memoria de 8 MB, la dirección que falla siempre estará a menos de 8 MB de la dirección informada. Los errores de esta prueba no se utilizan para calcular los patrones de BadRAM.

Prueba 8 [Inversiones en movimiento, pat de 32 bits]

Esta es una variación del algoritmo de inversiones en movimiento que desplaza el patrón de datos a la izquierda un bit para cada dirección sucesiva. La posición del bit inicial se desplaza hacia la izquierda para cada pasada. Para utilizar todos los patrones de datos posibles, se requieren 32 pases. Esta prueba es bastante efectiva para detectar errores sensibles a los datos, pero el tiempo de ejecución es largo.

Prueba 9 [secuencia de números aleatorios]

Esta prueba escribe una serie de números aleatorios en la memoria. Al restablecer la semilla para el número aleatorio, se puede crear la misma secuencia de números para una referencia. El patrón inicial se verifica y luego se complementa y se verifica nuevamente en la próxima pasada. Sin embargo, a diferencia de las inversiones en movimiento, la prueba de escritura y verificación solo se puede hacer en dirección hacia adelante.

Prueba 10 [Módulo 20, unos y ceros]

El uso del algoritmo Modulo-X debería descubrir errores que no se detectan al mover las inversiones debido a la caché y la interferencia de almacenamiento en búfer con el algoritmo. Al igual que con la prueba uno, solo se usan unos y ceros para los patrones de datos.

Prueba 11 [Prueba de desvanecimiento de bits, 90 min, 2 patrones]

La prueba de desvanecimiento de bits inicializa toda la memoria con un patrón y luego duerme durante 5 minutos. Luego se examina la memoria para ver si algún bit de memoria ha cambiado. Se utilizan todos los patrones y todos los cero.

Debido a que los sectores defectuosos a veces funcionan y no funcionan en otro momento, recomiendo dejar que MemTest ejecute algunos pases. Un pase completo es una serie de pruebas completadas que han pasado. (La serie de prueba anterior 1-11) Cuantos más pases obtenga sin errores, más precisa será su ejecución de MemTest. Por lo general, corro alrededor de 5 pases para estar seguro.

El recuento de errores para una memoria saludable debe ser 0. Cualquier número por encima de 0 puede indicar sectores dañados / defectuosos.

El recuento de errores de ECC solo debe tenerse en cuenta cuando ECCse establece en off. ECC significa memoria de código de corrección de errores y es un mecanismo para detectar y corregir bits incorrectos en un estado de memoria. Se puede comparar ligeramente con las comprobaciones de paridad realizadas en RAID o medios ópticos. Esta tecnología es bastante costosa y es probable que solo se encuentre en las configuraciones del servidor. El recuento de ECC cuenta cuántos errores ha corregido el mecanismo de ECC de la memoria. ECC no debería tener que ser invocado para una RAM saludable, por lo que un recuento de errores de ECC por encima de 0 también puede indicar una memoria defectuosa.


Explicación de error

Ejemplo de Memtest que ha encontrado errores. Muestra qué sector / dirección ha fallado.

Pantalla de prueba con errores

La primera columna ( Tst ) muestra qué prueba ha fallado, el número corresponde al número de prueba de la lista ya mencionada anteriormente. La segunda columna ( Pasar ) muestra si esa prueba ha pasado. En el caso del ejemplo, la prueba 7 no tiene pases.

La tercera columna ( Dirección errónea ) muestra exactamente qué parte de la memoria tiene errores. Dicha parte tiene una dirección, muy parecida a una dirección IP, que es única para esa pieza de almacenamiento de datos. Muestra qué dirección falló y qué tan grande es la porción de datos. (0.8MB en el ejemplo)

Las columnas cuarta ( Buena ) y quinta ( Mala ) muestran los datos que se escribieron y los que se recuperaron respectivamente. Ambas columnas deben ser iguales en la memoria no defectuosa (obviamente).

La sexta columna ( Err-Bits ) muestra la posición de los bits exactos que están fallando.

La séptima columna ( Count ) muestra el número de errores consecutivos con la misma dirección y bits defectuosos.

Finalmente, la última columna siete ( Chan ) muestra el canal (si se usan múltiples canales en el sistema) en el que se encuentra la tira de memoria.


Si encuentra errores

Si MemTest descubre algún error, el mejor método para determinar qué módulo está defectuoso está cubierto en esta pregunta de Superusuario y su respuesta aceptada:

Utilice el proceso de eliminación: elimine la mitad de los módulos y vuelva a ejecutar la prueba ...

Si no hay fallas, entonces sabe que estos dos módulos son buenos, así que déjelos a un lado y pruebe nuevamente.

Si hay fallas, reduzca a la mitad nuevamente (ahora a uno de los cuatro módulos de memoria) y luego pruebe nuevamente.

Pero, solo porque uno falló una prueba, no asuma que el otro no falla (podría tener dos módulos de memoria defectuosos): cuando haya detectado una falla con dos módulos de memoria, pruebe cada uno de esos dos por separado después. .

Nota importante: con características como intercalación de memoria y esquemas de numeración de zócalos de módulos de memoria deficientes por parte de algunos proveedores de placas base, puede ser difícil saber qué módulo está representado por una dirección determinada.

BloodPhilia
fuente
¡Gracias por la explicación! ¿Podría responder cómo averiguar el módulo RAM exacto correspondiente a un error? Tengo la dirección errónea igual a 000c34e98dc - 3124.9MB. ¿Por qué un tamaño tan grande? Tengo módulos de 2x1Gb y 2x2Gb en mi PC. ¿Cómo encontrar el que causa fallas?
Mikhail
@Mikhail me gustaría que lo remita a esta pregunta y su respuesta aceptada: superuser.com/questions/253875/...
BloodPhilia
0 errores no significan una RAM defectuosa, he tenido casos en los que una memoria RAM pasó la prueba de memoria con un puntaje del 100% y solo al reemplazarla pude resolver un problema complicado.
Ese tipo brasileño
3
El número en MB después de la dirección hexadecimal no es el tamaño del error, es la ubicación del error en MB. Estoy bastante seguro de que el tamaño de cualquier error siempre será una palabra, ya que ese es el tamaño de lo que está escribiendo en la memoria.
Jarryd
6

Numero de errores

Al pasar por las pruebas, si la memoria falla para cualquiera de las pruebas, aumentará la cantidad de errores. Si recuerdo correctamente, cuenta el número de direcciones que fallaron la prueba.

Número de errores de ECC

La memoria ECC es un tipo especial de chip de memoria que se utiliza para evitar que los datos se corrompan. Su ECC Errscolumna cuenta cuántos problemas corrigió ECC.

(ECC es lento y costoso y es básicamente para sistemas de misión crítica que no pueden molestarse en intercambiar RAM).

Número de prueba

Memtest realiza diferentes tipos de pruebas en su memoria, que se describen en el sitio web Memtest86 . Solo como una traducción rápida al inglés:

Prueba 0: Prueba de dirección para caminar

Memtest escribirá 00000001en la primera ubicación de memoria, 00000010en la siguiente, y así sucesivamente, repitiendo este patrón cada 8 bytes. Luego lee la memoria y se asegura de que el valor no haya cambiado. ( Fuente )

Pruebas 1 y 2: Prueba de dirección de dirección propia

Memtest escribe cada ubicación de memoria con su propia dirección y verifica que el valor no haya cambiado.

La prueba 1 es secuencial y la prueba 2 es paralela (es decir, usa concurrencia).

Prueba 3 y 4 Prueba de inversiones en movimiento

En esencia, esta prueba carga 0s en la memoria, y luego

  1. toma cada ubicación de memoria (comenzando desde la primera ubicación / la más baja),
  2. y escribe el inverso del patrón (creo que es un NO bit a bit, pero no pude encontrar ninguna documentación al respecto).

El objetivo aquí es intentar probar cada bit y sus bits adyacentes "cada combinación posible de 0s y 1s".

La prueba 3 no usa concurrencia, mientras que la prueba 4 sí.

Prueba 5: inversiones en movimiento, Pat de 8 bits

Esto vuelve a hacer el método de inversiones en movimiento, pero esta vez con los 1 de caminata de la prueba 0 en bloques de 8 bits.

Prueba 6: inversiones en movimiento, patrón aleatorio

Memtest usa números aleatorios en lugar de todos los 0 o caminar 1.

Prueba 7: movimiento de bloque

Esta es divertida. Carga patrones en la memoria, los mueve en bloques de 4 MB y los verifica.

Prueba 8: Inversión en movimiento, Pat de 32 bits

Igual que la prueba 5, pero utiliza bloques de 32 bits en su lugar. De hecho, este carga todos los valores posibles de 32 bits en cada ubicación.

Prueba 9: números aleatorios

Éste carga números pseudoaleatorios en la memoria y verifica. Lo bueno del generador de números pseudoaleatorios es que no es muy aleatorio (si alguna vez has ejecutado printf("%d", rand());un programa C sin inicializar y has obtenido el 41 tan aleatorio, ya sabes a qué me refiero). Por lo tanto, se verifica reiniciando la sembradora de números aleatorios y ejecutando el generador nuevamente.

Prueba 10: Modulo-X

Cada 20 ubicaciones, escribe un patrón (todos los 0 o todos los 1) y escribe el complemento en todas las otras ubicaciones, luego verifica.

Prueba 11: Prueba de desvanecimiento de bits

Éste carga la RAM con todos los 1 (y de nuevo con todos los 0), espera 5 minutos y ve si alguno de los valores cambia.

digitxp
fuente
6

Número de prueba: el número de la prueba específica que memtest está ejecutando actualmente. Hay muchos de ellos.

Recuento de errores: la cantidad de errores de memoria encontrados

Errores de ECC: número de errores corregidos por ECC. Su chipset / memoria no tiene ECC, por lo que este número no importa.

Si su memoria tiene algún número de errores por encima de 0, querrá reemplazarlo.

EDITAR: Las pruebas son los diferentes patrones que memtest escribe en la memoria. Escribe diferentes patrones en la memoria y los lee de nuevo para verificar si hay errores, y utiliza diferentes patrones para poder probar todos los estados de todos los bits.

El recuento indica el número de veces que el resultado leído de nuevo en memtest no coincide con lo que escribió en la memoria, lo que significa que hay un error en la porción de memoria que se está probando.

ECC es una tecnología de corrección de errores integrada en chips de memoria para servidores y estaciones de trabajo. La mayoría de las plataformas de escritorio no admiten módulos de memoria con ECC incorporado. Casi todos los servidores / estaciones de trabajo tienen soporte para él, y generalmente lo requieren. El número de errores corregidos por ECC es el número de errores que el chip ECC corrigió con éxito.

Eli
fuente