Примечание: этот ответ не о физике, а о тихих ошибках памяти с модулями памяти не-ECC. Некоторые ошибки могут исходить из космоса, а некоторые - из внутреннего пространства рабочего стола.
Существует несколько исследований сбоев памяти ECC на крупных фермах серверов, таких как кластеры CERN и центры обработки данных Google. Аппаратное обеспечение серверного класса с ECC может обнаруживать и исправлять все однобитовые ошибки, а также обнаруживать множество многобитовых ошибок.
Мы можем предположить, что есть много настольных компьютеров не-ECC (и мобильных смартфонов не-ECC). Если мы проверим документы на наличие ошибок, исправляемых с помощью ECC (единичные битовые отрывки), мы сможем узнать частоту незаметных повреждений памяти в не-ECC памяти.
Крупномасштабное исследование CERN 2007 «Целостность данных» : поставщики заявляют « Коэффициент ошибок по битам 10–12 для их модулей памяти », « наблюдаемая частота ошибок на 4 порядка ниже ожидаемой ». Для задач с интенсивным использованием данных (8 ГБ / с чтения памяти) это означает, что переворот в один бит может происходить каждую минуту (10 -12 поставщиков BER) или один раз в два дня (10 -16 BER).
В статье Google 2009 года «Ошибки DRAM в дикой природе: крупномасштабное полевое исследование» говорится, что может быть до 25000-75000 однобитных FIT на Мбит ( сбои во времени на миллиард часов ), что равно 1 - 5 битам. ошибок в час для 8ГБ оперативной памяти после моих расчетов. В документе говорится то же самое: « означает исправимые ошибки в 2000–6000 за ГБ в год ».
Отчет Sandia 2012 года «Обнаружение и исправление искажения данных без вывода сообщений для крупномасштабных высокопроизводительных вычислений» : «двухбитные перевороты считались маловероятными», но в плотном Cray XT5 ORNL они «со скоростью один в день для 75 000+ DIMM» с ECC. И однобитовые ошибки должны быть выше.
Таким образом, если программа имеет большой набор данных (несколько ГБ) или имеет высокую скорость чтения или записи в память (ГБ / с или более) и работает в течение нескольких часов, то мы можем ожидать до нескольких тихих переключений битов на настольном оборудовании. Эта скорость не обнаруживается в memtest, и модули DRAM хороши.
Длинный кластер работает на тысячах компьютеров, не принадлежащих ECC, как, например, глобальные сетевые вычисления BOINC, всегда будут иметь ошибки из-за скачков памяти, а также из-за ошибок диска и сети.
А для больших машин (10 тысяч серверов) даже с защитой ECC от однобитных ошибок, как мы видим в отчете Sandia за 2012 год, каждый день могут происходить двухбитовые перевороты, поэтому у вас не будет возможности запустить полноразмерную параллель программа на несколько дней (без регулярной контрольной точки и перезапуска с последней хорошей контрольной точки в случае двойной ошибки). Огромные машины также получат перевороты в своих кэшах и регистрах процессоров (как триггеры архитектурных, так и внутренних чипов, например, в канале данных ALU), потому что не все из них защищены ECC.
PS: все будет намного хуже, если модуль DRAM плохой. Например, я установил новую DRAM в ноутбук, который умер через несколько недель. Это начало давать много ошибок памяти. Что я получаю: ноутбук зависает, linux перезагружается, запускает fsck, находит ошибки в корневой файловой системе и говорит, что хочет сделать перезагрузку после исправления ошибок. Но при каждой следующей перезагрузке (я сделал около 5-6 из них) все еще обнаруживаются ошибки в корневой файловой системе.