Czy korzystanie z ECC RAM w komputerze stacjonarnym ma pewną lub mierzalną zaletę?

21

Dużo kłopotam się z budowaniem stabilnych maszyn - tym, że absolutnie nie znoszę awarii, restartów, śmiesznych zachowań itp. - i dlatego korekcja błędów, czyli RAM ECC, wydaje się rozwiązać duży problem: błędy pamięci.

Ale czy to naprawdę działa? Czy istnieje wymierna korzyść, np. Mniejsza liczba wypadków lub inne zachowanie?

Oprócz kosztów, dlaczego nie użyć pamięci ECC do nowej wersji komputera? Dlaczego funkcja ECC jest głównie dostępna i obsługiwana przez maszyny klasy serwer / stacja robocza, ale nie w przypadku płyt głównych zorientowanych na konsumentów?

Chris W. Rea
źródło
1
Tak, ECC są naprawdę przydatne w przypadku miękkich błędów. Błąd miękki może spowodować awarię systemu, jeśli błąd dotyczy dostępu do pamięci. Doniesiono, że pojedynczy miękki błąd zatrzymał przemysł warty miliardy dolarów. Oto szczegółowe odniesienie do tego.
user984260

Odpowiedzi:

10

Od kilku lat korzystam z pamięci RAM ECC na serwerach. ECC naprawdę świeci, gdy intensywnie korzystasz z urządzenia, ponieważ „trwa ponad 12–16 godzin dziennie”. Małe serwery whitebox, które zbudowałem bez ECC, prędzej czy później rozwinęły „problemy” wymagające ponownego uruchomienia, ale maszyny ECC nigdy ich nie miały.

Więc moja odpowiedź brzmi: jeśli często używasz komputera , najprawdopodobniej tak. Jeśli korzystasz z komputera 24/7, powinien być koniecznością.

Istnieje kilka płyt głównych obsługujących ECC. Zazwyczaj są na „wyższym” końcu rzeczy, ale przy odrobinie badań można je znaleźć od różnych producentów. Jedyną inną kwestią jest pamiętać o włączeniu obsługi ECC w systemie BIOS.


Google ujawnia się w tej sprawie. Zobacz http://blogs.zdnet.com/storage/?p=638, jak to naprawdę wpływa na współczesne systemy.

Avery Payne
źródło
8
„Małe serwery whitebox, które zbudowałem bez ECC, prędzej czy później rozwinęły„ problemy ”wymagające ponownego uruchomienia komputera - to trochę apokryficzne / voodoo obliczenia według moich gustów.
Jeff Atwood
4
I myślisz, że nie jestem tego świadomy? Jak inaczej możesz wyjaśnić to samo oprogramowanie na tym samym sprzęcie, na którym występują dziwne problemy (poczta jest dostarczana nieprawidłowo), ale problemy same się rozwiązują po wymianie całej pamięci RAM? Pomysł też mi się nie podoba, ale biorąc pod uwagę, że był to jedyny ważny element do zmiany, a wraz z tym, że problemy znikają po aktualizacji ECC, cóż, trudno go zignorować ...
Avery Payne
1
Zapomniałem też wspomnieć - pamięć RAM została raz wymieniona przed aktualizacją ECC i problem nadal występował. Może to był zły ślad na mobo. Może to była wada projektowa na płycie. Wydaje mi się, że z perspektywy czasu mogło być wiele innych problemów, z których każdy wymagałby pojawienia się EE i zbadania zakresu, ale pod koniec dnia ECC sprawiło, że problem zniknął, choćby z innego powodu niż upewnij się, że dane pobrane z pamięci RAM były w 100% spójne. Jeff, zgadzam się, że to voodoo ... Nie podoba mi się to, ale jest.
Avery Payne,
1
@Jeff Atwood - cóż ... okazuje się, że to w końcu voodoo, w tym sensie, że nie widać tego, co dzieje się z komputerem ... patrz cs.toronto.edu/~bianca/papers/sigmetrics09.pdf
Avery Payne,
6

Myślę, że ECC jest warte użycia tylko wtedy, gdy wymaga tego serwer . Wikipedia :

