Domanda

Ancora una volta ero in un riesame del progetto, e incontrato l'affermazione che la probabilità di uno scenario particolare è stato "inferiore al rischio dei raggi cosmici" che interessano il programma, e mi venne in mente che non ho avuto la minima idea di che cosa probabilità è.

  

"Dal 2 -128 è 1 di 340282366920938463463374607431768211456, penso che stiamo giustificati nel prendere le nostre possibilità qui, anche se questi calcoli sono fuori da un fattore di qualche miliardo ... Noi 're molto più a rischio di raggi cosmici a vite ci ha dato, io credo ".

E 'questo programmatore corretta? Qual è la probabilità di un raggio cosmico che colpisce un computer e che colpisce l'esecuzione del programma?

È stato utile?

Soluzione

Wikipedia :

  

Gli studi di IBM nel 1990 suggeriscono che i computer in genere l'esperienza di circa un errore dei raggi cosmici indotta per 256 megabyte di RAM al mese. [15]

Ciò significa che una probabilità di 3,7 × 10 -9 per byte al mese, o 1,4 × 10 -15 per byte per secondo. Se sul programma per 1 minuto e occupa 20 MB di RAM, allora la probabilità fallimento sarebbe

                 60 × 20 × 1024²
1 - (1 - 1.4e-15)                = 1.8e-6 a.k.a. "5 nines"

Il controllo degli errori può contribuire a ridurre le conseguenze del fallimento. Inoltre, a causa delle dimensioni più compatte di chip come commentato da Joe, il tasso di fallimento potrebbe essere diverso da quello che era 20 anni fa.

Altri suggerimenti

A quanto pare, non trascurabile. Da questo articolo New Scientist , una citazione da una domanda di brevetto Intel:

  

"raggi cosmici indotta arresti di computer sono verificati e dovrebbero aumentare con frequenza come dispositivi (per esempio transistor) riduzione di dimensione di chip. Questo problema è destinata a diventare un importante limitatore di affidabilità calcolatore nel prossimo decennio."

È possibile leggere le pieno di brevetto qui .

Nota: Questa risposta non è la fisica, ma di errori di memoria silenziosi con moduli di memoria non-ECC. Alcuni degli errori può venire dallo spazio, e un po '-. Dallo spazio interno della scrivania

Ci sono diversi studi di errori di memoria ECC su grandi server farm come cluster CERN e data center di Google. l'hardware di classe server con ECC in grado di rilevare e correggere tutti gli errori singoli bit, e rilevare molti errori multi-bit.

Possiamo supporre che c'è molta non-ECC desktop (e smartphone mobili non ECC). Se controlliamo le carte per tassi di errore ECC-correggibili (singolo bitflips), siamo in grado di conoscere in silenzio tasso di corruzioni di memoria su non ECC memoria.

  • larga scala CERN studio del 2007 "L'integrità dei dati" : vendor dichiara " Bit error rate di 10 -12 per i loro moduli di memoria ", " un tasso di errore osservato è di 4 ordini di grandezza inferiore al previsto ". Per compiti intensivo di dati (8 GB / s di lettura memoria) Ciò significa che solo vibrazione bit può verificarsi ogni minuto (10 -12 i venditori di BER) o una volta in due giorni (10 -16 BER).

  • 2009 di Google di carta "Errori DRAM nel selvaggio: una grande scala Field Study" dice che non ci può essere fino a 25.000-75.000 un bit FIT per Mbit ( fallimenti in tempo per miliardi di ore ), che è pari a 1 - 5 errori di bit all'ora per 8 GB di RAM dopo i miei calcoli. Carta dice la stessa: " tassi di errore correggibili medi di 2000-6000 per GB per anno "

  • .
  • Rapporto 2012 Sandia "rilevamento e la correzione di Silent dati Corruptionfor Large-Scale-High Performance Computing ": 'flip doppia mappa sono stati ritenuti improbabili', ma allo denso Cray XT5 ORNL sono 'al ritmo di una al giorno per 75.000 moduli DIMM' anche con ECC. E gli errori single-bit dovrebbero essere più alto.

