Come interpretare le statistiche di una corsa memtest?


63

Ho un notebook qui che sospetto abbia un modulo di memoria difettoso. Ho quindi scaricato Memtest86 + e l'ho lasciato correre.

Si noti che lo screenshot non è il mio attuale, è fornito da memtest86 +

memtest

Come interpretare i numeri sullo schermo? L'ho lasciato funzionare per circa quattro ore e ora sono al passaggio 7.

Soprattutto, cosa fa

  • il numero del test
  • il conteggio degli errori
  • il conteggio degli errori ECC

indicare? Quali sono i valori sani per gli errori di memoria? A che punto dovrei considerare la sostituzione della memoria?


3
Vuoi continuare a utilizzare la memoria con errori?
Daniel Beck

4
Solo un consiglio :). Non ignorare gli errori nel memtest. Solo un piccolo errore nella RAM può rompere un sistema operativo completo e causare la perdita di dati.
Rufo El Magufo,

2
Generalmente se non vedi grandi aree rosse lampeggianti va tutto bene :-)
Col

5
Se gli errori sono limitati a un'area specifica in memoria e si esegue Linux, è possibile indicare al kernel di ignorare quelle aree come specificato qui: gquigs.blogspot.com/2009/01/bad-memory-howto.html Se si stai eseguendo Windows, gli errori non sono in un'area coerente, o ce ne sono troppi, dovresti ottenere nuova RAM.
user55325

4
Inoltre, se la memory stick inizia a guastarsi, è possibile che sempre più aree risultino difettose. La memoria è economica rispetto alle spese di danneggiamento ripetuto della caccia ai dati e problemi di crash del sistema.
Zds

Risposte:


82

TL; DR

Prima il numero più importante: il conteggio degli errori per la memoria sana dovrebbe essere 0 . Qualsiasi numero superiore a 0 può indicare settori danneggiati / difettosi.


Spiegazione dello schermo

     Memtest86+ v1.00      | Progress of the entire pass (test series)
CPU MODEL and clock speed  | Progress of individual, current test
Level 1 cache size & speed | Test type that is currently running
Level 2 cache size & speed | Part of the RAM (sector) that is being tested
RAM size and testing speed | Pattern that is being written to the sector
Information about the chipset that your mainboard uses
Information about your RAM set-up, clock speed, channel settings, etc.

WallTime   Cached  RsvdMem   MemMap   Cache  ECC  Test  Pass  Errors  ECC Errs
---------  ------  -------  --------  -----  ---  ----  ----  ------  --------
Elapsed    Amount  Amount    Mapping  on     on   Test  # of  # of    # of ECC
time       of RAM  of        used     or     or   type  pass  errors  errors
           cached  reserved           off    off        done  found   found
                   RAM, not
                   tested

Spiegazione dati / test

MemTest esegue una serie di test, scrive schemi specifici in ogni settore della memoria e li recupera. Se i dati recuperati differiscono dai dati originariamente memorizzati, MemTest registra un errore e aumenta il conteggio degli errori di uno. Gli errori sono generalmente segni di strisce RAM errate.

Poiché la memoria non è solo un blocco note che contiene informazioni ma ha funzioni avanzate come la memorizzazione nella cache, vengono eseguiti diversi test. Questo è ciò che Test #indica. MemTest esegue una serie di test diversi per verificare se si verificano errori.

Alcuni esempi di test (semplificati):

  • Settori di prova in questo ordine: A, B, C, D, E, F. (Seriale)
  • Settori di prova in questo ordine: A, C, E, B, D, F. (Trasloco)
  • Riempi tutti i settori con il motivo: aaaaaaaa
  • Riempi tutti i settori con un motivo casuale.

Descrizione più dettagliata di tutti i test da: https://www.memtest86.com/technical.htm#detailed

Test 0 [Test indirizzo, a piedi, senza cache]

Verifica tutti i bit di indirizzo in tutti i banchi di memoria utilizzando un modello di indirizzo di quelli a piedi.

Test 1 [Test indirizzo, indirizzo proprio, sequenziale]

Ogni indirizzo è scritto con il proprio indirizzo e quindi viene verificato la coerenza. In teoria, i test precedenti avrebbero dovuto rilevare eventuali problemi di indirizzamento della memoria. Questo test dovrebbe rilevare eventuali errori di indirizzamento che in qualche modo non sono stati rilevati in precedenza. Questo test viene eseguito in sequenza con ciascuna CPU disponibile.