Wykrywanie i korekcja błędów w systemach komputerowych wydaje się wchodzić i wychodzić z mody. Słynny Seymour Cray powiedział: „parytet jest dla rolników”, gdy zapytano go, dlaczego pominął to w CDC 6600. Podał parytet w CDC 7600 i rzekomo powiedział: „Nauczyłem się, że wielu rolników kupuje komputery”.

Nie mogę znaleźć ostatecznego źródła w Internecie, poza mglistymi twierdzeniami o jednym błędzie miesięcznie na gigabajt, co jest oczywiście absurdalne; serwery ulegałyby awariom w lewo i w prawo na całym świecie, gdyby było to zdalnie prawdą.

Niektóre najważniejsze informacje z wątku MetaFilter od rzeczywistych administratorów serwerów:

Myślę, że ECC to fajne rzeczy, ale miałem serwery zarówno z nim, jak i bez niego, i nigdy nie widziałem, aby jego obecność lub nieobecność nic nie robiły.

Rozumiem cel pamięci RAM ECC, ale nie o to chodzi. Mam na myśli, że nigdy nie zauważyłem żadnego problemu wynikającego z przerzucania bitu promienia kosmicznego. Nawet na osobistych serwerach obliczeniowych / kompilacyjnych z kilkuletnim czasem działania. Nie mówiąc o tym, że kawałki się nie przewracały, ale z pewnością nie miały znaczenia.

Z mojego doświadczenia, prowadząc farmy kilku tysięcy maszyn tu i tam, bardziej prawdopodobne jest, że Ext3 po cichu wymiotuje po całym tobie, niż masz problem, który można naprawić za pomocą ECC.

Osobiście uważam, że ECC jest trochę kulturalna, ale jest to rozsądna polisa ubezpieczeniowa na dużym, mocnym serwerze, o ile premia kosztowa nie jest zbyt wysoka.

Jeff Atwood
źródło
Zawieszanie w lewo i prawo? Nie sądzę, że byłoby tak źle. Interesujące ponowne: „zawieszanie się w lewo i prawo” ... Ale zastanów się: błędy bitów mogą wystąpić w nieprzydzielonej pamięci RAM (partie, na niewykorzystanych serwerach) lub w przydzielonej pamięci, która prawdopodobnie nie zostanie wykonana ani odwołana przed zwolnieniem i przeniesieniem (np. jeśli jest trochę błędu w martwym kodzie, czy to wydaje dźwięk?)
Chris W. Rea
Zastanawiam się również, czy Google ma coś do powiedzenia na temat błędów pamięci. Działają TON serwerów. Zastanawiam się, ile czasu przestoju serwera można by przypisać błędom pamięci RAM, a nie, powiedzmy, zasilaczom na fritz ...
Chris W. Rea,
3

Rozważaliśmy to w przypadku krytycznych systemów. Jednym problemem jest to, jak do cholery robisz wykrywanie błędów w oprogramowaniu, aby sprawdzić integralność pamięci, kiedy program użyty do uruchomienia kontroli integralności pamięci może sam być podatny na błędy pamięci? Zasadniczo nie możesz, a to utrudnia analizę trybu awaryjnego / łagodzenie awarii, więc ECC jest mechanizmem łagodzącym.

Jest to jeden z tych przypadków, gdy w razie problemów można faktycznie obwiniać promienie kosmiczne ;)

Jason S.
źródło
2

Rozważę RAM ECC do zastosowań „krytycznych”. Jeśli błąd serwera spowodowałby utratę znacznych kwot pieniędzy (lub zabicie ludzi, czy cokolwiek innego), zwróć się do RAM ECC. Zasadniczo, porównaj koszty pamięci RAM ECC z tym, co możesz stracić w przypadku błędu.

Ale bez względu na to, co zdecydujesz, zalecam uruchomienie MemTest86 + noc (lub wystarczająco długo, aby wykonać kilka przejść w całej przestrzeni adresowej). A jeśli potrafisz podkręcić ciepło (dosłownie), to da ci wyobrażenie o tym, jak działa twój baran, gdy system będzie gorący.

Miałem zupełnie nową pamięć RAM, która wyświetla błędy w MemTest. Miałem też z czasem „dobre” błędy rozwijania pamięci ram, które wykrył MemTest. To świetne narzędzie i jedna z pierwszych rzeczy, które uruchamiam na nowym systemie.

ijprest
źródło