Jak sprawdzić, czy pamięć RAM działa w trybie ECC?

11

Zaktualizowałem ten post, odkąd wymieniłem procesor, ale rdzeń mojego pytania (i niestety również wyniki) są takie same.


Zbudowałem swój pierwszy moduł FreeNAS i chciałem użyć ECC RAM, ponieważ chcę przechowywać krytyczne dane. Ponieważ mam ograniczony budżet, chciałem wybrać najtańsze rozwiązanie, które nadal obsługiwałoby pamięć RAM ECC.

Po przeprowadzeniu badań odkryłem, że potrzebuję płyty głównej, pamięci i procesora obsługującego ECC. Moja płyta główna to „Gigabyte X150M-Pro ECC” z chipsetem C232, DDR4 i gniazdem LGA1151.

Kupiłem także zestaw dwóch modułów DIMM firmy Kingston o numerze modelu „KVR21E15S8K2 / 8” ( arkusz specyfikacji ). Gigabyte opublikowało listę przetestowanych modułów pamięci, a moje moduły wydają się być obsługiwane przez działające ECC ( lista obsługiwanych modułów ).

Etykieta RAM

Ponieważ mam ograniczony budżet, potrzebowałem niedrogiego procesora Skylake, który obsługuje ECC. Według Intela Celeron G3900 obsługuje ECC, więc poszedłem z tym.

Po zbudowaniu komputera chciałem sprawdzić, czy mój system rzeczywiście działa z pamięcią ECC i wszedł w BIOS płyty głównej. Z różnych stron internetowych dowiedziałem się, że niektóre płyty główne mają specjalną sekcję, która powinna informować, czy ECC działa, ale wydaje się, że moja płyta główna tego nie ma. Sprawdziłem wszystkie menu i nie mogłem znaleźć podobnej sekcji.

Po przeprowadzeniu dalszych badań i znalezieniu posta na wymianie stosów Uniksa i Linuksa, który nie rozwiązał mojego problemu. Próbowałem najnowszych, memtest86+które z tego, co mogłem powiedzieć, nawet nie pokazują wartości „ECC”. Próbowałem starszej wersji 4.20 używanej przez systemy Puget, która pokazywała „ECC: wyłączony”. Jednak po przeczytaniu wcześniej wspomnianego postu wątpię, czy mówi prawdę (może dlatego funkcja została usunięta?). Obie wersje również nie odczytały poprawnej prędkości i opóźnienia DIMM, co zwiększa moje wątpliwości memtest86+.

zrzut ekranu memtest86 +

Innym popularnym sposobem sprawdzenia, czy ECC działa, było wydanie dmidecode -t memorypolecenia i odczytanie Total Widthi Data Width. Moje wyniki były 128 Bitsi 64 Bitsodpowiednio. Jedna część danych wyjściowych pokazała szczegóły dotyczące tablicy pamięci, która miała parę klucz-wartość Error Correction Type: Single-bit ECC.

Spodziewałem się 72 bitstego Total Width, więc pomyślałem, że może to być związane z podwójnym kanałem i przeniosłem moduły pamięci do dwóch sąsiednich gniazd, co powinno zapobiec dwukanałowemu, ale wynik był taki sam. Oto pełna moc od dmidecode -t memory.

Wypróbowałem nawet ciekawy program C opublikowany przez systemy Puget, ale wynik był taki 0, że nie ma wsparcia dla ECC.

Teraz zaczynam wątpić, czy dane na własnej stronie Intela są prawidłowe, a mój procesor nie obsługuje ECC. Zarówno pamięć, jak i płyta główna są specjalnie oznaczone „ECC”, więc mogę je wykluczyć.

Czy to możliwe, że wersja systemu BIOS wymaga aktualizacji (obecnie nie ma żadnej), aby włączyć ECC, czy ECC faktycznie już działa, a ja po prostu nie mogłem tego zweryfikować? Czy mój wybór procesora jest zły, jeśli chcę uruchomić pamięć ECC, a strona internetowa Intela jest błędna / wprowadza w błąd?

Jeśli mój procesor okaże się złym wyborem, jaki byłby następny najlepszy wybór dla „budżetowego procesora ECC”?