Test 2 [Test indirizzo, indirizzo proprio, parallelo]

Come il test 1 ma il test viene eseguito in parallelo utilizzando tutte le CPU e utilizzando indirizzi sovrapposti.

Test 3 [Spostamento di inversioni, uno e zeri, Sequenziale]

Questo test utilizza l'algoritmo di inversione mobile con schemi di tutti e zeri. La cache è abilitata anche se interferisce in qualche modo con l'algoritmo di test. Con la cache abilitata questo test non richiede molto tempo e dovrebbe trovare rapidamente tutti gli errori "difficili" e alcuni errori più sottili. Questo test è solo un controllo rapido. Questo test viene eseguito in sequenza con ciascuna CPU disponibile.

Test 4 [Spostamento di inversioni, uno e zeri, parallelo]

Come il test 3 ma il test viene eseguito in parallelo utilizzando tutte le CPU.

Test 5 [Spostamento di inversioni, 8 bit pat]

Questo è lo stesso del test 4, ma utilizza uno schema a 8 bit di "walking" e zeri. Questo test rileverà meglio gli errori sottili nei chip di memoria "larghi".

Test 6 [Spostamento di inversioni, modello casuale]

Il test 6 utilizza lo stesso algoritmo del test 4 ma il modello di dati è un numero casuale ed è un complemento. Questo test è particolarmente efficace nella ricerca di errori sensibili ai dati difficili da rilevare. La sequenza numerica casuale è diversa ad ogni passaggio, quindi più passaggi aumentano l'efficacia.

Test 7 [Blocca mossa, 64 mosse]

Questo test sollecita la memoria usando le istruzioni di blocco dei movimenti (movsl) e si basa sul test burnBX di Robert Redelmeier. La memoria viene inizializzata con schemi di spostamento che vengono invertiti ogni 8 byte. Quindi i blocchi di memoria da 4 MB vengono spostati usando l'istruzione movsl. Una volta completate le mosse, i modelli di dati vengono controllati. Poiché i dati vengono controllati solo dopo il completamento degli spostamenti della memoria, non è possibile sapere dove si è verificato l'errore. Gli indirizzi riportati sono solo per dove è stato trovato il modello errato. Poiché gli spostamenti sono vincolati a un segmento di memoria di 8 MB, l'indirizzo in errore sarà sempre a meno di 8 MB dall'indirizzo segnalato. Gli errori di questo test non vengono utilizzati per calcolare i modelli BadRAM.

Test 8 [Spostamento di inversioni, pat a 32 bit]

Questa è una variante dell'algoritmo di inversione mobile che sposta il modello di dati lasciato di un bit per ciascun indirizzo successivo. La posizione del bit iniziale viene spostata a sinistra per ogni passaggio. Per utilizzare tutti i possibili schemi di dati sono necessari 32 passaggi. Questo test è abbastanza efficace nel rilevare errori sensibili ai dati ma il tempo di esecuzione è lungo.

Test 9 [Sequenza numerica casuale]

Questo test scrive una serie di numeri casuali in memoria. Ripristinando il seme per il numero casuale, è possibile creare la stessa sequenza di numeri per un riferimento. Il modello iniziale viene verificato, quindi integrato e ricontrollato al passaggio successivo. Tuttavia, diversamente dalle inversioni in movimento, la scrittura e il controllo del test possono essere eseguiti solo in avanti.

Test 10 [Modulo 20, uni e zeri]

L'uso dell'algoritmo Modulo-X dovrebbe scoprire errori che non vengono rilevati spostando le inversioni a causa della cache e dell'interferenza del buffer con l'algoritmo. Come per il test, solo uno e zero vengono utilizzati per i modelli di dati.

Test 11 [Bit fade test, 90 min, 2 pattern]

Il test di dissolvenza dei bit inizializza tutta la memoria con uno schema e quindi si ferma per 5 minuti. Quindi viene esaminata la memoria per verificare se sono stati modificati bit di memoria. Vengono utilizzati tutti e tutti i modelli zero.

Poiché i settori danneggiati possono talvolta funzionare e non funzionare un'altra volta, consiglio di lasciare a MemTest alcuni passaggi. Un passaggio completo è una serie di test completata che è stata superata. (Le precedenti serie di test 1-11) Più passaggi si ottengono senza errori, più accurata sarà la corsa MemTest. Di solito corro circa 5 passaggi per essere sicuro.

