Jak interpretować statystyki przebiegu memtest?

63

Mam tutaj notebooka, który, jak podejrzewam, ma wadliwy moduł pamięci. Dlatego pobrałem Memtest86 + i pozwoliłem mu działać.

Zwróć uwagę, że zrzut ekranu nie jest moim rzeczywistym, ale zapewnia go memtest86 +

memtest

Jak interpretować liczby na ekranie? Pozwoliłem mu działać przez około cztery godziny, a teraz mam zaliczenie 7.

Zwłaszcza co robi

  • numer testu
  • liczba błędów
  • liczba błędów ECC

wskazać? Jakie są rozsądne wartości błędów pamięci? W którym momencie powinienem rozważyć wymianę pamięci?

slhck
źródło
3
Chcesz nadal używać pamięci z błędami?
Daniel Beck
4
Tylko rada :). Nie ignoruj ​​błędów w memtest. Tylko jeden mały błąd w pamięci RAM może uszkodzić cały system operacyjny i spowodować utratę danych.
Rufo El Magufo
2
Ogólnie rzecz biorąc, jeśli nie widzisz dużych migających czerwonych obszarów, wszystko jest dobrze :-)
Kol.
5
Jeśli błędy są ograniczone do jednego określonego obszaru w pamięci i używasz Linuksa, możesz powiedzieć jądru, aby zignorowało te obszary, jak określono tutaj: gquigs.blogspot.com/2009/01/bad-memory-howto.html Jeśli 'Windows działa, błędy nie są w spójnym obszarze lub jest ich zbyt wiele, powinieneś dostać nową pamięć RAM.
user55325,
4
Ponadto, jeśli karta pamięci zacznie ulegać awarii, możliwe jest, że coraz więcej obszarów ulegnie uszkodzeniu. Pamięć jest tania w porównaniu z kosztem ciągłego polowania na uszkodzenia danych i problemy z awariami systemu.
Zds,

Odpowiedzi:

82

TL; DR

Najważniejsza liczba na początku: liczba błędów dla zdrowej pamięci powinna wynosić 0 . Każda liczba powyżej 0 może wskazywać na uszkodzone / wadliwe sektory.


Objaśnienie ekranu

     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

Wyjaśnienie danych / testu

MemTest przeprowadza szereg testów, zapisuje określone wzorce w każdym sektorze pamięci i pobiera je. Jeśli odzyskane dane różnią się od danych, które zostały pierwotnie zapisane, MemTest rejestruje błąd i zwiększa liczbę błędów o jeden. Błędy są zwykle oznakami złych pasków pamięci RAM.

Ponieważ pamięć nie jest tylko notatnikiem zawierającym informacje, ale ma zaawansowane funkcje, takie jak buforowanie, wykonuje się kilka różnych testów. To właśnie Test #wskazuje. MemTest przeprowadza szereg różnych testów, aby sprawdzić, czy wystąpią błędy.

Niektóre (uproszczone) przykłady testów:

  • Sektory testowe w następującej kolejności: A, B, C, D, E, F. (szeregowy)
  • Sektory testowe w następującej kolejności: A, C, E, B, D, F. (Przeprowadzka)
  • Wypełnij wszystkie sektory wzorem: aaaaaaaa
  • Wypełnij wszystkie sektory losowym wzorem.

Bardziej szczegółowy opis wszystkich testów: https://www.memtest86.com/technical.htm#detailed

Test 0 [Test adresu, chodzenie, brak pamięci podręcznej]

Testuje wszystkie bity adresu we wszystkich bankach pamięci przy użyciu wzorcowego adresu chodzącego.

Test 1 [Test adresu, własny adres, Sekwencyjny]

Każdy adres jest zapisywany z własnym adresem, a następnie sprawdzany pod kątem spójności. Teoretycznie poprzednie testy powinny wykryć wszelkie problemy z pamięcią. Ten test powinien wykryć wszelkie błędy adresowania, które w jakiś sposób nie zostały wcześniej wykryte. Ten test jest wykonywany kolejno dla każdego dostępnego procesora.

Test 2 [Test adresu, własny adres, Równoległy]

To samo co test 1, ale testowanie odbywa się równolegle przy użyciu wszystkich procesorów i nakładających się adresów.

Test 3 [Przenoszenie inwersji, zer i jedynek, sekwencyjne]

W tym teście zastosowano algorytm odwracania ruchu z wzorcami wszystkich zer i jedynek. Pamięć podręczna jest włączona, nawet jeśli w pewnym stopniu zakłóca działanie algorytmu testowego. Po włączeniu pamięci podręcznej ten test nie trwa długo i powinien szybko znaleźć wszystkie „twarde” błędy oraz kilka bardziej subtelnych błędów. Ten test to tylko szybkie sprawdzenie. Ten test jest wykonywany kolejno dla każdego dostępnego procesora.

