Назад | Перейти на главную страницу

Как проверить, работает ли ОЗУ в режиме ECC?

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


Я построил свой первый ящик FreeNAS и хотел использовать ОЗУ ECC, так как хочу хранить важные данные. Поскольку у меня ограниченный бюджет, я хотел выбрать наиболее доступное решение, которое по-прежнему поддерживает ОЗУ ECC.

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

Я также купил комплект из двух модулей DIMM производства Kingston с номером модели «KVR21E15S8K2 / 8» (спецификация). Gigabyte опубликовала список протестированных модулей памяти, и мои модули, похоже, поддерживаются работающим ECC (список поддерживаемых модулей).

Поскольку у меня ограниченный бюджет, мне понадобился доступный процессор Skylake, поддерживающий ECC. В соответствии с Intel Celeron G3900 поддерживает ECC, поэтому я выбрал именно его.

После сборки компьютера я хотел убедиться, что моя система действительно работает с памятью ECC, и вошел в BIOS материнской платы. На разных сайтах я узнал, что на некоторых материнских платах есть специальный раздел который должен сказать, работает ли ECC, но на моей материнской плате этого нет. Я проверил все меню и не нашел аналогичного раздела.

Проведя еще несколько исследований и обнаружив Почта на обмене стеками Unix и Linux, который не решил мою проблему. Я пробовал последний memtest86+ который, насколько я могу судить, даже не показывает значение «ECC». Пробовал старую версию 4.20 что системы Puget использовали который показал "ECC: off". Однако, прочитав ранее упомянутый пост, я сомневаюсь, что он говорит правду (может быть, поэтому функция была удалена?). Обе версии также не считали правильную скорость и задержку DIMM, что усиливает мои сомнения в отношении 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 пользователь Душан использует оборудование серверного уровня (SuperMicro MB, Xeon CPU, Kingston DIMM) и имеет аналогичный результат с 128 Bits. Но написал, что сам не уверен, действительно ли это работает.

ОБНОВЛЕНИЕ 2: Как yagmoth555 упоминается в его ответ Отвечая на этот вопрос, похоже, что моя материнская плата поддерживает только ECC с процессорами Xeon, хотя я думал, что это примечание было реликтом из предыдущих руководств, которые были скопированы. Думаю, это означает, что мне нужно изучить процессор Xeon ..: - /


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

Из комментариев в Puget Systems также кажется, что ecc_check.c программа не работает на процессорах Xeon и Core i7 ..: - /

Я проверил memtest86+ на этот раз еще немного, и я вполне уверен, что он вообще не поддерживает DDR4 или чипсет C232, поскольку сообщает не только о неправильной скорости и тайминге, но и о DDR3 вместо установленной DDR4. Тем не менее, он отлично обнаружил процессор, но я все равно получил тот же конечный результат с обеими версиями memtest86+:

Версия 4.20 даже не определяет мой процессор должным образом ..

Мы очень ценим любые идеи о том, как еще я могу протестировать ECC.

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

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

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


Если кто-то наткнется на этот пост позже и потребует дальнейшей проверки и тестирования, он также предложит платную версию, которая поддерживает внедрение ошибок ECC для фактического тестирования возможностей ECC.

При использовании процессора Ryzen 7 ни один из упомянутых инструментов у меня тоже не работал. Однако с достаточно свежим ядром Linux инструменты в edac-utils, edac-ctl и edac-util могут считывать статус ECC, а также такие вещи, как количество исправленных ошибок. Журнал ядра также будет содержать строки с «EDAC» в dmesg, которые также должны содержать некоторую информацию. Эту функциональность можно дополнительно протестировать, разогнав ОЗУ и проверив сообщения об ошибках (если они достаточно высоки), что является почти полным доказательством того, что это действительно работает. Однако даже если эти инструменты сообщают об ошибках или не работают, это означает только то, что чтение информации о статусе ECC не поддерживается, похоже, не существует 100% надежного способа доказать, что ECC НЕ работает ...

Отредактировано: Плохая новость из руководства по материнской плате ...:


Я вижу, вы запускаете 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 TotalWidth 64 72

// Память без ECC DataWidth TotalWidth 64 64

Ответ для FreeBSD и Windows взят из там

Для не серверных материнских плат и наборов микросхем только определенные материнские платы AMD (например, ASRock) и любые наборы микросхем AMD поддерживают ECC.

Для Intel они делают ECC доступным только на серверных чипсетах Xeon. Intel отключает ECC на своих наборах микросхем для настольных ПК.