Я обновил этот пост, так как заменил процессор, но суть моего вопроса (и, к сожалению, тоже) такая же.
Я построил свой первый ящик 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 на своих наборах микросхем для настольных ПК.