Test 4 [Przenoszenie inwersji, zer i jedynek, Równolegle]

To samo co test 3, ale testowanie odbywa się równolegle przy użyciu wszystkich procesorów.

Test 5 [Moving inversions, 8 bit pat]

Jest to to samo co test 4, ale wykorzystuje 8-bitowy wzór „chodzących” zer i jedynek. Ten test lepiej wykryje subtelne błędy w „szerokich” układach pamięci.

Test 6 [Ruchome inwersje, losowy wzór]

Test 6 wykorzystuje ten sam algorytm co test 4, ale wzorzec danych jest liczbą losową i jest uzupełnieniem. Ten test jest szczególnie skuteczny w wykrywaniu trudnych do wykrycia błędów wrażliwych na dane. Sekwencja liczb losowych jest różna dla każdego przejścia, więc wiele przebiegów zwiększa efektywność.

Test 7 [ruch bloku, 64 ruchy]

Ten test akcentuje pamięć za pomocą instrukcji ruchu bloku (movsl) i jest oparty na teście burnBX Roberta Redelmeiera. Pamięć jest inicjowana za pomocą wzorców przesuwu, które są odwracane co 8 bajtów. Następnie bloki pamięci o wielkości 4 MB są przenoszone za pomocą instrukcji movsl. Po zakończeniu przenoszenia wzorce danych są sprawdzane. Ponieważ dane są sprawdzane dopiero po zakończeniu przenoszenia pamięci, nie można ustalić, gdzie wystąpił błąd. Podane adresy dotyczą tylko miejsca, w którym znaleziono zły wzór. Ponieważ ruchy są ograniczone do segmentu pamięci o wielkości 8 MB, adres powodujący awarię zawsze będzie znajdował się w odległości mniejszej niż 8 MB od adresu zgłaszanego. Błędy z tego testu nie są wykorzystywane do obliczania wzorców BadRAM.

Test 8 [Moving inversions, 32 bit pat]

Jest to odmiana algorytmu ruchomych inwersji, który przesuwa wzór danych w lewo o jeden bit dla każdego kolejnego adresu. Początkowa pozycja bitu jest przesuwana w lewo dla każdego przejścia. Aby wykorzystać wszystkie możliwe wzorce danych, wymagane są 32 przebiegi. Ten test jest dość skuteczny w wykrywaniu błędów wrażliwych na dane, ale czas wykonania jest długi.

Test 9 [Losowa sekwencja numerów]

Ten test zapisuje w pamięci szereg liczb losowych. Przez zresetowanie nasion dla liczby losowej można utworzyć tę samą sekwencję liczb dla odniesienia. Początkowy wzór jest sprawdzany, a następnie uzupełniany i sprawdzany ponownie przy następnym przejściu. Jednak, w przeciwieństwie do ruchomych inwersji, pisanie i sprawdzanie testu można wykonać tylko w kierunku do przodu.

Test 10 [Modulo 20, jedynki i zera]

Użycie algorytmu Modulo-X powinno wykryć błędy, które nie są wykrywane przez przenoszenie inwersji z powodu buforowania i buforowania zakłóceń w algorytmie. Podobnie jak w przypadku testu, do wzorców danych używane są tylko jedynki i zera.

Test 11 [Test zanikania bitów, 90 min, 2 wzory]

Test wygaszania bitów inicjuje całą pamięć wzorcem, a następnie śpi przez 5 minut. Następnie pamięć jest sprawdzana, aby sprawdzić, czy jakieś bity pamięci się zmieniły. Używane są wszystkie wzorce zerowe.

Ponieważ złe sektory mogą czasami działać, a nie działać innym razem, zalecam, aby MemTest uruchomił kilka przejść. Pełne zaliczenie to ukończona seria testów, która przeszła pomyślnie. (Powyższa seria testów 1-11) Im więcej przejść bez błędów, tym dokładniejszy przebieg MemTest. Zwykle biegam około 5 podań, aby się upewnić.

Liczba błędów dla zdrowej pamięci powinna wynosić 0. Każda liczba powyżej 0 może wskazywać na uszkodzone / wadliwe sektory.

