GNU/Linux >> Tutoriales Linux >  >> Linux

¿Linux puede limpiar la memoria?

Esto es realmente una mala idea. La memoria no se puede probar de forma fiable en un barrido rápido. Esta es la razón por la que un software como memtest86 usa varias pasadas con diferentes patrones de bits para probar la memoria. Solución:

  1. Pruebe la memoria con memtest86, preferiblemente una prueba larga, déjelo funcionando durante la noche, llevará mucho tiempo.

  2. Si se detecta mala memoria, use memmap parámetro del kernel para obligar al kernel a no usar esa memoria:

   memmap=nn[KMG]$ss[KMG]
            [KNL,ACPI] Mark specific memory as reserved.
            Region of memory to be used, from ss to ss+nn.
            Example: Exclude memory from 0x18690000-0x1869ffff
                     memmap=64K$0x18690000
                     or
                     memmap=0x10000$0x18690000

Además, puede usar la memoria ECC que corregirá errores de 1 bit y detectará automáticamente errores de 2 bits en su memoria (y obtendrá mensajes de registro del kernel sobre problemas de memoria no corregibles si ocurren)


La publicación y la respuesta malinterpretan el problema. La depuración de memoria tiene como objetivo evitar que los errores corregibles de un solo bit se conviertan en errores dobles incorregibles. El depurador simplemente toda la memoria física (obligando a las fallas de caché a hacerlo) de vez en cuando. Si hay errores de un solo bit, se corregirán (y la corrección debe reescribir el valor correcto usando una comparación e intercambio), eliminando así el error.

De lo contrario, si ocurre un segundo error en una palabra que ya tiene un error, la palabra completa será incorregible y el sistema operativo tendrá que hacer algo drástico.

La limpieza es importante porque sin ella, la memoria que se lee pero no se escribe (como las páginas de códigos) puede acumular errores con el tiempo.


La respuesta es sí, y se hace de manera transparente (siempre que tenga memoria ECC para detectar errores y la versión de su kernel sea al menos 2.6.30 para continuar operando de manera segura).

Básicamente, su memoria se comprueba en cada lectura del procesador y se limpia periódicamente* para comprobar la coherencia con los códigos de corrección de errores (ECC). Si ocurre un error, obtiene una Excepción de verificación de máquina, que luego mcelog (http://www.mcelog.org/) registra y captura.

Si su error era corregible, incrementa un contador de "cubo con fugas", lo que hace que un DIMM físico que falla con demasiada frecuencia se reemplace de manera transparente por otro. Por lo tanto, su página de memoria se copia en una nueva ubicación, su dirección de memoria virtual se actualiza para apuntar a la nueva página y el sistema operativo marca la página anterior para que no se use más.

Esto se llama "desconexión suave" en Linux (y retiro de la página de memoria en Solaris, no sé acerca de otros sistemas operativos).

Sin embargo, si su error no se pudo corregir, sucede lo que se llama "desconexión forzada", es decir, su página de memoria se elimina de la administración de memoria normal del sistema operativo y su aplicación se elimina (NB:por alguna señal SIGBUS capturable que le dice dónde ocurrió el error, pero es lo suficientemente raro como para no preocuparse e intentar atraparlo). Si su página de memoria se mapea desde un archivo y se limpia, el sistema operativo también puede volver a cargarla de forma transparente en otra ubicación física en lugar de eliminar el proceso.

Puede leer más sobre mcelog, hay muchas opciones de configuración, puede activar otros comportamientos, opciones y otras pistas sobre qué leer y cómo asegurarse de que mcelog se esté ejecutando en su sistema.

* Depuración, o "depuración de patrulla" consiste en leer la memoria, compararla con ECC en busca de errores y sobrescribir con las palabras de memoria corregidas cuando se descubre un error. El término depuración de patrulla se utiliza por oposición a la sobrescritura de datos incorrectos en errores de lectura de memoria, lo que a veces se denomina "depuración de demanda". La depuración es un procedimiento de hardware que se puede habilitar, generalmente a través del BIOS.


Linux
  1. Asesino de falta de memoria de Linux

  2. ¿Cómo puedo observar el ancho de banda de la memoria?

  3. ¿Cómo puedo reservar un bloque de memoria del kernel de Linux?

  4. Memoria inactiva de Linux

  5. Volcar la memoria de un proceso de Linux en un archivo

13 maneras en que puede ayudar a Linux

Cómo borrar la memoria de intercambio en Linux

Ejemplos de comandos gratuitos en Linux

¿Se pueden alojar los contenedores de Windows en Linux?

Segmentación de memoria de Linux

¿Puedo iniciar Linux desde un VHD?