Jednym z typowych scenariuszy awarii serwera jest zła pamięć DRAM, czasami nawet gdy używana jest pamięć ECC.
memtest86+
jest jednym z najbardziej przydatnych narzędzi do diagnozowania problemów z pamięcią DRAM. Gdy ładuje się na początku pamięci, zastanawiałem się, czy memtest86+
sprawdza część memtest86+
załadowanej pamięci .
Czy pamięć jest przydzielona do memtest86+
tak małej, że nie ma to znaczenia, czy też memtest86+
może brakować usterki pamięci DRAM, ponieważ nie może ona przetestować lokalizacji pamięci, w których się znajduje?
Odpowiedzi:
Oczywiście memtest86 + nie może przetestować obszaru pamięci, który obecnie zawiera kod wykonywalny memtest86 + (ale jeśli w tym regionie występują błędy pamięci, bardzo prawdopodobne jest, że sam test się zawiesi). Jednak memtest86 + jest w stanie przenieść swój własny kod na inny adres w czasie wykonywania, a za pomocą tej sztuczki jest w stanie przetestować całą pamięć, z której może korzystać oprogramowanie układowe (BIOS) - po prostu nie wszystkie naraz.
To przeniesienie kodu opisano w README.background w archiwum kodu źródłowego memtest86 + (plik jest nieco nieaktualny - np. Stwierdza, że adresy użyte dla kodu memtest86 + to 0x2000 i 0x200000, ale niski adres zdefiniowany w źródle to faktycznie 0x10000, a wysoki adres to 0x2000000 lub 0x300000 w zależności od ilości pamięci w urządzeniu).
Ale nawet przy tej sztuczce relokacyjnej memtest86 + nie jest w stanie przetestować całej pamięci z następujących powodów:
Zazwyczaj oprogramowanie układowe (BIOS) rezerwuje niektóre regiony pamięci RAM do własnego użytku (np. Tabele ACPI). Chociaż do tych regionów pamięci RAM można uzyskać dostęp przez procesor, zapisanie w nich czegokolwiek może spowodować nieprzewidziane zachowanie.
Część pamięci RAM jest używana w trybie zarządzania systemem i nie jest nawet dostępna z procesora poza uprzywilejowanym kodem SMM.
Zakres adresów pamięci RAM od 640K do 1M jest niedostępny z powodu dziwaczności starszego układu pamięci komputera (część tej pamięci RAM może być używana jako cień dla BIOS ROM i SMM, inne części mogą być całkowicie niedostępne).
źródło
Nie, memtest nie może przetestować własnej pamięci. Jest jednak tak mały (tylko niektóre KB), że nie ma większego znaczenia. EDYCJA: to stwierdzenie jest błędne, ponieważ, jak stwierdzono w wybranej odpowiedzi, memtest może dynamicznie przemieszczać się w celu przetestowania całej pamięci adresowanej przez użytkownika.
-
Teoretycznie nowoczesny procesor może w czasie rozruchu konfigurować część pamięci podręcznej jako pamięć programowalną, z bardzo małych programów (jako memtest) można uruchomić bez dotykania pamięci DRAM.
Jest to jednak funkcja specyficzna dla modelu (która wymaga obsługi systemu BIOS) i nie sądzę, że korzysta z niej memtest.
źródło
memtest
testuje również pamięć podręczną procesora. Więc jeślimemtest
zostanie załadowany do tej pamięci podręcznej, to nie można przetestować tej części pamięci podręcznej, co jest bardziej problematyczne, ponieważ jest znacznie mniejsze niż pamięć?