Liczbę błędów ECC należy brać pod uwagę tylko wtedy, gdy ECCjest ustawiona na off. ECC oznacza korekcję błędów w kodzie pamięci i jest to mechanizm wykrywania i korygowania błędnych bitów w stanie pamięci. Można to nieco porównać do kontroli parzystości wykonanej na macierzy RAID lub nośniku optycznym. Ta technologia jest dość droga i prawdopodobnie będzie występować tylko w konfiguracjach serwerów. Liczba ECC liczy, ile błędów zostało poprawionych przez mechanizm ECC pamięci. ECC nie powinno być wywoływane dla zdrowej pamięci RAM, więc liczba błędów ECC powyżej 0 może również wskazywać na złą pamięć.


Wyjaśnienie błędu

Przykład Memtestu, który napotkał błędy. Pokazuje, który sektor / adres uległ awarii.

Ekran Memtest z błędami

Pierwsza kolumna ( Tst ) pokazuje, który test się nie powiódł, liczba odpowiada numerowi testu z listy już wspomnianej powyżej. Druga kolumna ( zaliczenie ) pokazuje, czy ten test został zaliczony. W przypadku przykładu test 7 nie ma zaliczeń.

Trzecia kolumna ( Niepowodzenie adresu ) pokazuje dokładnie, która część pamięci zawiera błędy. Taka część ma adres, podobnie jak adres IP, który jest unikalny dla tego miejsca przechowywania danych. Pokazuje, który adres się nie powiódł i jak duża jest porcja danych. (0,8 MB w przykładzie)

Czwarta ( dobra ) i piąta ( zła ) kolumna pokazują odpowiednio zapisane i odzyskane dane. Obie kolumny powinny być równe w nie uszkodzonej pamięci (oczywiście).

Szósta kolumna ( Err-Bits ) pokazuje pozycję dokładnie tych bitów, które zawodzą.

Siódma kolumna ( liczba ) pokazuje liczbę kolejnych błędów o tym samym adresie i błędnych bitach.

Wreszcie ostatnia kolumna siódma ( Chan ) pokazuje kanał (jeśli w systemie jest używanych wiele kanałów), w którym znajduje się pasek pamięci.


Jeśli znajdzie błędy

Jeśli MemTest odkrywa żadnych błędów, najlepszą metodę określania, który moduł jest wadliwy jest pokryta w tym Super pytanie użytkownika i jego zaakceptowanej odpowiedzi:

Użyj procesu eliminacji - usuń połowę modułów i ponownie uruchom test ...

Jeśli nie ma żadnych awarii, to wiesz, że te dwa moduły są dobre, więc odłóż je na bok i przetestuj ponownie.

Jeśli wystąpią awarie, zmniejsz ponownie do połowy (teraz do jednego z czterech modułów pamięci), a następnie ponownie przetestuj.

Ale tylko dlatego, że jeden z nich nie przeszedł testu, nie zakładaj, że drugi nie zawiedzie (możesz mieć dwa niesprawne moduły pamięci) - jeśli wykryłeś awarię z dwoma modułami pamięci, przetestuj każdy z nich osobno .

Ważna uwaga: w przypadku funkcji takich jak przeplatanie pamięci i słabe schematy numeracji gniazd modułów pamięci przez niektórych producentów płyt głównych, może być trudno ustalić, który moduł jest reprezentowany przez dany adres.

BloodPhilia
źródło
Dziękuję za wyjaśnienie! Czy mógłbyś odpowiedzieć, jak znaleźć dokładny moduł pamięci RAM odpowiadający błędowi? Mam adres awaryjny równy 000c34e98dc - 3124.9MB. Dlaczego tak duży kawałek? Mam moduły 2x1Gb i 2x2Gb w moim komputerze. Jak znaleźć ten, który powoduje awarie?
Michaił
@Mikhail Chciałbym odesłać cię do tego pytania i jego zaakceptowanej odpowiedzi: superuser.com/questions/253875/…
BloodPhilia
0 błędów nie oznacza wadliwej pamięci RAM, miałem przypadki, w których pamięć RAM przeszła memtest ze 100% wynikiem i tylko przez jej zastąpienie mogłem rozwiązać trudny problem.
Ten Brazylijczyk
3
Liczba w MB po adresie szesnastkowym nie jest rozmiarem błędu, jest to lokalizacja błędu w MB. Jestem prawie pewien, że rozmiar jednego błędu zawsze będzie jednym słowem, ponieważ jest to rozmiar tego, co zapisuje do pamięci.
Jarryd
6

Liczba błędów

Przechodząc przez testy, jeśli pamięć nie powiedzie się w przypadku któregokolwiek z testów, zwiększy liczbę błędów. Jeśli dobrze pamiętam, zlicza liczbę adresów, które nie przeszły testu.

Liczba błędów ECC

Pamięć ECC to specjalny rodzaj układu pamięci, który służy do ochrony danych przed uszkodzeniem. Twoja ECC Errskolumna liczy, ile problemów zostało naprawionych przez ECC.

