it-swarm-es.com

¿Memtest86 + prueba la memoria que se usa para ejecutarse?

Uno de los escenarios comunes de falla del servidor es una DRAM incorrecta, a veces incluso cuando se usa memoria ECC.

memtest86+ es una de las herramientas más útiles para diagnosticar problemas de DRAM. Como se carga al comienzo de la memoria, me he estado preguntando si memtest86+ comprueba la parte de la memoria que memtest86+está cargado en.

¿La memoria está asignada a memtest86+ tan pequeño que no importa, o es posible que memtest86+ ¿podría perder un defecto en la DRAM porque no puede probar las ubicaciones de memoria en las que reside?

65
Robin

Obviamente, memtest86 + no puede probar la región de memoria que actualmente contiene el código ejecutable memtest86 + (pero si hay errores de memoria en esa región, es muy probable que la prueba en sí se bloquee). Sin embargo, memtest86 + puede reubicar su propio código a una dirección diferente en tiempo de ejecución, y al usar este truco puede probar toda la memoria que el firmware (BIOS) puede usar, solo que no todo de una vez.

Esta reubicación de código se describe en README.background dentro del archivo de código fuente memtest86 + (el archivo está un poco desactualizado; por ejemplo, indica que las direcciones utilizadas para el código memtest86 + son 0x2000 y 0x200000, pero la dirección baja como se define en la fuente es en realidad 0x10000, y la dirección alta es 0x2000000 o 0x300000 dependiendo de la cantidad de memoria en la máquina).

Pero incluso con este truco de reubicación memtest86 + no puede probar toda la memoria por las siguientes razones:

  • Por lo general, el firmware (BIOS) reserva algunas regiones RAM para su propio uso (p. Ej., Tablas ACPI). Si bien estas CPU pueden acceder a estas RAM regiones) cualquier cosa en ellos puede dar lugar a un comportamiento impredecible.

  • Parte de RAM se usa para Modo de administración del sistema y ni siquiera es accesible desde la CPU fuera del código SMM privilegiado.

  • El rango de direcciones RAM entre 640K y 1M es inaccesible debido a peculiaridades del diseño de la memoria de la PC heredada (algo de esto RAM puede usarse como una sombra para BIOS) ROM y para SMM, otras partes pueden ser completamente inaccesibles).

78
Sergey Vlasov

No, memtest no puede probar su propia memoria. Sin embargo, es tan pequeño (solo algunos KB) que apenas importa. EDITAR: esta declaración es incorrecta ya que, como se indica en la respuesta seleccionada, memtest puede reubicarse dinámicamente para probar todos direccionables por el usuario memoria.

-

En teoría, el procesador moderno puede, en el momento del arranque, configurar parte de su caché como memoria programable, desde dentro de programas muy pequeños (como memtest) se puede ejecutar sin tocar DRAM en absoluto.

Sin embargo, es una característica específica del modelo (que requiere soporte de BIOS) y no creo que memtest lo esté usando.

5
shodanshok