sábado, 29 de marzo de 2008

Memtest86 y Memtest86+

Un test de memoria RAM es el primer paso en la validación de un equipo informático, una memoria con errores puede producir desde fallos en el arranque , pasando por cuelgues o reinicios hasta una corrupción silenciosa de los datos de usuario. Memtest es el primer programa que debe utilizar un SAT digno de su nombre.
Memtest86+ 2.01 a la izquierda, Memtest86 3.4 a la derecha.

Memtest86+ deriva del original Memtest86, principalmente añade soporte para los últimos chipsets. Suele reconocer más hardware que Memtest86 y soluciona algunos bugs, pero recomiendo tener a mano los dos, pues a veces cuando uno falla el otro funciona correctamente.

En este artículo me centraré en Memtest86+. No necesitamos sistema operativo, ni siquiera un disco duro para usar este software ya que viene pre compilado con cuatro posibilidades:

  • ISO arrancable (Imagen CD).
  • Binario arrancable.
  • Pre compilado arrancable para memoria USB.
  • Pre compilado arrancable para floppy.

Los tests:

La metodología de un buen test de memoria es la siguiente: escribir todas las direcciones de memoria con patrones generados con un algoritmo específico y volver a leerlos para comprobar la coherencia de los datos.

En el algoritmo usado está la diferencia entre los varios programas disponibles, y el más eficaz es Memtest86+, que se compone de diez tests individuales:

  • Test 0: [Address test, walking ones, no cache]. Test de todos los bits direccionables en todos los bancos de memoria usando un patrón de acceso "walking ones".
  • Test 1: [Address test, own address]. Cada dirección es escrita con el valor de su propia dirección y luego es probada para detectar diferencias. Este test es complementario y más estricto que el Test 0 y debería detectar todos los errores de direccionamiento.
  • Test 2: [Moving inversions, ones & zeros]. Este test utiliza el algoritmo Moving inversions con patrones de unos y ceros. Es un test rápido que solamente da errores en subsistemas de memoria muy dañados.
  • Test 3: [Moving inversions, 8 bit pattern]. Utiliza el algoritmo Moving Inversions diseñado para detectar fallos producidos por interferencia con las células de memoria adyacentes.
  • Test 4: [Moving inversions, random pattern]. Se utiliza el mismo algoritmo del paso 3 pero el patrón es un número aleatorio (más bien pseudo aleatorio) y su complemento. Es un test muy efectivo para detectar errores de datos, utilizando 60 patrones aleatorios cambiando en cada pasada del test. Por ello múltiples pasadas aumentan la eficacia.
  • Test 5: [Block move, 64 moves]. Este test prueba la memoria utilizando la instrucción [movsl] y está basado en un antiguo test llamado burnBX de Robert Redelmeier. Experimentalmente es de los test que revelan errores más sutiles.
  • Test 6: [Moving inversions, 32 bit pattern]. Es un test bastante lento pero muy efectivo para detectar errores de datos, ya que hace 32 pasadas para probar todos los patrones.
  • Test 7: [Random number sequence]. Se escribe una serie de números aleatorios en memoria. Es comprobado y complementado y vuelto a comprobar.
  • Test 8: [Modulo 20, ones&zeros]. Utiliza el algoritmo Modulo-X, diseñado para evitar interferencia del subsistema de caché que podrían enmascaras algunos errores en tests anteriores. Utiliza patrones de unos y ceros.
  • Test 9: [Bit fade test, 90 min, 2 patterns]. Se inicializa toda la RAM con un patrón y se deja inactiva 90 minutos, entonces se examina en busca de alguna variación. Se pasa dos veces, una con ceros y otra con unos. Dura 3 horas y no forma parte del test estándar, hay que seleccionarlo a mano en el menú.

Una "pasada" consiste en los nueve tests del 0 al 8 y tras acabar vuelve a empezar en un bucle sin fin. Cuanto más tiempo, mayor seguridad. El test 9 se debe seleccionar manualmente, no forma parte de la suite estándar.

Los tests 4 y 7, al utilizar números aleatorios, no solo chequean RAM sino también el procesador. por lo que a veces detectan errores de CPU y no de memoria. Ambos tests además, y dada su naturaleza, aumentan su poder de detección con múltiples pasadas.

Duración del test:

Memtest86+ 2.00 en acción.

Memtest86 y Memtest86+ son tests infinitos, tras una pasada comienza la siguiente ... Somos nosotros y nuestro nivel de exigencia o tiempo lo que marca la duración del test.

Por otro lado recordar que los módulos DIMM son componentes electrónicos sujetos a perturbaciones de diversos tipos:

  • Fluctuaciones térmicas.
  • Interferencia mutua o externa.
  • Anomalías de alimentación.
  • Soft errors.

En cuanto a la temperatura, he notado en varios sistemas fallos de memoria en torno a la 3ª o 4ª pasada debido a sobrecalentamiento en los DIMMs. Recomiendo una adecuada ventilación en esos casos, incluso si es necesario activa.

Interferencia. Hoy día es anecdótico, pero recuerdo un equipo K6 en que tuve que apantallar los módulos para conseguir los 112 MHz del bus de memoria.

Anomalías de alimentación. Por causa externa (red eléctrica) o interna (fuente de alimentación) se dan algunas veces falsos positivos. Por ello siempre es vital monitorizar los voltajes de la F/A durante los stress tests.

Soft errors. A muchos les sonará extraño, pero en sistemas informáticos hay errores provocados por partículas extraterrestres incidentes (rayos cósmicos) o por desintegraciones radioactivas en los encapsulados de los chips, incluso el metal de los chasis. No es negligible. Recomiendo la excelente y muy técnica lectura del original de IBM Terrestrial cosmic rays and soft errors Vol. 40, No. 1, 1996 o el más reciente IBM Jornal of R&D Vol. 52 No. 3 y también Soft errors' impact on system reliability.

Conclusiones:

Estamos ante el mejor software para detectar problemas con los módulos de memoria, y no puede faltar en el arsenal de cualquier entusiasta del hardware.

Es muy útil en overclocking para validar la estabilidad de nuestro sistema y evitarnos sorpresas desagradables al cargar el sistema operativo.

Quiero añadir que Memtest debe ejecutarse en condiciones reales, es decir simulando el entorno real de trabajo del sistema. No es extraño ver sistemas que no dan errores "al aire" y una vez montados en un chasis mal ventilado o con una fuente de alimentación insuficiente dan problemas.

Recomiendo a los lectores avezados se den un paseo por las páginas siguientes:

Otros análisis de Memtest en este mismo Blog:

Test de memoria para Windows:

Si consideras útil el contenido de este Blog, ayuda a mantenerlo ojeando algunas de las ofertas que consideres interesantes de nuestros anunciantes. Gracias de antemano.

El que tenga dudas o aportaciones tiene para ello la sección de comentarios, intentaré responder a todos y con la máxima claridad. Los Blogs deben de ser lugares de intercambio y agradezco vuestro feedback.