servidores para non memoria ecc compatible caracteristicas memory linux-kernel error-detection

memory - non - Memoria de software de detección de bit-flip para plataformas sin ECC



memoria ecc compatible (2)

La cuestión es que el ECC es muy barato en comparación con las "contramedidas de ECC de software". Puede detectar fácilmente si tienen módulos de ECC y presentar quejas (o imprimir una advertencia) cuando no lo tienen.

http://www.cyberciti.biz/faq/ecc-memory-modules/

Por ejemplo, ¿podemos ver todas las escrituras en la memoria (tanto desde el usuario como desde el espacio del kernel), para distinguir entre los cambios de memoria previstos de los cambios de bits en la memoria? ¿O podemos instrumentar de alguna manera todos los códigos con algún ayudante?

Er, usted nunca "verá" los bit-flips en el autobús. Están literalmente causados ​​por una partícula que golpea la memoria RAM, volteando un poco. Solo mucho más tarde puede notar que leyó algo diferente al que escribió. Para detectar esto solo a través del bus, necesitará una copia duplicada de toda su RAM (es decir, cree una instantánea de lo que hay en su RAM real, por lo que puede verificar que cada lectura devuelva lo que se escribió en esa ubicación.)

¿Intenta detectar daños en la memoria silenciosa (bit-flips) mediante el recálculo regular de las sumas de comprobación?

El chico Redis tiene un buen artículo sobre un algoritmo para probar problemas en la RAM. http://antirez.com/news/43 Pero esto realmente busca errores de RAM, no bit-flips aleatorios.

Si "volver a calcular sumas de comprobación" solo funciona cuando NO está escribiendo en la memoria. Eso podría ser "lo suficientemente bueno" pero necesitarás averiguar en qué páginas no se están escribiendo.

Para capturar el 100% de los errores, cada escritura debe realizarse previamente calculando la suma de comprobación de ese bloque de memoria, luego comparándola con la suma de comprobación registrada (para asegurarse de que el bloque no se haya degradado en la RAM). Solo entonces es seguro hacer la escritura y luego actualizar la suma de comprobación. Como puede imaginar, el rendimiento de este será un rendimiento horrible (al menos 100 veces más lento).

Entiendo que cualquier tipo de software de memoria ECC puede costar mucho rendimiento y no detectará todos los errores, pero creo que puede ser útil detectar al menos algunos volcados de bits de memoria antes de que se reutilicen en cálculos posteriores o se almacenen. al disco duro

Bueno, hay un método simple para detectar el 100% de los errores, con un costo de rendimiento del 50%: simplemente ejecute el cálculo en 2 cuadros a la vez (o en un cuadro en dos momentos diferentes, tal vez con una prueba de RAM en medio si eres paranoico.) Si los resultados difieren, has detectado un error.

Ver también:

https://www.linuxquestions.org/questions/linux-hardware-18/how-to-detect-ecc-memory-errors-under-linux-886011/

La mayoría de las plataformas x86 de escritorio (baratas) disponibles todavía no tienen soporte para memoria ECC ( Comprobación y corrección de errores ). Pero la tasa de errores de transferencia de bits de memoria sigue creciendo ( no es el mejor subproceso SO , estudio CERN 2007 a gran escala "Integridad de datos" : " Tasa de errores de bits de 10 -12 para sus módulos de memoria ... la tasa de errores observada es de 4 órdenes de una magnitud inferior a la esperada "; 2009 " Errores de DRAM en la naturaleza: un estudio de campo a gran escala " ). Para el hardware actual con una carga intensiva de datos (8 GB / s de lectura), esto significa que se puede producir una sola inversión de bits por minuto (10 -12 proveedores BER de CERN07) o una vez en dos días (10 -16 BER de CERN07). Google09 dice que puede haber hasta 25000-75000 FIT de un bit por Mbit (fallas en el tiempo por mil millones de horas), lo que equivale a errores de 1 a 5 bits por hora para 8 GB de RAM (" promedio de errores corregibles de 2000– 6000 por GB por año ").

Por lo tanto, quiero saber si es posible agregar algún tipo de detección de errores de software en todo el sistema (verifique la memoria del usuario y del kernel). Por ejemplo, cree un parche para el kernel de Linux y / o para el compilador del sistema para agregar una suma de comprobación de cada página de memoria, e intente detectar corrupciones de memoria silenciosa (bit-flips) mediante el recálculo regular de las sumas de comprobación.

Por ejemplo, ¿podemos ver todas las escrituras en la memoria (tanto desde el usuario como desde el espacio del kernel), para distinguir entre los cambios de memoria previstos de los cambios de bits en la memoria? ¿O podemos instrumentar de alguna manera todos los códigos con algún ayudante?

Entiendo que cualquier tipo de software de memoria ECC puede costar mucho rendimiento y no detectará todos los errores, pero creo que puede ser útil detectar al menos algunos volcados de bits de memoria antes de que se reutilicen en cálculos posteriores o se almacenen. al disco duro

También entiendo que la mejor forma de protección de datos de los bitflips de memoria es cambiar al hardware ECC, pero la mayoría de las PC todavía no son ECC.


La respuesta a la pregunta es sí, y una prueba de ello es el software SoftECC publicado en los comentarios.

Solo una nota de que SoftECC es una solución de nivel de kernel. Si se usa una aplicación de user-land, será una tercera etapa de redundancia, que no parece necesaria.