Космические лучи: какова вероятность того, что они повлияют на программу? - PullRequest
514 голосов
/ 06 апреля 2010

Я снова был в обзоре проекта и столкнулся с утверждением, что вероятность того или иного сценария «меньше, чем риск космических лучей», влияющих на программу, и мне пришло в голову, что у меня нет слабых мест. Идея, что это за вероятность.

"Поскольку 2 -128 - это 1 из 340282366920938463463374607431768211456, я думаю, что мы вправе использовать наши шансы здесь, даже если эти вычисления отклоняются в несколько миллиардов раз ... Мы Я верю, что космические лучи рискуют нас намного больше. "

Правильно ли этот программист? Какова вероятность попадания космического луча в компьютер и повлиять на выполнение программы?

Ответы [ 15 ]

8 голосов
/ 21 мая 2015

"события космических лучей", как полагают, имеют равномерное распределение во многих ответах здесь, это не всегда может быть правдой (то есть сверхновыми). Хотя «космические лучи» по определению (по крайней мере, согласно Википедии) происходят из внешнего пространства, я думаю, что было бы справедливо также включить локальные солнечные бури (также известные как 1005 * выброс корональной массы под тем же прикрытием. Я полагаю, что это может вызвать несколько битов за короткий промежуток времени, что может привести к повреждению даже памяти с поддержкой ECC.

Хорошо известно, что солнечные бури могут привести к значительным разрушениям электрических систем (например, отключение электроэнергии в Квебеке в марте 1989 года ). Вполне вероятно, что компьютерные системы также могут быть затронуты.

Около 10 лет назад я сидел прямо рядом с другим парнем, мы сидели с каждым из наших ноутбуков, это было в период с довольно "штормовой" солнечной погодой (сидя в Арктике, мы могли наблюдать это косвенно - много северное сияние, чтобы быть замеченным). Внезапно - в один и тот же момент - оба наших ноутбука рухнули. Он работал под управлением OS X, а я - под Linux. Никто из нас не привык к сбоям ноутбуков - это довольно редко встречается в Linux и OS X. Общие ошибки в программном обеспечении могут быть более или менее исключены, поскольку мы работали в разных ОС (и этого не произошло во время прыжка). второй). Я приписал это событие «космическому излучению».

Позже "космическое излучение" стало внутренней шуткой на моем рабочем месте. Всякий раз, когда что-то происходит с нашими серверами, и мы не можем найти никакого объяснения этому, мы в шутку приписываем ошибку "космическому излучению". : -)

7 голосов
/ 06 апреля 2010

Чаще всего шум может повредить данные. Контрольные суммы используются для борьбы с этим на многих уровнях; в кабеле данных обычно есть бит четности , который перемещается вместе с данными. Это значительно снижает вероятность коррупции. Затем на уровнях синтаксического анализа бессмысленные данные обычно игнорируются, поэтому, даже если какое-то искажение прошло бит четности или другие контрольные суммы, в большинстве случаев оно будет проигнорировано.

Кроме того, некоторые компоненты электрически экранированы , чтобы блокировать шум (вероятно, не космические лучи, я думаю).

Но, в конце концов, как сказали другие ответчики, есть случайный бит или байт, который шифруется, и остается шанс, является ли это значимым байтом или нет. В лучшем случае, космический луч скремблирует один из пустых битов и не имеет абсолютно никакого эффекта или сбивает компьютер (это хорошо, потому что компьютер защищен от вреда); но в худшем случае, я уверен, что вы можете себе представить.

5 голосов
/ 13 мая 2015

Я испытал это - космические лучи нередко переворачивают один бит, но очень маловероятно, что человек наблюдает это.

Я работал над инструментом сжатия для установщика в 2004 году. Моими тестовыми данными были некоторые установочные файлы Adobe объемом около 500 МБ или более, распакованные.

После утомительного запуска сжатия и запуска распаковки для проверки целостности FC / B показала один байт другой.

В пределах этого одного байта MSB перевернулся. Я также перевернулся, опасаясь, что у меня была сумасшедшая ошибка, которая появлялась только в очень специфических условиях - я даже не знал, с чего начать.

Но что-то подсказало мне снова запустить тест. Я запустил это, и это прошло. Я установил скрипт для запуска теста 5 раз за ночь. Утром все 5 прошло.

Так что это определенно был перелом космического луча.

4 голосов
/ 26 сентября 2013

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

Например, Stratus Technology строит серверы Wintel, называемые ftServer, которые имели 2 или 3 «материнские платы» в режиме блокировки, сравнивая результаты вычислений. (это также иногда делается в космических аппаратах).

Серверы Stratus эволюционировали от нестандартного набора микросхем до блокировки на задней панели.

Очень похожей (но программной) системой является порог блокировки VMWare Fault Tolerance на основе гипервизора.

3 голосов
/ 23 мая 2016

Как точка данных, это только что произошло в нашей сборке:

02:13:00,465 WARN  - In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ostream:133:
02:13:00,465 WARN  - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:3180:65: error: use of undeclared identifier '_'
02:13:00,465 WARN  - for (unsigned __i = 1; __i < __trailing_sign->size(); ++_^i, ++__b)
02:13:00,465 WARN  - ^
02:13:00,465 WARN  - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:3180:67: error: use of undeclared identifier 'i'
02:13:00,465 WARN  - for (unsigned __i = 1; __i < __trailing_sign->size(); ++_^i, ++__b)
02:13:00,465 WARN  - ^

Это очень сильно похоже на переворот, происходящий во время компиляции, в очень значительном месте исходного файла случайно.

Я не обязательно говорю, что это был "космический луч", но симптом совпадает.

...