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

11

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


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

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

comfreak
источник
Ну, если бы ваша машина не поддерживала ECC, она бы не запустилась :)
Сироты
1
@ Orphans Прежде, чем я нашел материнскую плату, я увидел несколько более дешевых, которые требовали «поддержки ECC» на других чипсетах, таких как Z170 и т. Д. Оказывается, это просто означает, что плата может работать (не сбой) с памятью ECC, но эффективно не будет ее использовать. Так что мне интересно, если мой случай такой?
Comfreak
Если ECC обычно вы видите это в разделе POST. Можете ли вы нажать ESC во время загрузки, чтобы увидеть экран Boit?
yagmoth555
Попробуйте также memtest от memtest86.com
цитрин
@ comfreak Хм, вы правы.
Сироты

Ответы:

4

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

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

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

результат memtest86


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

comfreak
источник
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 Memory DataWidth TotalWidth 64 72

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

Ответ от FreeBSD & Windows взял оттуда

yagmoth555
источник
Это в основном то, что я уже пробовал, dmidecode -t memoryи мой результат был 128 бит Totalи 64 битData
comfreak
@comfreak dmidecode -t 17 вернуть что?
yagmoth555
Я в основном получаю такой же вывод, как dmidecode -t memory: slexy.org/view/s2JimvAzl6
comfreak
@ comfreak хорошо, 128 не имеет смысла для меня. обычно это 64 не ecc или 64b + 8b (72) для ECC (зеркальное отображение 64 + 64?). но при поиске 'dmidecode total width 128' перечислите много постов freenas ... похоже, многие пытаются обнаружить ECC с помощью скрипта ./ecc_check.py python
yagmoth555
Я предположил, что это может быть связано с двухканальным, но я даже получаю тот же результат, когда я помещаю два модуля в два отдельных канала, то есть двухканальный не должен работать.
Comfreak
3

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

user415177
источник
1
Вы пробовали Passmarks memtest86? (Тот, который я упомянул в своем ответе)
comfreak
Несмотря на то, что ваш вывод может отличаться, для проверки информации EDAC в dmesg вы можете запустить dmesg | grep EDAC(вам может потребоваться запустить это с правами суперпользователя). Например, в системе на базе Ryzen с установленной и включенной в BIOS памятью ECC (если применимо) вы можете увидеть строку, которая выглядит следующим образомamd64: Node 0: DRAM ECC enabled.
Джо,
0

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

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

д хи
источник
Это может быть правдой, но это не отвечает на реальный вопрос, который был задан здесь.
Comfreak
Это относится к операционному вопросу, поскольку он работает на чипе Intel не Xeon. Ответ он не может проверить.
д хи
Последнее предложение вашего ответа неверно, так как, например, набор микросхем C232 является «настольным набором микросхем» и поддерживает ECC. Кроме того, вопрос более общий, например, как проверить, например, если вы не знаете, поддерживается ли он или нет.
Comfreak