Wie interpretiere ich die Statistik eines Memtestlaufs?


63

Ich habe hier ein Notebook, von dem ich vermute, dass es ein fehlerhaftes Speichermodul hat. Ich habe daher Memtest86 + heruntergeladen und laufen lassen.

Beachten Sie, dass der Screenshot nicht mein eigentlicher Screenshot ist, sondern von memtest86 + bereitgestellt wird

memtest

Wie interpretiere ich die Zahlen auf dem Bildschirm? Ich habe es ungefähr vier Stunden laufen lassen und jetzt bin ich in Pass 7.

Vor allem, was macht

  • die Testnummer
  • die Anzahl der Fehler
  • die Anzahl der ECC-Fehler

zeigen? Was sind vernünftige Werte für Speicherfehler? Wann sollte ich in Betracht ziehen, den Speicher zu ersetzen?


3
Sie möchten weiterhin fehlerhaften Speicher verwenden?
Daniel Beck

4
Nur ein Rat :). Ignorieren Sie die Fehler in memtest nicht. Nur ein kleiner Fehler im RAM kann ein komplettes Betriebssystem beschädigen und zu Datenverlust führen.
Rufo El Magufo

2
Im Allgemeinen ist alles in Ordnung, wenn Sie keine großen blinkenden roten Bereiche sehen :-)
Col

5
Wenn die Fehler auf einen bestimmten Bereich im Speicher beschränkt sind und Sie Linux ausführen , können Sie den Kernel anweisen, die hier angegebenen Bereiche zu ignorieren: gquigs.blogspot.com/2009/01/bad-memory-howto.html Wenn Sie Wenn Windows ausgeführt wird, die Fehler nicht in einem konsistenten Bereich liegen oder wenn zu viele vorhanden sind, sollten Sie neuen RAM erhalten.
user55325

4
Wenn der Memory Stick ausfällt, werden möglicherweise immer mehr Bereiche fehlerhaft. Der Speicher ist billig im Vergleich zu den Kosten für die wiederholte Suche nach Datenkorruption und Systemabsturzproblemen.
Zds

Antworten:


82

TL; DR

Die wichtigste Zahl zuerst: Die Fehleranzahl für einen fehlerfreien Speicher sollte 0 sein . Jede Zahl über 0 kann auf beschädigte / fehlerhafte Sektoren hinweisen.


Bildschirmerklärung

     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

Daten / Testerklärung

MemTest führt eine Reihe von Tests durch, schreibt spezifische Muster in jeden Sektor des Speichers und ruft ihn ab. Wenn sich die abgerufenen Daten von den ursprünglich gespeicherten Daten unterscheiden, registriert MemTest einen Fehler und erhöht die Fehleranzahl um eins. Fehler sind normalerweise Anzeichen für fehlerhafte RAM-Streifen.

Da der Speicher nicht nur ein Notizblock ist, der Informationen enthält, sondern über erweiterte Funktionen wie das Zwischenspeichern verfügt, werden verschiedene Tests durchgeführt. Dies ist, was das Test #anzeigt. MemTest führt eine Reihe verschiedener Tests durch, um festzustellen, ob Fehler auftreten.

Einige (vereinfachte) Testbeispiele:

  • Testsektoren in dieser Reihenfolge: A, B, C, D, E, F. (seriell)
  • Testsektoren in dieser Reihenfolge: A, C, E, B, D, F. (in Bewegung)
  • Füllen Sie alle Sektoren mit Muster: aaaaaaa
  • Fülle alle Sektoren mit einem zufälligen Muster.

Eine ausführlichere Beschreibung aller Tests finden Sie unter: https://www.memtest86.com/technical.htm#detailed

Test 0 [Adresstest, Laufende, kein Cache]

Testet alle Adressbits in allen Speicherbänken unter Verwendung eines laufenden Adressmusters.

Test 1 [Adresstest, eigene Adresse, sequentiell]