Quindi, se il programma ha grande insieme di dati (diversi GB), o ha la lettura di memoria alta o la scrittura di tasso (GB / s o più), e funziona per diverse ore, quindi ci si può aspettare fino a diverse po 'in silenzio gira su l'hardware desktop. Questa tariffa non è rilevabile da memtest, e moduli DRAM sono buone.

Lunghe grappolo viene eseguito su migliaia di non-ECC PC, come BOINC in tutto l'Internet grid computing avrà sempre gli errori dalla memoria bit-flips e anche da disco e di rete errori silenziosi.

E per le macchine più grandi (10 migliaia di server) anche con protezione ECC da errori single-bit, come vediamo nella relazione del Sandia 2012, non ci può essere il doppio-bit lancia ogni giorno, in modo da avere alcuna possibilità di eseguire pieno -size programma parallelo per diversi giorni (senza checkpoint regolare e ripartendo da ultima buona checkpoint in caso di doppio errore). Le macchine enormi riceverà anche bit-lanci in loro cache e registri della CPU (trigger sia del chip di architettura e interni per esempio in ALU datapath), perché non tutti sono protette da ECC.

PS: Le cose saranno molto peggio se il modulo DRAM è male. Per esempio, ho installato nuovo DRAM nel computer portatile, che è morto alcune settimane più tardi. E 'iniziato a dare sacco di errori di memoria. Quello che ho capito: si blocca il computer portatile, riavvia Linux, fsck, trova gli errori sul filesystem di root e dice che vuole fare il riavvio dopo la correzione degli errori. Ma ad ogni successivo riavvio (ho fatto circa 5-6 di loro) ci sono ancora errori trovati sul filesystem di root.

Wikipedia cita un studio condotto da IBM negli anni '90 suggerendo che" i computer in genere l'esperienza di circa un errore dei raggi cosmici indotta per 256 megabyte di RAM al mese." Purtroppo la citazione è stato quello di un articolo su Scientific American, che non ha dato ulteriori riferimenti. Personalmente, ho trovato che il numero sia molto alta, ma forse maggior parte degli errori di memoria indotti dai raggi cosmici non causano problemi reali o inferme.

D'altra parte, persone che parlano di probabilità quando si tratta di scenari di software in genere non hanno idea di cosa stanno parlando.

Bene, i raggi cosmici a quanto pare causato l'elettronica in automobili di Toyota di un malfunzionamento, quindi direi che la probabilità è molto alta:)

Sono i raggi cosmici che causano davvero guai di Toyota?

Con l'ECC è possibile correggere gli errori 1 bit di raggi cosmici. Al fine di evitare il 10% dei casi in cui i raggi cosmici producono 2-bit-errors celle ECC sono tipicamente intercalati su chip quindi nessun due cellule sono uno accanto all'altro. Un evento raggi cosmici che interessa due cellule risulterà pertanto nella due errori 1BIT correggibili.

Sun afferma: (N. parte 816-5053-10 aprile 2002)

  

In linea generale, dei raggi cosmici errori molli si verificano in memoria DRAM ad un   tasso di ~ 10 a 100 FIT / MB (1 FIT = 1 dispositivo di fallire in 1 miliardo di ore).   Quindi, un sistema con 10 GB di memoria dovrebbe mostrare un evento ECC ogni 1.000   a 10.000 ore, e un sistema con 100 GB mostrerebbe un evento ogni   100 a 1.000 ore. Tuttavia, si tratta di una stima approssimativa che la volontà   cambiano in funzione degli effetti sopra descritti.

errori di memoria sono reali, e la memoria ECC aiuta. memoria ECC attuato correttamente correggerà gli errori di singoli bit e rilevare errori di bit doppia (arrestare il sistema se viene rilevato un errore di questo.) Si può vedere questo da come regolarmente persone si lamentano quello che sembra essere un problema software che è risolto eseguendo Memtest86 e scoprire cattiva memoria. Naturalmente un errore temporaneo causato da un raggio cosmico è diverso da un pezzo costantemente omesso di memoria, ma è rilevante per la questione più ampia di quanto si dovrebbe fiducia la vostra memoria per funzionare correttamente.

