Примечание: этот ответ не о физике, а о тихих ошибках памяти с модулями памяти не-ECC. Некоторые ошибки могут исходить из космоса, а некоторые - из внутреннего пространства рабочего стола.
Существует несколько исследований сбоев памяти ECC на крупных фермах серверов, таких как кластеры CERN и центры обработки данных Google. Аппаратное обеспечение серверного класса с ECC может обнаруживать и исправлять все однобитовые ошибки, а также обнаруживать множество многобитовых ошибок.
Мы можем предположить, что существует множество рабочих столов не-ECC (и мобильных смартфонов не-ECC). Если мы проверим документы на наличие ошибок, исправляемых с помощью ECC (единичные битовые отрывки), мы сможем узнать частоту незаметных повреждений памяти в не-ECC памяти.
Итак, если программа имеет большой набор данных (несколько ГБ) или имеет высокую скорость чтения или записи в память (ГБ / с или более) и работает в течение нескольких часов, мы можем ожидать до нескольких тихих переключений битов настольное оборудование. Эта скорость не определяется Memtest, и модули DRAM хороши.
Длинный кластер работает на тысячах компьютеров, не принадлежащих ECC, например, в глобальных сетевых вычислениях BOINC всегда будут возникать ошибки из-за перехватов памяти, а также из-за ошибок диска и сети.
А для более крупных машин (10 тысяч серверов) даже с защитой ECC от одноразрядных ошибок, как мы видим в отчете Sandia за 2012 г., каждый день могут происходить двухбитовые перевороты, поэтому у вас не будет возможности работать на полную -размерная параллельная программа в течение нескольких дней (без регулярной контрольной точки и перезапуска с последней хорошей контрольной точки в случае двойной ошибки). Огромные машины также получат перевороты в своих кэшах и регистрах процессоров (как триггеры архитектурных, так и внутренних микросхем, например, в канале данных ALU), потому что не все они защищены ECC.
PS: все будет намного хуже, если модуль DRAM неисправен. Например, я установил новую DRAM в ноутбук, который умер через несколько недель. Это начало давать много ошибок памяти. Что я получаю: ноутбук зависает, linux перезагружается, запускает fsck, находит ошибки в корневой файловой системе и говорит, что хочет выполнить перезагрузку после исправления ошибок. Но при каждой следующей перезагрузке (я сделал около 5-6 из них) все еще обнаруживаются ошибки в корневой файловой системе.