Jede Adresse wird mit einer eigenen Adresse geschrieben und anschließend auf Konsistenz überprüft. In der Theorie sollten frühere Tests Probleme mit der Speicheradressierung festgestellt haben. Dieser Test sollte alle Adressierungsfehler erkennen, die zuvor nicht erkannt wurden. Dieser Test wird nacheinander mit jeder verfügbaren CPU durchgeführt.

Test 2 [Adresstest, eigene Adresse, parallel]

Wie Test 1, aber der Test wird parallel mit allen CPUs und überlappenden Adressen durchgeführt.

Test 3 [Inversionen, Einsen und Nullen verschieben, sequentiell]

Dieser Test verwendet den Moving-Inversions-Algorithmus mit Mustern aller Einsen und Nullen. Der Cache ist aktiviert, obwohl er den Testalgorithmus bis zu einem gewissen Grad beeinträchtigt. Bei aktiviertem Cache dauert dieser Test nicht lange und sollte schnell alle "harten" Fehler und einige subtilere Fehler finden. Dieser Test ist nur eine kurze Überprüfung. Dieser Test wird nacheinander mit jeder verfügbaren CPU durchgeführt.

Test 4 [Inversionen, Einsen und Nullen verschieben, parallel]

Wie Test 3, jedoch werden alle CPUs parallel getestet.

Test 5 [Inversionen verschieben, 8 Bit pat]

Dies ist dasselbe wie bei Test 4, verwendet jedoch ein 8 Bit breites Muster aus "laufenden" Einsen und Nullen. Dieser Test erkennt subtile Fehler in "breiten" Speicherchips besser.

Test 6 [Inversionen verschieben, Zufallsmuster]

Test 6 verwendet den gleichen Algorithmus wie Test 4, aber das Datenmuster ist eine Zufallszahl und dessen Komplement. Dieser Test ist besonders effektiv, wenn es darum geht, datenempfindliche Fehler nur schwer zu erkennen. Die Zufallszahlenfolge ist bei jedem Durchgang unterschiedlich, sodass mehrere Durchgänge die Effektivität erhöhen.

Test 7 [Blockzug, 64 Züge]

Dieser Test beansprucht das Gedächtnis mit Hilfe von Movsl-Befehlen (Block Move) und basiert auf dem BurnBX-Test von Robert Redelmeier. Der Speicher wird mit Schiebemustern initialisiert, die alle 8 Bytes invertiert werden. Dann werden 4-MB-Speicherblöcke mit dem Befehl movsl verschoben. Nach Abschluss der Verschiebungen werden die Datenmuster überprüft. Da die Daten erst nach dem Verschieben des Speichers geprüft werden, kann nicht festgestellt werden, wo der Fehler aufgetreten ist. Die angegebenen Adressen gelten nur für den Ort, an dem das fehlerhafte Muster gefunden wurde. Da die Verschiebungen auf ein Speichersegment von 8 MB beschränkt sind, ist die fehlerhafte Adresse immer weniger als 8 MB von der angegebenen Adresse entfernt. Fehler aus diesem Test werden nicht zur Berechnung von BadRAM-Mustern verwendet.

Test 8 [Inversionen verschieben, 32 Bit pat]

Dies ist eine Variation des Moving-Inversions-Algorithmus, der das Datenmuster für jede aufeinanderfolgende Adresse um ein Bit nach links verschiebt. Die Startbitposition wird bei jedem Durchgang nach links verschoben. Um alle möglichen Datenmuster zu nutzen, sind 32 Durchgänge erforderlich. Dieser Test ist sehr effektiv bei der Erkennung datenempfindlicher Fehler, aber die Ausführungszeit ist lang.

Test 9 [Zufallszahlenfolge]

Dieser Test schreibt eine Reihe von Zufallszahlen in den Speicher. Durch Zurücksetzen des Startwerts für die Zufallszahl kann dieselbe Zahlenfolge für eine Referenz erstellt werden. Das anfängliche Muster wird geprüft und dann beim nächsten Durchgang ergänzt und erneut geprüft. Im Gegensatz zu den sich bewegenden Inversionen kann der Test jedoch nur in Vorwärtsrichtung geschrieben und geprüft werden.