analisi An sulla base di una dimensione di 20 MB di residente potrebbe essere appropriato per le applicazioni banali, ma i grandi sistemi di routine hanno più server con grandi memorie principali.

Link interessante: http://cr.yp.to/hardware/ecc.html

Il link Corsair nella pagina sembra purtroppo essere morto.

Se un programma è fondamentale per la vita (sarà uccidere qualcuno se non riesce), ha bisogno di essere scritta in modo tale che una sarà o fail-safe, o recuperare automaticamente da un tale fallimento. Tutti gli altri programmi, YMMV.

Toyota sono un esempio calzante. Dite quello che volete su un cavo dell'acceleratore, ma è non software.

Vedi anche http://en.wikipedia.org/wiki/Therac-25

Questo è un vero problema, ed è per questo la memoria ECC è usato in server e sistemi embedded. E il motivo per cui i sistemi volanti sono diverse da quelle terrestri.

Ad esempio, nota che le parti destinate Intel per le applicazioni "embedded" tendono ad aggiungere ECC per la scheda tecnica. Una Bay Trail per un tablet manca esso, in quanto renderebbe la memoria un po 'più costoso e forse più lento. E se un tablet si blocca un programma una volta ogni luna blu, l'utente non si preoccupa più di tanto. Il software in sé è molto meno affidabile rispetto al HW comunque. Ma per SKU destinato all'uso in macchinari industriali e automobilistiche, ECC è obbligatoria. Dal momento che qui, ci aspettiamo che il SW di essere molto più affidabile, e gli errori da disturbi casuali sarebbe un vero problema.

Sistemi certificati IEC 61508 e standard simili di solito hanno entrambe le prove di boot-up che controllare che tutti RAM è funzionale (nessun bit bloccati a zero o uno), nonché la movimentazione in fase di esecuzione che tenta di correggere gli errori rilevati da errore ECC, e spesso anche le attività di depurazione memoria che passare attraverso e leggere e la memoria in scrittura continuamente per fare in modo che gli eventuali errori che si verificano farsi notare.

Ma per il software PC mainstream? Non un grande affare. Per un server di lunga durata? Utilizzare ECC e un gestore di colpa. Se un errore non correggibile uccide il kernel, così sia. O si va paranoico e utilizza un sistema ridondante con l'esecuzione di lock-passo in modo che se un core viene danneggiato, l'altro può prendere il sopravvento, mentre i primi si riavvia core.

Una volta ho dispositivi che erano a volare nello spazio programmato, e quindi è (presumibilmente, nessuno mai mi ha mostrato la carta su di esso, ma è stato detto di essere conoscenza comune nel settore) poteva aspettarsi raggi cosmici per indurre errori di tutte le tempo.

"eventi di raggi cosmici" sono considerati avere una distribuzione uniforme in molte delle risposte qui, questo potrebbe non essere sempre vero (cioè supernove). Anche se "raggi cosmici" per definizione (almeno secondo Wikipedia) proviene da esterno di spazio, penso che sia giusto includere anche locali tempeste solari (aka coronale espulsione di massa sotto lo stesso ombrello. Ritengo che possa causare più bit sfogliare entro un breve periodo, abbastanza potenzialmente corrompere la memoria anche ECC-abilitato.

E 'ben noto che le tempeste solari possono causare un po' di caos con sistemi elettrici (come il Quebec interruzione di corrente marzo 1989 ). E 'molto probabile che i sistemi informatici possono essere colpiti.

circa 10 anni fa ero seduto proprio accanto a un altro ragazzo, eravamo seduti con ogni i nostri computer portatili, era in un periodo di tempo solare abbastanza "tempesta" (seduto in artico, abbiamo potuto osservare questo indirettamente - un sacco di Aurora borealis per essere visto). Improvvisamente - nello stesso istante - entrambi i nostri computer portatili si è schiantato. Stava correndo OS X, ed io era in esecuzione Linux. Nessuno di noi sono abituati ai computer portatili che si infrangono - è una cosa piuttosto rara su Linux e bug del software OS X. comune può più o meno essere esclusa dal momento che stavamo correndo su diversi OS'es (e non è successo durante un salto secondo). Sono venuto a attributo evento a "radiazione cosmica".

In seguito, "radiazione cosmica" è diventata una battuta interna al mio posto di lavoro. Ogni volta che succede qualcosa con i nostri server e non riusciamo a trovare nessuna spiegazione per questo, abbiamo scherzosamente attribuiamo la colpa a "radiazione cosmica". : -)

