Я обновил этот пост с тех пор, как заменил процессор, но суть моего вопроса (и, к сожалению, также и результатов) остается прежней.
Я создал свою первую коробку FreeNAS и хотел использовать оперативную память ECC, поскольку хочу хранить критические данные. Поскольку у меня ограниченный бюджет, я хотел выбрать самое доступное решение, которое по-прежнему поддерживало бы ECC RAM.
Проведя некоторые исследования, я обнаружил, что мне нужны материнская плата, память и процессор с поддержкой 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 пользователь Dusan использует аппаратное обеспечение серверного уровня (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.
источник
Отредактировано : плохая новость из руководства по материнской плате ...:
Я вижу, вы запускаете 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
Ответ от FreeBSD & Windows взял оттуда
источник
dmidecode -t memory
и мой результат был 128 битTotal
и 64 битData
dmidecode -t memory
: slexy.org/view/s2JimvAzl6При использовании процессора Ryzen 7 ни один из упомянутых инструментов также не работал для меня. Однако с достаточно недавним ядром Linux инструменты в edac-utils, edac-ctl и edac-util могут считывать статус ECC, а также такие вещи, как количество исправленных ошибок. Журнал ядра также будет содержать строки с «EDAC» в dmesg, которые также должны дать некоторую информацию. Эта функциональность может быть дополнительно протестирована путем разгона ОЗУ и проверки сообщений об ошибках (если они достаточно высоки), что является примерно таким же доказательством, насколько это возможно. Однако даже если эти инструменты сообщают об ошибках или не работают, это означает лишь то, что чтение информации о состоянии ECC не поддерживается, похоже, нет 100% надежного способа доказать, что ECC НЕ работает ...
источник
dmesg | grep EDAC
(вам может потребоваться запустить это с правами суперпользователя). Например, в системе на базе Ryzen с установленной и включенной в BIOS памятью ECC (если применимо) вы можете увидеть строку, которая выглядит следующим образомamd64: Node 0: DRAM ECC enabled.
Для несерверных материнских плат и наборов микросхем ECC поддерживают только определенные материнские платы AMD (например, ASRock) и любые чипсеты AMD.
Для Intel они делают ECC доступным только на серверных чипсетах Xeon. Intel отключает ECC на своих настольных чипсетах.
источник