Test 10 [Modulo 20, Einsen & Nullen]

Die Verwendung des Modulo-X-Algorithmus sollte Fehler aufdecken, die nicht durch Verschieben von Inversionen aufgrund von Cache- und Pufferinterferenzen mit dem Algorithmus erkannt werden. Wie bei Test Eins werden für Datenmuster nur Einsen und Nullen verwendet.

Test 11 [Bit-Fade-Test, 90 Minuten, 2 Muster]

Der Bit-Fade-Test initialisiert den gesamten Speicher mit einem Muster und wartet dann 5 Minuten. Anschließend wird der Speicher überprüft, um festzustellen, ob sich Speicherbits geändert haben. Es werden alle Einsen und alle Nullmuster verwendet.

Da fehlerhafte Sektoren manchmal funktionieren und ein anderes Mal nicht funktionieren, empfehle ich, MemTest einige Durchgänge ausführen zu lassen. Ein voller Durchgang ist eine abgeschlossene Testreihe, die bestanden wurde. (Die obigen Testreihen 1-11) Je mehr Durchgänge Sie fehlerfrei erhalten, desto genauer ist Ihr MemTest-Lauf. Ich laufe normalerweise ungefähr 5 Pässe, um sicher zu sein.

Die Fehleranzahl für einen fehlerfreien Speicher sollte 0 sein. Jede Zahl über 0 kann auf beschädigte / fehlerhafte Sektoren hinweisen.

Die ECC-Fehleranzahl sollte nur berücksichtigt werden, wenn auf gesetzt ECCist off. ECC steht für Error-Correcting Code Memory und ist ein Mechanismus zum Erkennen und Korrigieren falscher Bits in einem Speicherzustand. Dies kann leicht mit den Paritätsprüfungen verglichen werden, die auf RAID- oder optischen Datenträgern durchgeführt wurden. Diese Technologie ist ziemlich teuer und wird wahrscheinlich nur in Server-Setups anzutreffen sein. Die ECC-Zählung zählt, wie viele Fehler durch den ECC-Mechanismus des Speichers korrigiert wurden. ECC sollte nicht für einen fehlerfreien RAM aufgerufen werden müssen, daher kann eine ECC-Fehleranzahl über 0 auch auf einen fehlerhaften Speicher hinweisen.


Fehlererklärung

Beispiel für Memtest, bei dem Fehler aufgetreten sind. Es zeigt, welcher Sektor / welche Adresse ausgefallen ist.

Memtest-Bildschirm mit Fehlern

Die erste Spalte ( Tst ) zeigt, welcher Test fehlgeschlagen ist, die Nummer entspricht der Testnummer aus der oben bereits genannten Liste. Die zweite Spalte ( Pass ) zeigt , wenn dieser Test wurde bestanden. Im Fall des Beispiels besteht Test 7 nicht.

Die dritte Spalte ( Failing Address ) zeigt genau, welcher Teil des Speichers fehlerhaft ist. Ein solcher Teil hat eine Adresse, ähnlich einer IP-Adresse, die für diesen Datenspeicher eindeutig ist. Es wird angezeigt, welche Adresse fehlgeschlagen ist und wie groß der Datenblock ist. (0,8 MB im Beispiel)

Die vierte ( gute ) und fünfte ( schlechte ) Spalte zeigen die geschriebenen und die abgerufenen Daten an. Beide Spalten sollten im nicht fehlerhaften Speicher (offensichtlich) gleich sein.

Die sechste Spalte ( Err-Bits ) zeigt die Position der exakten fehlgeschlagenen Bits.

Die siebte Spalte ( Count ) zeigt die Anzahl von aufeinanderfolgenden Fehlern mit derselben Adresse und andernfalls Bits.

