Rayos Cósmicos: ¿cuál es la probabilidad de que afecten a un programa?
Una vez más estaba en una revisión de diseño y me encontré con la afirmación de que la probabilidad de un escenario particular era "menor que el riesgo de que los rayos cósmicos" afectaran el programa, y se me ocurrió que no tenía la menor idea de qué significaba eso. la probabilidad es.
"Dado que 2 -128 es 1 de 340282366920938463463374607431768211456, creo que estamos justificados a correr riesgos aquí, incluso si estos cálculos están equivocados en un factor de unos pocos miles de millones... Corremos mucho más riesgo de que los rayos cósmicos Creo que nos arruinaremos."
¿Tiene razón este programador? ¿Cuál es la probabilidad de que un rayo cósmico impacte en una computadora y afecte la ejecución del programa?
De Wikipedia :
Estudios realizados por IBM en la década de 1990 sugieren que las computadoras típicamente experimentan aproximadamente un error inducido por rayos cósmicos por cada 256 megabytes de RAM por mes. [15]
Esto significa una probabilidad de 3,7 × 10 -9 por byte por mes, o 1,4 × 10 -15 por byte por segundo. Si su programa se ejecuta durante 1 minuto y ocupa 20 MB de RAM, entonces la probabilidad de falla sería
60 × 20 × 1024²
1 - (1 - 1.4e-15) = 1.8e-6 a.k.a. "5 nines"
La verificación de errores puede ayudar a reducir las consecuencias de una falla. Además, debido al tamaño más compacto de los chips, como comentó Joe, la tasa de fallas podría ser diferente a la de hace 20 años.
Al parecer, no es insignificante. De este artículo de New Scientist , una cita de una solicitud de patente de Intel:
"Se han producido fallos de computadoras inducidos por rayos cósmicos y se espera que aumenten con la frecuencia a medida que los dispositivos (por ejemplo, los transistores) disminuyen de tamaño en los chips. Se prevé que este problema se convierta en un importante limitante de la confiabilidad de las computadoras en la próxima década. "
Puedes leer la patente completa aquí .
Nota: esta respuesta no se trata de física, sino de errores de memoria silenciosos con módulos de memoria que no son ECC. Algunos de los errores pueden provenir del espacio exterior y otros, del espacio interior del escritorio.
Existen varios estudios sobre fallas de memoria ECC en grandes granjas de servidores, como clústeres del CERN y centros de datos de Google. El hardware de clase servidor con ECC puede detectar y corregir todos los errores de un solo bit y detectar muchos errores de varios bits.
Podemos suponer que hay muchas computadoras de escritorio que no son ECC (y teléfonos inteligentes móviles que no son ECC). Si revisamos los documentos para conocer las tasas de error corregibles por ECC (bitflips únicos), podemos conocer la tasa de corrupción de la memoria silenciosa en la memoria que no es ECC.
Estudio a gran escala del CERN de 2007 "Integridad de los datos" : los proveedores declaran una " tasa de error de bits de 10 a 12 para sus módulos de memoria ", " una tasa de error observada es 4 órdenes de magnitud menor de lo esperado ". Para tareas con uso intensivo de datos (8 GB/s de lectura de memoria), esto significa que se puede producir un cambio de un solo bit cada minuto (10 -12 BER de proveedores) o una vez cada dos días (10 -16 BER).
El artículo de Google de 2009 "Errores de DRAM en la naturaleza: un estudio de campo a gran escala" 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 1-5 bits. errores por hora para 8 GB de RAM después de mis cálculos. El artículo dice lo mismo: " tasas medias de errores corregibles de 2000 a 6000 por GB al año ".
Informe de Sandia de 2012 "Detección y corrección de corrupción silenciosa de datos para informática de alto rendimiento a gran escala" : "las inversiones de doble bit se consideraron poco probables", pero en el denso Cray XT5 de ORNL son "a un ritmo de uno por día para más de 75.000 DIMM", incluso con ECC. Y los errores de un solo bit deberían ser mayores.
Por lo tanto, si el programa tiene un gran conjunto de datos (varios GB) o tiene una alta velocidad de lectura o escritura de memoria (GB/s o más) y se ejecuta durante varias horas, entonces podemos esperar hasta varios cambios de bits silenciosos en el hardware de escritorio. Esta tasa no es detectable por memtest y los módulos DRAM son buenos.
Las ejecuciones prolongadas de clústeres en miles de PC que no son ECC, como la computación grid de Internet BOINC, siempre tendrán errores por cambios de bits de memoria y también por errores silenciosos del disco y la red.
Y para máquinas más grandes (10.000 servidores), incluso con protección ECC contra errores de un solo bit, como vemos en el informe de Sandia de 2012, puede haber cambios de doble bit todos los días, por lo que no tendrá oportunidad de ejecutar archivos paralelos de tamaño completo. programa durante varios días (sin puntos de control regulares y reiniciando desde el último punto de control bueno en caso de doble error). Las máquinas enormes también sufrirán cambios de bits en sus cachés y registros de CPU (tanto los activadores del chip arquitectónico como interno, por ejemplo, en la ruta de datos de ALU), porque no todos están protegidos por ECC.
PD: Las cosas serán mucho peores si el módulo DRAM está defectuoso. Por ejemplo, instalé una nueva DRAM en una computadora portátil, que falló varias semanas después. Comenzó a dar muchos errores de memoria. Lo que obtengo: la computadora portátil se bloquea, Linux se reinicia, ejecuta fsck, encuentra errores en el sistema de archivos raíz y dice que quiere reiniciar después de corregir los errores. Pero en cada reinicio siguiente (hice alrededor de 5 o 6 de ellos), todavía se encuentran errores en el sistema de archivos raíz.