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 ).
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+
.
Innym popularnym sposobem sprawdzenia, czy ECC działa, było wydanie dmidecode -t memory
polecenia i odczytanie Total Width
i Data Width
. Moje wyniki były 128 Bits
i 64 Bits
odpowiednio. 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 bits
tego 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 dmidecode
narzę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:
Z komentarzy w Puget Systems wynika również, że ecc_check.c
program 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+
:
Wersja 4.20 nawet nie wykrywa prawidłowo mojego procesora.
Wszelkie pomysły na to, jak jeszcze mogę przetestować ECC, są bardzo mile widziane.
Odpowiedzi:
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
.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.
źródło
Edytowano : Źle nowy z podręcznika płyty głównej ...:
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
Odpowiedź na FreeBSD i Windows wzięła się stamtąd
źródło
dmidecode -t memory
a mój wynik to 128 bitówTotal
i 64 bityData
dmidecode -t memory
: slexy.org/view/s2JimvAzl6Uż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 ...
źródło
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.
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.
źródło