AKTUALIZACJA: Widziałem pewne nowe sygnały, że mój system może faktycznie działać z włączoną funkcją ECC, a dmidecodenarzędzie po prostu zgłasza dziwne dane. Na forum FreeNAS użytkownik Dusan używa sprzętu klasy serwerowej (SuperMicro MB, Xeon CPU, Kingston DIMM) i ma podobne wyniki 128 Bits. Ale napisał, że sam nie jest pewien, czy to rzeczywiście działa.

AKTUALIZACJA 2: Jak wspomniał yagmoth555 w swojej odpowiedzi na to pytanie, wydaje się, że moja płyta główna obsługuje ECC tylko z procesorami Xeon, chociaż myślałem, że ta notatka jest reliktem z poprzednich instrukcji, które zostały skopiowane. To chyba oznacza, że ​​muszę zajrzeć do procesora Xeon ..: - /


AKTUALIZACJA 3: Kupiłem teraz Xeon E3-1220v5, który oczywiście obsługuje ECC i powinien spełniać wymagania zawarte w instrukcji. Ponownie uruchomiłem wszystkie testy, aby sprawdzić funkcjonalność ECC, a wyniki są w zasadzie identyczne:

ecc_check i dmidecode

Z komentarzy w Puget Systems wynika również, że ecc_check.cprogram nie działa na procesorach Xeon i Core i7 ..: - /

memtest86+Tym razem sprawdziłem trochę więcej i jestem całkiem pewien, że w ogóle nie obsługuje DDR4 ani chipsetu C232, ponieważ zgłasza nie tylko niewłaściwą prędkość i taktowanie, ale także DDR3 zamiast zainstalowanej pamięci DDR4. Wykrył jednak procesor w porządku, ale nadal mam ten sam efekt końcowy w przypadku obu wersji memtest86+:

memtest86 + v5.01

Wersja 4.20 nawet nie wykrywa prawidłowo mojego procesora.

memtest86 + v4.20

Wszelkie pomysły na to, jak jeszcze mogę przetestować ECC, są bardzo mile widziane.

comfreak
źródło
Cóż, jeśli twój komputer nie obsługiwał ECC, nie zacząłby się :)
Orphans
1
@Orphans Zanim znalazłem płytę główną, widziałem te tańsze, które twierdziły „wsparcie ECC” na innych chipsetach, takich jak Z170 itp. Okazuje się, że oznacza to po prostu, że płyta może działać (nie ulega awarii) z pamięcią ECC, ale skutecznie jej nie używa. Zastanawiam się więc, czy moja sprawa jest taka?
comfreak
Jeśli ECC zwykle widzisz to w sekcji POST. Czy możesz nacisnąć ESC podczas rozruchu, aby wyświetlić ekran Boit?
yagmoth555
Spróbuj także memtest z memtest86.com
citrin,
@comfreak hmm, masz rację.
Sieroty

Odpowiedzi:

4

Dziś dowiedziałem się, że nie jest komercyjna wersja z memtest86(bez +) z PassMark który oferuje darmowy wersja za które na szczęście zawarte ECC-kontroli.

Ponadto obsługuje również DDR4 i wszystkie inne funkcje memtest86+.

Mój wynik wydaje się być pozytywny dla wsparcia ECC, więc nazwałbym to zrobionym, mimo że miałem nadzieję uzyskać ten sam wynik dzięki „tradycyjnym” narzędziom takim jak dmidecode.

wynik memtest86


Jeśli ktoś natknie się na ten post w późniejszym czasie i potrzebuje dalszej weryfikacji i testów, oferuje również płatną wersję, która obsługuje wstrzykiwanie błędów ECC do faktycznego testowania możliwości ECC.

comfreak
źródło
3

Edytowano : Źle nowy z podręcznika płyty głównej ...:

wprowadź opis zdjęcia tutaj


Widzę, że używasz BSD / linux, uruchom to w systemie operacyjnym; (Dostępne dla FreeNAS )

dmidecode -t 17

Powinieneś mieć wyjście takie jak:

dmidecode 2.12 SMBIOS 2.5 present.