(ECC jest powolny i drogi i zasadniczo dotyczy systemów o znaczeniu krytycznym, których nie można zawracać sobie głowy wymianą pamięci RAM.)

Numer testu

Memtest wykonuje różnego rodzaju testy pamięci, które są opisane na stronie Memtest86 . Podobnie jak szybkie zwykłe tłumaczenie na angielski:

Test 0: Test adresu dla pieszych

Memtest zapisze 00000001w pierwszej lokalizacji 00000010w pamięci, w następnej itd., Powtarzając ten wzorzec co 8 bajtów. Następnie odczytuje pamięć i upewnia się, że wartość się nie zmieniła. ( Źródło )

Testy 1 i 2: Test adresu własnego

Memtest zapisuje każdą lokalizację w pamięci własnym adresem i sprawdza, czy wartość się nie zmieniła.

Test 1 jest sekwencyjny, a test 2 jest równoległy (tj. Wykorzystuje współbieżność).

Test 3 i 4 Test inwersji ruchomych

Zasadniczo ten test ładuje 0 do pamięci, a następnie

  1. pobiera każdą lokalizację pamięci (zaczynając od pierwszej / najniższej lokalizacji),
  2. i zapisuje odwrotność wzorca (sądzę, że NIE jest to trochę logiczne, ale nie mogłem znaleźć żadnej dokumentacji na ten temat).

Celem jest tutaj próba przetestowania każdego bitu i jego sąsiadujących bitów „każdej możliwej kombinacji zer i jedynek”.

Test 3 nie używa współbieżności, podczas gdy test 4 używa.

Test 5: Moving Inversions, 8-bit Pat

Ponownie wykonuje to metodę ruchomych inwersji, ale tym razem z chodzeniem 1s z testu 0 w blokach 8-bitowych.

Test 6: Poruszające się inwersje, losowy wzór

Memtest używa liczb losowych zamiast wszystkich 0 lub chodzących 1.

Test 7: Blokuj ruch

To jest fajne. Ładuje wzorce do pamięci, przesuwa je w blokach po 4 MB i weryfikuje je.

Test 8: Moving Inversion, 32-bit Pat

To samo co test 5, ale zamiast tego używa 32-bitowych bloków. Ten w rzeczywistości ładuje każdą możliwą 32-bitową wartość w każdej lokalizacji.

Test 9: Liczby losowe

Ta ładuje pseudolosowe liczby do pamięci i weryfikuje. Fajną rzeczą w generatorze liczb pseudolosowych jest to, że nie jest on zbyt losowy (jeśli kiedykolwiek uruchomiłeś printf("%d", rand());program w C bez seedowania i zdobyłeś tak-losowo 41, wiesz o co mi chodzi). Sprawdza to przez zresetowanie siewnika liczb losowych i ponowne uruchomienie generatora.

Test 10: Modulo-X

Co 20 lokalizacji zapisuje wzór (wszystkie 0 lub wszystkie 1) i zapisuje dopełnienie we wszystkich innych lokalizacjach, a następnie weryfikuje.

Test 11: Test zanikania bitów

Ten ładuje do pamięci RAM wszystkie jedynki (i ponownie wszystkie jedynki), czeka 5 minut i sprawdza, czy którakolwiek z wartości się zmieni.

digitxp
źródło
6

Numer testu: numer konkretnego testu aktualnie wykonywanego przez memtest. Jest ich dużo.

Liczba błędów: liczba napotkanych błędów pamięci

Błędy ECC: Liczba błędów poprawionych przez ECC. Twój mikroukład / pamięć nie ma ECC, więc ten numer nie ma znaczenia.

Jeśli w twojej pamięci jest jakaś liczba błędów powyżej 0, będziesz chciał ją wymienić.

EDYCJA: Testy to różne wzorce, które memtest zapisuje w pamięci. Zapisuje różne wzorce w pamięci i odczytuje je z powrotem w celu sprawdzenia błędów, a także używa różnych wzorców, aby móc przetestować wszystkie stany wszystkich bitów.

Liczba wskazuje, ile razy wynik ponownie wczytany do memtestu nie pasował do tego, co zapisał w pamięci, co oznacza, że ​​wystąpił błąd w badanej części pamięci.

ECC to technologia korekcji błędów wbudowana w układy pamięci dla serwerów i stacji roboczych. Większość dekstopów nie obsługuje modułów pamięci z wbudowanym ECC. Prawie wszystkie serwery / stacje robocze obsługują to i zwykle tego wymagają. Liczba błędów skorygowanych przez ECC to liczba błędów, które układ ECC z powodzeniem naprawił.

Eli
źródło