Il più delle volte, il rumore può danneggiare i dati. Checksum vengono utilizzati per combattere questa su molti livelli; in un cavo dati è tipicamente un parità bit che viaggia lungo il dati. Questo molto riduce la probabilità di corruzione. Poi, il parsing livelli, i dati senza senso è tipicamente ignorata, quindi, anche se un po 'di corruzione ha ottenuto oltre il bit di parità o di altre somme di controllo, sarebbe in molti casi essere ignorato.

Inoltre, alcuni componenti sono elettricamente schermato per bloccare il rumore (probabilmente raggi cosmici non immagino ).

Ma alla fine, come gli altri answerers hanno detto, v'è il bit occasionale o di byte che viene criptato, ed è lasciato al caso se questo è un byte significativo o meno. Migliore delle ipotesi, una cosmica arrampica ray uno dei bit vuoti e non ha assolutamente alcun effetto, o si blocca il computer (questa è una buona cosa, perché il computer è mantenuto dal fare del male); ma nel peggiore dei casi, beh, io sono sicuro che si può immaginare.

ho sperimentato questo -. Non è raro che i raggi cosmici a capovolgere un po ', ma è molto improbabile che una persona osservare questo

stavo lavorando su uno strumento di compressione per un installatore nel 2004. I miei dati di test fosse un file di installazione di Adobe di circa 500 MB o più decompresso.

Dopo una corsa di compressione noioso, e una decompressione eseguire all'integrità prova, FC / B ha mostrato un diverso byte.

In che un byte MSB aveva capovolto. Ho anche capovolto, preoccupante che ho avuto un bug folle che emergerebbero solo in condizioni molto specifiche -. Io non sapevo nemmeno dove iniziare a cercare

Ma qualcosa mi ha detto di eseguire nuovamente il test. Ho corso e passò. Ho creato uno script per eseguire il test 5 volte durante la notte. Al mattino tutto era passato 5.

In modo che è stato sicuramente un po 'cosmico a raggi a fogli mobili.

Si potrebbe desiderare di avere uno sguardo a hardware Fault Tolerant pure.

Per esempio Stratus Tecnologia costruisce server Wintel chiamati ftServer che hanno avuto 2 o 3 "schede madri" in lock-step, confrontando il risultato dei calcoli. (Questo viene fatto anche nei veicoli spaziali a volte).

I server Stratus si sono evoluti dai chipset personalizzata per sincronia sul backplane.

Un sistema molto simile (ma il software) è la tolleranza lockstep VMware Fault in base alla Hypervisor.

Come punto di dati, questo è appena successo sul nostro accumulo:

02:13:00,465 WARN  - In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ostream:133:
02:13:00,465 WARN  - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:3180:65: error: use of undeclared identifier '_'
02:13:00,465 WARN  - for (unsigned __i = 1; __i < __trailing_sign->size(); ++_^i, ++__b)
02:13:00,465 WARN  - ^
02:13:00,465 WARN  - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:3180:67: error: use of undeclared identifier 'i'
02:13:00,465 WARN  - for (unsigned __i = 1; __i < __trailing_sign->size(); ++_^i, ++__b)
02:13:00,465 WARN  - ^

che sembra molto forte come un flip po 'accade durante una compilazione, in un luogo molto significativo in un file di origine per caso.

Non sto necessariamente dicendo che questo era un "raggi cosmici", ma le partite sintomo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top