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+
verifica la parte de la memoria que memtest86+
está cargada.
¿La memoria está asignada a un memtest86+
tamaño tan pequeño que no importa, o es posible que memtest86+
se pierda un defecto en la DRAM porque no puede probar las ubicaciones de memoria en las que reside?
Respuestas:
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 (por ejemplo, tablas ACPI). Si bien la CPU puede acceder a estas regiones RAM, escribir cualquier cosa en ellas puede generar un comportamiento impredecible.
Parte del RAM se usa para el modo de administración del sistema y ni siquiera se puede acceder desde la CPU fuera del código SMM privilegiado.
El rango de direcciones RAM entre 640K y 1M es inaccesible debido a las peculiaridades del diseño de la memoria de la PC heredada (parte de esta RAM se puede utilizar como una sombra para BIOS ROM y para SMM, otras partes pueden ser completamente inaccesibles).
fuente
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 toda la memoria direccionable por el usuario.
-
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 la esté usando.
fuente
memtest
también está probando el caché de la CPU. Entonces, simemtest
se cargara en este caché, entonces esta parte del caché no podría probarse, lo cual es más problemático, porque es mucho más pequeño que la memoria.