Schließlich zeigt die letzte Spalte sieben ( Chan ) den Kanal (wenn mehrere Kanäle im System verwendet werden), in dem sich der Speicherstreifen befindet.


Wenn es Fehler findet

Wenn MemTest Fehler entdeckt, finden Sie in dieser Super-User-Frage und ihrer akzeptierten Antwort die beste Methode, um festzustellen, welches Modul fehlerhaft ist :

Verwenden Sie den Eliminierungsprozess - entfernen Sie die Hälfte der Module und führen Sie den Test erneut aus ...

Wenn es keine Fehler gibt, wissen Sie, dass diese beiden Module in Ordnung sind. Legen Sie sie beiseite und testen Sie sie erneut.

Wenn es Fehler gibt, reduzieren Sie diese erneut auf die Hälfte (jetzt auf eines von vier Speichermodulen) und testen Sie sie erneut.

Aber nur weil einer der Tests fehlgeschlagen ist, sollten Sie nicht davon ausgehen, dass der andere nicht fehlschlägt (Sie könnten zwei fehlerhafte Speichermodule haben). Wenn Sie einen Fehler mit zwei Speichermodulen festgestellt haben, testen Sie diese beiden anschließend einzeln .

Wichtiger Hinweis: Mit Funktionen wie Memory Interleaving und unzureichenden Nummerierungsschemata für Speichermodulsockel einiger Motherboard-Hersteller kann es schwierig sein, festzustellen, welches Modul durch eine bestimmte Adresse dargestellt wird.


Danke für die Erklärung! Könnten Sie bitte beantworten, wie Sie das genaue RAM-Modul herausfinden, das einem Fehler entspricht? Ich habe die Failing Address gleich 000c34e98dc - 3124.9MB. Warum so ein großer Brocken? Ich habe 2x1Gb- und 2x2Gb-Module in meinem PC. Wie finde ich denjenigen, der Fehler verursacht?
Mikhail

@Mikhail Ich möchte Sie auf diese Frage und die akzeptierte Antwort verweisen: superuser.com/questions/253875/...
BloodPhilia

0 Fehler bedeuten kein fehlerhaftes RAM. Ich hatte Fälle, in denen ein RAM-Stick den Mem-Test mit 100% Punktzahl bestanden hat, und nur durch Ersetzen konnte ich ein heikles Problem lösen.
Der Brasilianer

3
Die Zahl in MB nach der Hex-Adresse ist nicht die Größe des Fehlers, sondern die Fehlerstelle in MB. Ich bin mir ziemlich sicher, dass die Größe eines Fehlers immer ein Wort sein wird, da dies die Größe dessen ist, was in den Speicher geschrieben wird.
Jarryd

6

Anzahl der Fehler

Wenn beim Durchlaufen der Tests der Speicher für einen der Tests ausfällt, wird die Anzahl der Fehler erhöht. Wenn ich mich richtig erinnere, zählt es die Anzahl der Adressen, die den Test nicht bestanden haben.

Anzahl der ECC-Fehler

ECC-Speicher ist eine spezielle Art von Speicherchip, mit dem verhindert wird, dass Daten beschädigt werden. Ihre ECC ErrsSpalte zählt, wie viele Probleme von ECC behoben wurden.

(ECC ist langsam und teuer und hauptsächlich für unternehmenskritische Systeme gedacht, bei denen kein RAM-Austausch erforderlich ist.)

Testnummer

Memtest führt verschiedene Arten von Tests für Ihr Gedächtnis durch, die auf der Memtest86- Website beschrieben werden. Nur so eine kurze, einfache englische Übersetzung:

Test 0: Gehender Adressentest

Memtest schreibt 00000001in den ersten Speicherort, 00000010in den nächsten usw. und wiederholt dieses Muster alle 8 Bytes. Dann liest es den Speicher und stellt sicher, dass sich der Wert nicht ändert. ( Quelle )

Test 1 & 2: Eigene Adresse Adressentest

Memtest schreibt jeden Speicherort mit einer eigenen Adresse und überprüft, ob sich der Wert nicht geändert hat.

