Як перевірити, чи працює ОЗУ в режимі ECC?


11

Я оновив цю посаду, оскільки замінив процесор, але ядро ​​мого питання (і, на жаль, результати) однакові.


Я створив своє перше поле FreeNAS і хотів використовувати ECC RAM, оскільки я хочу зберігати важливі дані. Оскільки я закладаю бюджет, я хотів запропонувати найбільш доступне рішення, яке все ще підтримуватиме оперативну пам’ять ECC.

Провівши деякі дослідження, я виявив, що мені потрібна материнська плата, пам'ять і процесор, що підтримує ECC. Моя вибірна плата - це "Gigabyte X150M-Pro ECC", який має чіпсет C232, DDR4 та розетку LGA1151.

Я також придбав комплект із двох DIMM, виготовлених Kingston, з номером моделі "KVR21E15S8K2 / 8" ( специфікація ). Gigabyte опублікував список перевірених модулів пам'яті, і мої модулі, здається, підтримуються робочим ECC ( список підтримуваних модулів ).

Мітка RAM

Оскільки я переживаю бюджет, мені потрібен був доступний процесор Skylake, який підтримує ECC. За інформацією Intel, Celeron G3900 підтримує ECC, тому я пішов з цим.

Побудувавши комп’ютер, я хотів переконатися, що моя система справді працює з пам’яттю ECC та ввійшов у BIOS материнської плати. З різних веб-сайтів я дізнався, що на деяких материнських платах є спеціальний розділ, у якому слід вказати, чи працює ECC, але мої материнські плати, схоже, цього не мають. Я перевірив усі меню і не зміг знайти подібний розділ.

Провівши ще кілька досліджень і знайшов пост на Unix & Linux stackexchange, який не вирішив мою проблему. Я спробував останню, memtest86+яка з того, що я могла сказати, навіть не показує значення "ECC". Я спробував старішу версію 4.20, яку використовували системи Puget, які показали "ECC: вимкнено". Однак, прочитавши раніше згаданий пост, я сумніваюся, що він говорить правду (можливо, саме тому функцію було видалено?). Обидві версії також не прочитали правильну швидкість та затримку DIMM, що додає до моїх сумнівів щодо memtest86+.

memtest86 + скріншот

Ще одним популярним способом з’ясувати, чи працює ECC, було видати dmidecode -t memoryкоманду та прочитати Total Widthі Data Width. Мої результати були 128 Bitsі 64 Bitsвідповідно. В одній частині виводу було показано подробиці про масив пам'яті, який мав пари ключ-значення Error Correction Type: Single-bit ECC.

Я очікував 72 bitsна Total Width, тому я подумав, що це може бути пов'язано з двоканальним і перемістив модулі пам'яті на два сусідні слоти, які повинні перешкоджати двоканальному, але результат був таким самим. Ось повний вихід з dmidecode -t memory.

Я навіть випробував цікаву програму C, яку опублікували Puget-системи, але результат виявив 0, що не було підтримки ECC.

Тепер я починаю сумніватися, що дані на власному веб-сайті Intel є правильними, а мій процесор насправді не підтримує ECC. І пам'ять, і материнська плата спеціально брендовані "ECC", тому я можу їх виключити.

Чи можливо, що версія BIOS потребує оновлення (на даний момент її немає), щоб включити ECC або ECC насправді вже працює, і я просто не зміг його перевірити? Або мій вибір процесора неправильний, якщо я хочу запустити пам’ять ECC і веб-сайт Intel неправильний / оманливий?

Якщо мій процесор виявиться неправильним вибором, що буде наступним найкращим вибором для "бюджетного процесора ECC"?

ОНОВЛЕННЯ: Я побачив нові вказівки на те, що моя система насправді працює з увімкненою системою ECC, і dmidecodeінструмент відображає дивні дані. На форумі FreeNAS користувач Dusan використовує апаратне забезпечення серверного рівня (SuperMicro MB, процесор Xeon, Kingston DIMM) і має аналогічний вихід 128 Bits. Але він написав, що не впевнений у собі, якщо це насправді працює.

ОНОВЛЕННЯ 2: Як згадував yagmoth555 у своїй відповіді на це запитання, схоже, моя материнська плата підтримує лише ECC з процесорами Xeon, хоча я вважав, що ця нота є реліктом попередніх посібників, які були скопійовані. Я думаю, це означає, що мені потрібно заглянути в процесор Xeon ..: - /


ОНОВЛЕННЯ 3: Я купив Xeon E3-1220v5, який, звичайно, підтримує ECC і повинен відповідати вимогам посібника. Я знову запустив усі тести, щоб перевірити функціональність ECC, і результати в основному однакові:

ecc_check та dmidecode

З коментарів у Puget Systems, схоже, що ecc_check.cпрограма не працює на процесорах Xeon та Core i7 ..: - /

memtest86+Цього разу я перевірив ще кілька разів, і я впевнений, що він взагалі не підтримує чіпсет DDR4 або C232, оскільки він повідомляє не тільки про неправильну швидкість і терміни, але і про DDR3 замість встановленого DDR4. Однак він виявив процесор просто чудово, але я все-таки отримав однаковий кінцевий результат з обома версіями memtest86+:

memtest86 + v5.01

Версія 4.20 навіть не належним чином визначає мій процесор ..

memtest86 + v4.20

Будь-які вдячності щодо будь-яких ідей, як я можу протестувати на ECC


Ну, якби машина не підтримувала ECC, вона не запустилася б :)
Сиріт

1
@Orphans Перш ніж я знайшов материнську плату, я побачив деякі дешевші, які заявляли про "підтримку ECC" на інших чіпсетах, таких як Z170 і т.д. Тож мені цікаво, чи моя справа така?
comfreak

Якщо ECC зазвичай ви бачите це в розділі POST. Чи можете ви натиснути ESC під час завантаження, щоб побачити екран завантаження?
yagmoth555

Спробуйте також memtest з memtest86.com
citrin

@comfreak hmm, ти маєш рацію.
Сиріт

Відповіді:


4

Сьогодні я дізнався, що є комерційна версія від memtest86(без +) від PassMark , що пропонує безкоштовну версію теж , які вдячно включені ECC-чека.

Крім того, він також підтримує DDR4 та всі інші функції memtest86+.

Мій результат здається позитивним щодо підтримки ECC, тому я називаю це виконаним, хоча я сподівався отримати такий же результат із "традиційними" інструментами, як dmidecode.

memtest86 результат


Якщо хтось натрапляє на цю посаду в більш пізній час і потребує подальшої перевірки та тестів, він також пропонує платну версію, яка підтримує введення помилок ECC для фактичного тестування можливостей ECC.


3

Відредаговано : Погане нове у посібнику з материнської плати ...:

введіть тут опис зображення


Я бачу, ти запускаєш BSD / linux, запускаєш його всередині ОС; (Доступно для FreeNAS )

dmidecode -t 17

У вас повинен бути такий вихід, як:

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

Загальна ширина: 72 біта є частиною ви шукаєте.

У системі Windows можна запустити

wmic MEMORYCHIP get DataWidth,TotalWidth

// ECC Пам'ять даних Ширина Загальна ширина 64 72

// Пам'ять, що не стосується ECC, Ширина даних 64, 64

Відповідь на FreeBSD & Windows взяли звідти


Це в основному те, що я вже пробував, dmidecode -t memoryі мій результат був 128 біт Totalі 64 бітData
comfreak

@comfreak dmidecode -t 17 повернути що?
yagmoth555

Я в основному отримую той самий результат, як dmidecode -t memory: slexy.org/view/s2JimvAzl6
comfreak

@comfreak добре, 128 не мають для мене сенсу. зазвичай це 64 non ecc або 64b + 8b (72) для ECC (дзеркало ?? 64 + 64?). але шукаючи "dmidecode загальною шириною 128" в списку безлічі публікацій freenas ... багато, схоже, намагаються виявити ECC за допомогою ./ecc_check.py python script
yagmoth555

Моє припущення було, що це може бути пов'язано з двоканальним, але я навіть отримую той самий результат, коли розміщую два модулі на два окремих канали, тобто двоканальний не повинен працювати.
comfreak

3

Використовуючи процесор Ryzen 7, жоден із згаданих інструментів не працював і для мене. Однак, маючи досить недавнє ядро ​​Linux, інструменти в edac-utils, edac-ctl та edac-util можуть зчитувати стан ECC, а також такі речі, як кількість виправлених помилок. Журнал ядра також буде містити рядки з "EDAC" у dmesg, які також повинні містити певну інформацію. Цю функціональність можна додатково перевірити за допомогою розгону оперативної пам’яті та перевірки повідомлень про помилки (якщо йде достатньо висока), тобто приблизно стільки ж доказів, скільки ви можете зрозуміти, що вона справді працює. Однак, навіть якщо ці інструменти повідомляють про помилки або не працюють, це означає лише, що читання інформації про стан ECC не підтримується, мабуть, немає 100% надійного способу довести, що ECC НЕ працює ...


1
Ви спробували Passmarks memtest86? (Я згадував у своїй відповіді)
старт

Хоча вихід може змінюватись, для перевірки інформації про EDAC у dmesg можна запустити dmesg | grep EDAC(можливо, потрібно буде запустити це з привілеями root). Наприклад, у системі на основі Ryzen із встановленою та увімкненою пам’яттю ECC у BIOS (якщо це можливо), ви можете побачити рядок, який виглядає такamd64: Node 0: DRAM ECC enabled.
Joe

0

Для несерверних материнських плат і наборів мікросхем ECC пропонують лише конкретні материнські плати AMD (наприклад, ASRock) та будь-які чіпсети AMD.

Для Intel вони пропонують доступ ECC лише на чіпсетах сервера Xeon. Intel відключає ECC на своїх настільних чіпсетах.


Це може бути правдою, але це не відповідає дійсному питанню, яке тут задавали.
comfreak

Це стосується питання op, оскільки він працює без чіпа Intel Xeon. Відповідь він не може перевірити.
d hee

Просто останнє речення Вашої відповіді є невірним, оскільки, наприклад, чіпсет C232 є "набором чіпсетів" і підтримує ECC. Крім цього, питання більш загальне, як у тому, як перевірити, як, якщо ви не знаєте, підтримується чи ні.
comfreak
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.