Как определить, работает ли RAM ECC?

Как определить, работает ли RAM ECC?

Я планирую приобрести ECC RAM для замены не-ECC RAM, которая сейчас установлена ​​на моей материнской плате Asus M5A97 Pro (чипсет AMD 970, процессор FX-6100).

После установки оперативной памяти,как узнать, правильно ли работает функция ECC оперативной памяти?

Я подумал о том dmidecode --type memory, какие в настоящее время печатаются среди прочего для каждой планки ОЗУ:

Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits

(Во-первых, я ожидаю, что при использовании 1 бита ECC на байт ширина данных останется 64 бита, но общая ширина чтения составит 72 бита.)

Можно ли это использовать для определения работоспособности ECC? Или dmidecode слишком низкого уровня для этого? Что еще я могу использовать (кроме ожидания и просмотра ошибки ECC в журналах, которая будет указывать на работоспособность, но не на то, что она не работает)?

Обновлять:Позже я подумал о edac-utils. Установив их, я получаю Not enabling Memory Error Detection and Correction since EDAC_DRIVER is not set. Это дало мне edac-utilи edac-ctlисполняемые файлы. Можно ли использовать один из них для этой цели?

решение1

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

В моем случаеmemtest86+ 4.20не удалось убедить его в том, что он имеет дело с ECC RAM; даже если я настроил его на ECC On, он все равно сообщал ECC: Disabledо линии IMC. Я еще не пробовал с более новой версией. Однако (возможно, после установки edac-utils, к сожалению, я сделал и то, и другое по сути одновременно), Linux сообщает в журналах загрузки (перемежающихся некоторыми другими записями):

[    4.867198] EDAC MC: Ver: 2.1.0
...
[    4.874374] MCE: In-kernel MCE decoding enabled.
[    4.875414] AMD64 EDAC driver v3.4.0
[    4.875438] EDAC amd64: DRAM ECC enabled.
...
[    4.875542] EDAC amd64: CS0: Unbuffered DDR3 RAM
[    4.875545] EDAC amd64: CS1: Unbuffered DDR3 RAM
[    4.875546] EDAC amd64: CS2: Unbuffered DDR3 RAM
[    4.875548] EDAC amd64: CS3: Unbuffered DDR3 RAM

что является довольно хорошим показателем. Ручное выполнение /etc/init.d/edac restartне создает подобных записей в журнале, и, просматривая старый журнал за несколько перезагрузок назад, я вижу:

[   13.886688] EDAC MC: Ver: 2.1.0
[   13.890389] MCE: In-kernel MCE decoding enabled.
[   13.891082] AMD64 EDAC driver v3.4.0
[   13.891107] EDAC amd64: DRAM ECC disabled.
[   13.891116] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load.
[   13.891117]  Either enable ECC checking or force module loading by setting 'ecc_enable_override'.
[   13.891118]  (Note that use of the override may cause unknown side effects.)

dmidecode --type memoryтакже дает два довольно сильных признака: свойство «типа исправления ошибок» массива физической памяти (которое, однако, по какой-то причинепоказал то же самое на не-ECC RAM, так что это может быть связано с поддержкой материнской платы, а не с возможностями памяти),

Handle 0x0026, DMI type 16, 23 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: Multi-bit ECC

и общая ширина каждого устройства памяти и ширина данных соответственно (дополнительные биты используются для ECC):

Handle 0x0028, DMI type 17, 34 bytes
Memory Device
    Array Handle: 0x0026
    Error Information Handle: Not Provided
    Total Width: 72 bits
    Data Width: 64 bits

решение2

Есть очень простой и эффективный способ сделать это, при условии, что у вас есть консольный доступ к вашему серверу/ПК и вы можете перезагрузить его:memtest86+

Этот отличный инструмент быстро покажет вам, включена ли память ECC. Я также считаю, что он выполнит проверку ECC при выполнении фактического тестирования.

Вот (немного устаревший) скриншот: введите описание изображения здесь

решение3

Попробую обобщить свой опыт работы с реальным железом. У меня нет плат M5A, но есть две платы M4A с чипсетами AMD.

АМ3

Некоторые моменты:

  • Материнские платы M4A8xx официально поддерживают ECC.
  • AMD Phenom II и Athlon II поддерживают ECC. (другие могут работать)
  • Чипы AMD Phenom поддерживают отчеты об ошибках через модуль "edac_mce_amd". Этот модуль работает без ECC и сообщает об ошибках кэша или других ошибках, связанных с ЦП.
  • RAM ECC поддерживается через «amd64_edac».

На данный момент плата M4A работает с ECC RAM уже более 2 лет, и я не видел сообщений об ошибках. Некоторые платы, похоже, не сообщают об исправимых ошибках (CE). Я советую вам установить нестабильные тайминги без ECC и включить его позже, чтобы проверить его работу. Вы можете использовать Memtest86, но это программное обеспечение не будет сообщать о событиях ECC, оно просто покажет, что RAM теперь стабильна с включенным ECC. Само ядро ​​показывает только сообщения без подробностей, независимо от того, какие параметры ядра передаются параметру загрузки 'mce':

[Hardware error] Machine Check Exception

Они также не учитываются в попытках 'edac' в /sys. Тестирование показало, что это будут исправленные ошибки, но я не знаю, как это будет обрабатывать неисправимые ошибки.

Эти платы ASUS также, похоже, не сообщают о каких-либо ошибках, связанных с ошибками ЦП. Впервые я узнал об этой функции, когда поврежденная плата ASRock начала блокироваться, но из-за UE сообщила об этом ОС. На совместимых платах они отображаются в сообщениях ядра в следующем формате:

[Hardware error] Machine Check Excpetion logged
[Hardware error] ERROR DETAILS, ETC, ETC

Они не регистрируются в журнале MCE, но обрабатываются ядром (модулем edac_mce_amd). Это полезно, поскольку неисправленные ошибки могут быть отброшены, если они находятся в буфере, или с помощью другой опции, например, завершения процесса, которая может повредить его память.

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

АМ4

На платах ASUS AM4 предыдущие версии работали как AM3, но отчеты об ошибках памяти работали правильно - можно было прочитать /sys и получить количество ошибок или посмотреть журнал ядра. В текущем BIOS необходимо установить RAS Daemon и использовать команду 'ras-mc-ctl' для чтения количества ошибок.

Я не тестировал отчеты об ошибках ЦП и их обработку на этих платформах.

Связанный контент