Encore une fois, j'étais dans une revue de conception, et j'ai rencontré l'affirmation selon laquelle la probabilité d'un scénario particulier était "inférieure au risque de rayons cosmiques" affectant le programme, et il m'est venu à l'esprit que je n'avais pas la moindre idée de ce que cela la probabilité est.
"Puisque 2 -128 est 1 sur 340282366920938463463374607431768211456, je pense que nous sommes justifiés de tenter notre chance ici, même si ces calculs sont faussés par un facteur de quelques milliards ... Nous sommes beaucoup plus à risque pour les rayons cosmiques de nous bousiller, je crois. "
Ce programmeur est-il correct? Quelle est la probabilité qu'un rayon cosmique frappe un ordinateur et affecte l'exécution du programme?
statistics
physics
probability
error-detection
risk-analysis
Mark Harrison
la source
la source
finally
blocs, nous devrons le qualifier de «s'exécute toujours sauf si le programme se termine ou s'il est frappé par un rayon cosmique»?Réponses:
De Wikipédia :
Cela signifie une probabilité de 3,7 × 10 -9 par octet par mois, ou 1,4 × 10 -15 par octet par seconde. Si votre programme dure 1 minute et occupe 20 Mo de RAM, la probabilité d'échec serait
La vérification des erreurs peut aider à réduire les conséquences de l'échec. De plus, en raison de la taille plus compacte des puces, comme l'a commenté Joe, le taux d'échec pourrait être différent de ce qu'il était il y a 20 ans.
la source
Apparemment, ce n'est pas anodin. De cet article du New Scientist , une citation d'une demande de brevet Intel:
Vous pouvez lire le brevet complet ici .
la source
Remarque: cette réponse ne concerne pas la physique, mais les erreurs de mémoire silencieuses avec les modules de mémoire non ECC. Certaines erreurs peuvent provenir de l'espace extra-atmosphérique et d'autres - de l'espace interne du bureau.
Il existe plusieurs études sur les défaillances de la mémoire ECC dans les grandes batteries de serveurs comme les clusters CERN et les centres de données Google. Le matériel de classe serveur avec ECC peut détecter et corriger toutes les erreurs sur un seul bit et détecter de nombreuses erreurs sur plusieurs bits.
Nous pouvons supposer qu'il existe de nombreux ordinateurs de bureau non ECC (et smartphones mobiles non ECC). Si nous vérifions les papiers pour les taux d'erreur corrigeables ECC (bitflips simples), nous pouvons connaître le taux de corruption de mémoire silencieuse sur la mémoire non ECC.
Étude à grande échelle du CERN 2007 "Intégrité des données" : les fournisseurs déclarent "un taux d'erreur binaire de 10 à 12 pour leurs modules de mémoire ", " un taux d'erreur observé est de 4 ordres de grandeur inférieur à celui attendu ". Pour les tâches gourmandes en données (8 Go / s de lecture de mémoire), cela signifie que le basculement sur un seul bit peut se produire toutes les minutes ( BER de 10 à 12 fournisseurs) ou une fois tous les deux jours ( BER de 10 à 16 ).
Le document de 2009 de Google intitulé "Erreurs DRAM dans la nature: une étude de terrain à grande échelle" indique qu'il peut y avoir jusqu'à 25 000 à 75 000 FIT 1 bit par Mbit ( échecs de temps par milliard d'heures ), ce qui équivaut à 1 - 5 bits. erreurs par heure pour 8 Go de RAM après mes calculs. Le papier dit la même chose: " des taux d'erreur corrigibles moyens de 2000–6000 par Go par an ".
2012 Sandia report "Detection and Correction of Silent Data Corruption for Large-Scale High-Performance Computing" : "les flips à double bit étaient jugés improbables" mais à l'ORNL dense Cray XT5 ils sont "au rythme de un par jour pour 75 000+ DIMM" même avec ECC. Et les erreurs sur un seul bit devraient être plus élevées.
Donc, si le programme a un grand ensemble de données (plusieurs Go), ou a un taux élevé de lecture ou d'écriture en mémoire (Go / s ou plus), et qu'il s'exécute pendant plusieurs heures, alors nous pouvons nous attendre à plusieurs flips de bits silencieux sur le matériel de bureau. Ce taux n'est pas détectable par memtest, et les modules DRAM sont bons.
Les clusters longs s'exécutent sur des milliers de PC non ECC, comme l'informatique de grille à l'échelle de BOINC sur Internet, il y aura toujours des erreurs de bit-flips de mémoire ainsi que des erreurs silencieuses de disque et de réseau.
Et pour les machines plus grandes (10 000 serveurs), même avec une protection ECC contre les erreurs sur un seul bit, comme nous le voyons dans le rapport 2012 de Sandia, il peut y avoir des retournements sur deux bits tous les jours, vous n'aurez donc aucune chance d'exécuter en parallèle pleine taille programme pendant plusieurs jours (sans point de contrôle régulier et redémarrage à partir du dernier bon point de contrôle en cas de double erreur). Les énormes machines obtiendront également des bit-flips dans leurs caches et registres de processeur (à la fois les déclencheurs architecturaux et internes de la puce, par exemple dans le chemin de données ALU), car tous ne sont pas protégés par ECC.
PS: Les choses seront bien pires si le module DRAM est mauvais. Par exemple, j'ai installé une nouvelle DRAM dans un ordinateur portable, qui est mort plusieurs semaines plus tard. Cela a commencé à donner beaucoup d'erreurs de mémoire. Ce que j'obtiens: l'ordinateur portable se bloque, Linux redémarre, exécute fsck, trouve des erreurs sur le système de fichiers racine et dit qu'il veut redémarrer après avoir corrigé les erreurs. Mais à chaque redémarrage suivant (j'en ai fait environ 5-6), il y a toujours des erreurs sur le système de fichiers racine.
la source
Wikipedia cite une étude d'IBM dans les années 90 suggérant que «les ordinateurs subissent généralement une erreur induite par les rayons cosmiques pour 256 mégaoctets de RAM par mois». Malheureusement, la citation concernait un article de Scientific American, qui ne donnait aucune autre référence. Personnellement, je trouve que ce nombre est très élevé, mais peut-être que la plupart des erreurs de mémoire induites par les rayons cosmiques ne causent aucun problème réel ou notable.
D'un autre côté, les gens qui parlent de probabilités en ce qui concerne les scénarios logiciels n'ont généralement aucune idée de ce dont ils parlent.
la source
Eh bien, les rayons cosmiques ont apparemment causé un dysfonctionnement de l'électronique dans les voitures Toyota, donc je dirais que la probabilité est très élevée :)
Les rayons cosmiques causent-ils vraiment des problèmes à Toyota?
la source
Avec ECC, vous pouvez corriger les erreurs 1 bit des rayons cosmiques. Afin d'éviter les 10% de cas où les rayons cosmiques entraînent des erreurs de 2 bits, les cellules ECC sont généralement entrelacées sur des puces, de sorte qu'il n'y a pas deux cellules l'une à côté de l'autre. Un événement de rayons cosmiques qui affecte deux cellules entraînera donc deux erreurs 1 bit corrigibles.
Sun déclare: (Pièce n ° 816-5053-10 avril 2002)
la source
Les erreurs de mémoire sont réelles et la mémoire ECC aide. La mémoire ECC correctement mis en œuvre corrigera les erreurs individuelles de bits et détecter doubles erreurs binaires (arrêt du système si une telle erreur est détectée.) Vous pouvez voir cela de la façon dont régulièrement les gens se plaignent de ce qui semble être un problème de logiciel qui est résolu en exécutant Memtest86 et découvrir une mauvaise mémoire. Bien sûr, une défaillance transitoire causée par un rayon cosmique est différente d'une mémoire défaillante, mais elle est pertinente pour la question plus large de savoir à quel point vous devez faire confiance à votre mémoire pour fonctionner correctement.
Une analyse basée sur une taille résidente de 20 Mo peut être appropriée pour des applications triviales, mais les grands systèmes ont régulièrement plusieurs serveurs avec de grandes mémoires principales.
Lien intéressant: http://cr.yp.to/hardware/ecc.html
Le lien Corsair dans la page semble malheureusement mort.
la source
C'est un vrai problème, et c'est pourquoi la mémoire ECC est utilisée dans les serveurs et les systèmes embarqués. Et pourquoi les systèmes de vol sont différents de ceux au sol.
Par exemple, notez que les pièces Intel destinées aux applications "embarquées" ont tendance à ajouter ECC à la fiche technique. Il manque un Bay Trail pour une tablette, car cela rendrait la mémoire un peu plus chère et peut-être plus lente. Et si une tablette plante un programme à chaque fois dans une lune bleue, l'utilisateur s'en fiche peu. Le logiciel lui-même est de loin beaucoup moins fiable que le HW. Mais pour les références destinées à être utilisées dans les machines industrielles et l'automobile, l'ECC est obligatoire. Depuis ici, nous nous attendons à ce que le SW soit beaucoup plus fiable, et les erreurs de bouleversements aléatoires seraient un vrai problème.
Les systèmes certifiés CEI 61508 et normes similaires ont généralement à la fois des tests de démarrage qui vérifient que toute la RAM est fonctionnelle (aucun bit bloqué à zéro ou un), ainsi qu'une gestion des erreurs lors de l'exécution qui tente de récupérer des erreurs détectées par ECC, et souvent aussi des tâches de nettoyage de la mémoire qui passent par et lisent et écrivent la mémoire en continu pour s'assurer que toutes les erreurs qui se produisent sont remarquées.
Mais pour les logiciels PC traditionnels? Pas grave. Pour un serveur à longue durée de vie? Utilisez ECC et un gestionnaire de pannes. Si une erreur non corrigible tue le noyau, qu'il en soit ainsi. Ou vous devenez paranoïaque et utilisez un système redondant avec exécution de verrouillage afin que si un cœur est corrompu, l'autre puisse prendre le relais pendant que le premier cœur redémarre.
la source
Si un programme est vital (il tuera quelqu'un en cas d'échec), il doit être écrit de telle sorte qu'il soit à sécurité intégrée ou qu'il récupère automatiquement après une telle défaillance. Tous les autres programmes, YMMV.
Les Toyotas en sont un exemple. Dites ce que vous voulez d'un câble d'accélérateur, mais ce n'est pas un logiciel.
Voir aussi http://en.wikipedia.org/wiki/Therac-25
la source
J'ai déjà programmé des appareils qui devaient voler dans l'espace, puis vous (soi-disant, personne ne m'a jamais montré de papier à ce sujet, mais il était connu de tous), les rayons cosmiques pouvaient induire des erreurs tout le temps.
la source
les "événements de rayons cosmiques" sont considérés comme ayant une distribution uniforme dans de nombreuses réponses ici, cela peut ne pas toujours être vrai (c'est-à-dire les supernovas). Bien que les «rayons cosmiques» par définition (du moins selon Wikipedia) proviennent de l' espace extra- atmosphérique, je pense qu'il est juste d'inclure également les tempêtes solaires locales (alias éjection de masse coronale sous le même parapluie. Je pense que cela pourrait faire basculer plusieurs bits dans un court laps de temps, potentiellement suffisant pour corrompre même la mémoire compatible ECC.
Il est bien connu que les tempêtes solaires peuvent causer des ravages aux systèmes électriques (comme la panne de courant de Québec en mars 1989 ). Il est fort probable que les systèmes informatiques puissent également être affectés.
Il y a une dizaine d'années, j'étais assis juste à côté d'un autre gars, nous étions assis avec chacun nos ordinateurs portables, c'était dans une période de temps solaire assez "orageux" (assis dans l'Arctique, nous pouvions l'observer indirectement - beaucoup d'aurores boréales à être vu). Soudain - au même instant - nos deux ordinateurs portables se sont écrasés. Il exécutait OS X, et je courais Linux. Aucun de nous n'est habitué au plantage des ordinateurs portables - c'est une chose assez rare sur Linux et OS X. Les bogues logiciels courants peuvent plus ou moins être écartés car nous fonctionnions sur différents OS (et cela ne s'est pas produit lors d'un saut seconde). Je suis venu attribuer cet événement au "rayonnement cosmique".
Plus tard, le "rayonnement cosmique" est devenu une plaisanterie interne sur mon lieu de travail. Chaque fois que quelque chose se produit avec nos serveurs et que nous ne pouvons trouver aucune explication, nous attribuons en plaisantant la faute au "rayonnement cosmique". :-)
la source
Plus souvent, le bruit peut corrompre les données. Les sommes de contrôle sont utilisées pour lutter contre cela à plusieurs niveaux; dans un câble de données, il y a généralement un bit de parité qui parcourt les données. Cela réduit considérablement la probabilité de corruption. Ensuite, au niveau de l'analyse, les données non-sens sont généralement ignorées, donc même si une corruption dépassait le bit de parité ou d'autres sommes de contrôle, elle serait dans la plupart des cas ignorée.
De plus, certains composants sont blindés électriquement pour bloquer le bruit (probablement pas les rayons cosmiques je suppose).
Mais en fin de compte, comme l'ont dit les autres répondants, il y a le bit ou l'octet occasionnel qui est brouillé, et c'est laissé au hasard que ce soit un octet significatif ou non. Dans le meilleur des cas, un rayon cosmique brouille l'un des bits vides et n'a absolument aucun effet, ou bloque l'ordinateur (c'est une bonne chose, car l'ordinateur est empêché de faire du mal); mais le pire des cas, eh bien, je suis sûr que vous pouvez imaginer.
la source
J'ai vécu cela - Il n'est pas rare que les rayons cosmiques retournent un peu, mais il est très peu probable qu'une personne observe cela.
Je travaillais sur un outil de compression pour un programme d'installation en 2004. Mes données de test étaient des fichiers d'installation Adobe d'environ 500 Mo ou plus décompressés.
Après un cycle de compression fastidieux et un cycle de décompression pour tester l'intégrité, FC / B a montré un octet différent.
Dans cet octet, le MSB avait basculé. J'ai également renversé, craignant d'avoir un bug fou qui ne ferait surface que dans des conditions très spécifiques - je ne savais même pas par où commencer.
Mais quelque chose m'a dit de refaire le test. Je l'ai couru et c'est passé. J'ai mis en place un script pour exécuter le test 5 fois pendant la nuit. Le matin, tous les 5 étaient passés.
C'était donc définitivement un retournement de bits de rayons cosmiques.
la source
Vous pouvez également consulter le matériel à tolérance de panne.
Par exemple, Stratus Technology construit des serveurs Wintel appelés ftServer qui avaient 2 ou 3 "cartes mères" en étape de verrouillage, comparant le résultat des calculs. (cela se fait aussi parfois dans les véhicules spatiaux).
Les serveurs Stratus sont passés du chipset personnalisé au verrouillage sur le fond de panier.
Un système très similaire (mais logiciel) est le lockstep VMWare Fault Tolerance basé sur l'hyperviseur.
la source
En tant que point de données, cela vient de se produire sur notre build:
Cela ressemble très fortement à un petit retournement qui se produit lors d'une compilation, à un endroit très important dans un fichier source par hasard.
Je ne dis pas nécessairement que c'était un "rayon cosmique", mais le symptôme correspond.
la source