Test 1 ist sequentiell und Test 2 ist parallel (dh verwendet Parallelität).

Test 3 & 4 Moving Inversions Test

Im Wesentlichen lädt dieser Test 0s in den Speicher und dann

  1. Nimmt jeden Speicherort (beginnend mit dem ersten / niedrigsten Speicherort),
  2. und schreibt die Umkehrung des Musters (ich würde glauben, es ist ein bitweises NICHT, aber ich konnte keine Dokumentation dazu finden).

Das Ziel hier ist, zu versuchen, jedes Bit und seine benachbarten Bits "jede mögliche Kombination von 0en und 1en" zu testen.

Test 3 verwendet keine Parallelität, während Test 4 dies tut.

Test 5: Inversionen verschieben, 8-Bit-Pat

Dies führt die Moving-Inversions-Methode erneut aus, diesmal jedoch mit der laufenden 1 von Test 0 in 8-Bit-Blöcken.

Test 6: Inversionen verschieben, Zufallsmuster

Memtest verwendet Zufallszahlen anstelle aller Nullen oder laufenden Einsen.

Test 7: Blockbewegung

Das macht Spaß. Es lädt Muster in den Speicher, verschiebt sie in Blöcken von 4 MB und überprüft sie.

Test 8: Moving Inversion, 32-Bit-Pat

Entspricht Test 5, verwendet jedoch stattdessen 32-Bit-Blöcke. Dieser lädt tatsächlich jeden möglichen 32-Bit-Wert an jedem Ort.

Test 9: Zufallszahlen

Dieser lädt Pseudo-Zufallszahlen in den Speicher und überprüft. Das Coole am Pseudozufallszahlengenerator ist, dass er nicht sehr zufällig ist (wenn Sie jemals printf("%d", rand());ein C-Programm ohne Seeding ausgeführt und die ach so zufällige Zahl 41 erhalten haben, wissen Sie, was ich meine). Dies wird überprüft, indem die Zufallszahlensämaschine zurückgesetzt und der Generator erneut gestartet wird.

Test 10: Modulo-X

Alle 20 Stellen schreibt es ein Muster (alle 0en oder alle 1en) und schreibt das Komplement an allen anderen Stellen und überprüft es dann.

Test 11: Bit-Fade-Test

Dieser lädt den RAM mit allen Einsen (und erneut mit allen Nullen), wartet 5 Minuten und prüft, ob sich einer der Werte ändert.


6

Testnummer: Die Nummer des spezifischen Tests, den memtest derzeit ausführt. Da sind viele von denen.

Anzahl der Fehler: Die Anzahl der aufgetretenen Speicherfehler

ECC-Fehler: Anzahl der vom ECC korrigierten Fehler. Ihr Chipsatz / Speicher verfügt nicht über ECC, daher spielt diese Nummer keine Rolle.

Wenn Ihr Speicher eine Anzahl von Fehlern über 0 aufweist, möchten Sie ihn ersetzen.

BEARBEITEN: Die Tests sind die verschiedenen Muster, die memtest in den Speicher schreibt. Es schreibt verschiedene Muster in den Speicher und liest sie zurück, um auf Fehler zu prüfen, und es verwendet verschiedene Muster, um in der Lage zu sein, alle Zustände aller Bits zu testen.

Die Anzahl gibt an, wie oft das in memtest zurückgelesene Ergebnis nicht dem entspricht, was es in den Speicher geschrieben hat. Dies bedeutet, dass ein Fehler im getesteten Speicherblock vorliegt.

ECC ist eine in Speicherchips für Server und Workstations integrierte Fehlerkorrekturtechnologie. Die meisten Dekstops unterstützen keine Speichermodule mit integriertem ECC. Fast alle Server / Workstations unterstützen dies und erfordern dies normalerweise. Die Anzahl der von ECC korrigierten Fehler entspricht der Anzahl der Fehler, die der ECC-Chip erfolgreich behoben hat.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.