Il conteggio degli errori per la memoria integra deve essere 0. Qualsiasi numero superiore a 0 può indicare settori danneggiati / difettosi.

Il conteggio degli errori ECC deve essere preso in considerazione solo quando ECCè impostato su off. ECC è l'acronimo di Error-correcting memory memory ed è un meccanismo per rilevare e correggere bit errati in uno stato di memoria. Può essere paragonato leggermente ai controlli di parità effettuati su RAID o supporti ottici. Questa tecnologia è piuttosto costosa e probabilmente si troverà solo nelle impostazioni del server. Il conteggio ECC conta quanti errori sono stati corretti dal meccanismo ECC della memoria. L'ECC non dovrebbe essere invocato per RAM integra, quindi un conteggio degli errori ECC superiore a 0 può indicare anche memoria errata.


Spiegazione dell'errore

Esempio di Memtest che ha riscontrato errori. Mostra quale settore / indirizzo è fallito.

Schermata Memtest con errori

La prima colonna ( Tst ) mostra quale test ha avuto esito negativo, il numero corrisponde al numero di test dall'elenco già menzionato sopra. La seconda colonna ( Passa ) mostra se quel test è passato. Nel caso dell'esempio, il test 7 non ha passaggi.

La terza colonna ( Failing Address ) mostra esattamente quale parte della memoria presenta errori. Tale parte ha un indirizzo, molto simile a un indirizzo IP, che è unico per quella parte di archiviazione dei dati. Mostra quale indirizzo ha avuto esito negativo e quanto è grande il blocco di dati. (0,8 MB nell'esempio)

La quarta ( buona ) e quinta ( cattiva ) colonna mostrano i dati scritti e ciò che è stato recuperato rispettivamente. Entrambe le colonne dovrebbero essere uguali nella memoria non difettosa (ovviamente).

La sesta colonna ( Err-Bits ) mostra la posizione dei bit esatti che non funzionano.

La settima colonna ( Count ) mostra il numero di errori consecutivi con lo stesso indirizzo e bit non funzionanti.

Infine, l'ultima colonna sette ( Chan ) mostra il canale (se sul sistema sono utilizzati più canali) in cui si trova la striscia di memoria.


Se trova errori

Se MemTest rileva errori, il metodo migliore per determinare quale modulo è difettoso è trattato in questa domanda Super User e la sua risposta accettata:

Utilizzare il processo di eliminazione: rimuovere metà dei moduli ed eseguire nuovamente il test ...

Se non ci sono guasti, allora sai che questi due moduli sono buoni, quindi mettili da parte e testali di nuovo.

In caso di guasti, riduci di nuovo la metà (fino a uno dei quattro moduli di memoria ora), quindi riprova.

Ma, solo perché uno ha fallito un test, non dare per scontato che l'altro non fallisca (potresti avere due moduli di memoria difettosi) - dove hai rilevato un errore con due moduli di memoria, testa ciascuno di questi due separatamente in seguito .

Nota importante: con funzionalità come l'interleaving della memoria e schemi di numerazione dei socket dei moduli di memoria scadenti da parte di alcuni produttori di schede madri, può essere difficile sapere quale modulo è rappresentato da un determinato indirizzo.


Grazie per la spiegazione! Potresti rispondere come scoprire il modulo RAM esatto corrispondente a un errore? Ho l'indirizzo non riuscito uguale a 000c34e98dc - 3124.9MB. Perché una dimensione così grande? Ho moduli 2x1Gb e 2x2Gb nel mio PC. Come trovare quello che causa guasti?
Mikhail,

@Mikhail Vorrei fare riferimento a questa domanda e alla sua risposta accettata: superuser.com/questions/253875/…
BloodPhilia

0 errori non significano una RAM difettosa, ho avuto casi in cui una chiavetta RAM ha superato memtest con punteggio del 100% e solo sostituendola ho potuto risolvere un problema difficile.
Quel ragazzo brasiliano,

3
Il numero in MB dopo l'indirizzo esadecimale non è la dimensione dell'errore, è la posizione dell'errore in MB. Sono abbastanza sicuro che la dimensione di ogni errore sarà sempre una parola, dato che è la dimensione di ciò che sta scrivendo in memoria.
Jarryd,

6

Numero di errori

Quando si superano i test, se la memoria non riesce per uno qualsiasi dei test, aumenterà il numero di errori. Se ricordo bene, conta il numero di indirizzi che hanno fallito il test.

Numero di errori ECC

La memoria ECC è un tipo speciale di chip di memoria utilizzato per evitare che i dati vengano danneggiati. La tua ECC Errscolonna conta quanti problemi sono stati risolti da ECC.

(L'ECC è lento e costoso ed è essenzialmente per i sistemi mission-critical che non possono essere disturbati a scambiare la RAM.)

Numero del test

Memtest esegue diversi tipi di test sulla memoria, descritti nel sito Web Memtest86 . Proprio come una rapida traduzione in inglese semplice:

Test 0: Walking Ones Test indirizzo

Memtest scriverà 00000001nella prima posizione di memoria, 00000010nella successiva e così via, ripetendo questo schema ogni 8 byte. Quindi legge la memoria e si assicura che il valore non sia cambiato. ( Fonte )

Test 1 e 2: test indirizzo indirizzo proprio

Memtest scrive ogni posizione di memoria con il proprio indirizzo e verifica che il valore non sia cambiato.

Il test 1 è sequenziale e il test 2 è parallelo (ovvero utilizza la concorrenza).

Test 3 e 4 Test delle inversioni mobili

In sostanza, questo test carica 0s in memoria e quindi

  1. prende ogni posizione della memoria (a partire dalla prima / posizione più bassa),
  2. e scrive l'inverso del modello (credo che sia un NOT bit per bit, ma non ho trovato alcuna documentazione su questo).

L'obiettivo qui è quello di provare a testare ogni bit e i suoi bit adiacenti "ogni possibile combinazione di 0 e 1".

Il test 3 non usa la concorrenza, mentre il test 4 lo fa.

Test 5: Moving Inversions, Pat a 8 bit

Questo fa di nuovo il metodo delle inversioni in movimento, ma questa volta con i passi 1 dal test 0 in blocchi da 8 bit.

Test 6: Moving Inversions, Random Pattern

Memtest utilizza numeri casuali anziché tutti gli 0 o 1 che camminano.

Test 7: blocco mossa

Questo è divertente. Carica i modelli in memoria, li sposta in blocchi di 4 MB e li verifica.

Test 8: Moving Inversion, brevetto a 32 bit

Come il test 5, ma utilizza invece blocchi a 32 bit. Questo infatti carica ogni possibile valore a 32 bit in ogni posizione.

Test 9: numeri casuali

Questo carica numeri pseudo-casuali in memoria e verifica. La cosa bella del generatore di numeri pseudo-casuali è che non è molto casuale (se hai mai eseguito printf("%d", rand());un programma C senza seeding e ottenuto il 41 oh-so-random, capisci cosa intendo). Quindi verifica ripristinando la seminatrice di numeri casuali ed eseguendo nuovamente il generatore.

Test 10: Modulo-X

Ogni 20 posizioni, scrive un modello (tutti 0 o tutti 1) e scrive il complemento in tutte le altre posizioni, quindi verifica.

Test 11: Test di dissolvenza dei bit

Questo carica la RAM con tutti gli 1 (e di nuovo con tutti gli 0), attende 5 minuti e vede se uno dei valori cambia.


6

Numero test: il numero del test specifico su cui è attualmente in esecuzione memtest. Ce ne sono molti.

Conteggio degli errori: il numero di errori di memoria riscontrati

Errori ECC: numero di errori corretti da ECC. Il tuo chipset / memoria non ha ECC, quindi questo numero non ha importanza.

Se la tua memoria ha un numero di errori superiore a 0, vorrai sostituirla.

EDIT: i test sono i diversi schemi che memtest scrive in memoria. Scrive diversi modelli in memoria e li legge nuovamente per verificare la presenza di errori e utilizza diversi modelli per essere in grado di testare tutti gli stati di tutti i bit.

Il conteggio indica il numero di volte in cui il risultato letto nel memtest non corrisponde a quello che ha scritto in memoria, indicando che si è verificato un errore nel blocco di memoria in fase di test.

ECC è una tecnologia di correzione degli errori integrata nei chip di memoria per server e workstation. La maggior parte dei desktop non supporta i moduli di memoria con ECC integrato. Quasi tutti i server / workstation ne hanno il supporto e di solito lo richiedono. Il numero di errori corretti da ECC è il numero di errori che il chip ECC ha corretto con successo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.