Для памяти без ECC у меня есть хорошее представление о том, как выглядит сбой; некоторые случайные вещи начинают идти не так (например, контрольные суммы PNG не проходят проверку один раз, а затем не в следующий раз) и тому подобное. Но я относительно новичок в ECC RAM. Чего ожидать при выходе из строя ОЗУ ECC? Я знаю, что если есть однобитный перевернутый код, он должен просто автоматически исправить это, но как мне узнать, есть ли более серьезные проблемы или модуль необходимо заменить?
я нашел один отчет это предполагает, что система может самопроизвольно отключиться или не включиться, но мне не ясно, почему это так.
Linux убивает программы, используя страницы памяти с перевернутыми битами без возможности восстановления (таким образом, одно слово ECC с 2 переворотами), используя сигнал SIGBUS. Затем он помещает эту страницу в черный список, чтобы ее нельзя было повторно использовать.
При неоднократном обнаружении исправленных ошибок (обычно не в случае переходных переворотов, а с серьезными сбоями, которые сохраняются после исправления) страницы прозрачно переносятся на другую физическую страницу, но с использованием тех же виртуальных адресов. Это делается с помощью счетчика «дырявого ведра», который подсчитывает ошибки ECC на страницу за последние X единиц времени.
Эти подходы соответственно называются жестким и мягким переносом страниц в автономный режим. Вы можете прочитать больше и получить доступ к статистике ошибок / журналам через mcelog, которое входит в состав всех ядер Linux, начиная с версии 2.6. Обратите внимание, что вы можете установить это так, чтобы ваше ядро паниковало и перезагружало машину при каждой ошибке, если вы этого хотите.
Это также существует под названием удаление страницы памяти в системах Solaris и других ОС, несомненно, есть свои собственные версии, хотя я не знаю имен или ссылок, которые у меня в голове.
Короче говоря, оборудование сообщает об ошибках, а ОС смягчает их последствия. Так что, скорее всего, у вас не будет много симптомов, но вы можете запросить статистику у своей ОС или инструментов.
Я действительно видел ошибку ECC только однажды. Это было на сервере Dell, и проблема обнаруживается в нескольких местах:
Учитывая объем памяти, присутствующий на многих серверах, одна ошибка может не повредить работающей программе настолько, чтобы вызвать сбой. Это может вызвать лишь незначительные проблемы или, возможно, не вызвать их вовсе, если ошибка возникает в ОЗУ, которое не было выделено для конкретной программы.
Кроме того, поскольку это ОЗУ ECC, однобитовые ошибки исправимы и не повредят работающим программам. Смысл наличия ОЗУ ECC примерно в двух вещах, указанных выше:
Итак, вы ищите ошибки в инструментах управления, и, как правило, ошибок должно быть меньше, чем при использовании ОЗУ без ECC. Всегда рекомендуется заменять модули, если ошибки начинают появляться, то есть если частота ошибок превышает (очень низкую) частоту фоновых инцидентов. Надеюсь, это немного проясняет ситуацию.
РЕДАКТИРОВАТЬ: Также см этот вопрос для получения дополнительной информации по той же теме.
РЕДАКТИРОВАТЬ 2: На самом деле у меня был еще один - вот скриншот для тех, кто интересуется, как он выглядит в VMWare vCenter (идентификаторы оборудования зашифрованы):