Handle 0x1100, DMI type 17, 28 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 2048 MB Form Factor: DIMM Set: 1 Locator: DIMM1 Bank Locator: Not Specified Type: DDR2 Type Detail: Synchronous Speed: 667 MHz Manufacturer: AD00000000000000 Serial Number: 00002062 Asset Tag: 010839 Part Number: HYMP125P72CP8-Y5 Rank: 2

Szerokość całkowita: 72 bitów jest częścią szukasz.

W systemie Windows możesz uruchomić

wmic MEMORYCHIP get DataWidth,TotalWidth

// Pamięć ECC DataWidth TotalWidth 64 72

// Data Memory Non-ECC TotalWidth 64 64

Odpowiedź na FreeBSD i Windows wzięła się stamtąd

yagmoth555
źródło
Zasadniczo już tego próbowałem, dmidecode -t memorya mój wynik to 128 bitów Totali 64 bityData
comfreak
@comfreak dmidecode -t 17 co zwrócić?
yagmoth555
Zasadniczo otrzymuję takie same dane wyjściowe, jak dmidecode -t memory: slexy.org/view/s2JimvAzl6
comfreak
@comfreak dobrze, 128 nie ma dla mnie sensu. zazwyczaj jest to 64 non ecc lub 64b + 8b (72) dla ECC (mirror ?? 64 + 64?). ale wyszukiwanie „dmidecode total width 128” wyświetla listę wielu postów freenas ... wydaje się, że wiele próbuje wykryć ECC za pomocą skryptu python
./ecc_check.py
Moje założenie było takie, że może być związane z dwukanałowym, ale nawet ten sam wynik uzyskuję, gdy umieszczę dwa moduły w dwóch osobnych kanałach, co oznacza, że ​​podwójny kanał nie powinien działać.
comfreak
3

Używając procesora Ryzen 7, żadne z wymienionych narzędzi też nie działało dla mnie. Jednak przy wystarczająco niedawnym jądrze Linuksa narzędzia edac-utils, edac-ctl i edac-util mogą odczytać status ECC, a także liczbę poprawionych błędów. Dziennik jądra będzie również zawierał wiersze z „EDAC” w dmesg, które również powinny zawierać pewne informacje. Funkcjonalność tę można dodatkowo przetestować, podkręcając pamięć RAM i sprawdzając, czy zgłaszane są błędy (jeśli są wystarczająco wysokie), czyli tyle, ile można uzyskać, że naprawdę działa. Jednak nawet jeśli narzędzia te zgłaszają błędy lub nie działają, oznacza to tylko, że odczyt informacji o statusie ECC nie jest obsługiwany, wydaje się, że nie ma 100% wiarygodnego sposobu na udowodnienie, że ECC NIE działa ...

użytkownik415177
źródło
1
Czy próbowałeś Passmarks memtest86? (Ten, o którym wspomniałem w mojej odpowiedzi)
comfreak
Chociaż dane wyjściowe mogą się różnić, aby sprawdzić informacje EDAC w dmesg, możesz uruchomić dmesg | grep EDAC(być może będziesz musiał uruchomić to z uprawnieniami roota). Na przykład, w systemie opartym na Ryzen z pamięcią ECC zainstalowana i włączona w BIOS (jeśli dotyczy), można zobaczyć linię, która wygląda jakamd64: Node 0: DRAM ECC enabled.
Joe
0

W przypadku płyt głównych i mikroukładów innych niż serwerowe, tylko określone płyty główne AMD (takie jak ASRock) i wszelkie chipsety AMD oferują ECC.

W przypadku Intela udostępniają ECC tylko na chipsetach serwerowych Xeon. Intel wyłącza ECC na swoich komputerach stacjonarnych.

d hee
źródło
To może być prawda, ale nie odpowiada na pytanie, które tu zadano.
comfreak
Odnosi się to do pytania operacyjnego, ponieważ korzysta on z procesora Intel innego niż Xeon. Odpowiedź jest taka, że ​​nie może sprawdzić.
d hee
Tylko ostatnie zdanie twojej odpowiedzi jest niepoprawne, ponieważ na przykład chipset C232 jest „chipsetem stacjonarnym” i obsługuje ECC. Poza tym pytanie jest bardziej ogólne, jak w przypadku sprawdzania, na przykład jeśli nie wiesz, czy jest obsługiwane, czy nie.
comfreak