Вероятность повреждения аппаратного диска или памяти? - PullRequest
3 голосов
/ 05 октября 2008

У меня есть несколько сотен компьютеров, на которых запущено приложение. На одном компьютере я видел два случая неправильной установки одного бита для некоторых строк, которые я извлекаю из SQLite. Если бы это был мой компьютер разработчика, я бы предположил, что у меня где-то есть ошибка, но, безусловно, будет определенное количество установок, и в этот момент я начну видеть редкие аппаратные ошибки.

Это, конечно, зависит от того, сколько IO я делаю, но есть ли какие-то правила, когда есть хороший шанс увидеть подобные вещи? Например, для пакетов TCP в этом документе определено, что молчащее, необнаруженное повреждение произойдет в «примерно 1 на 16–10 миллиардов пакетов».

К сожалению, запуск программы проверки mem / disk на рассматриваемой машине вряд ли произойдет.

Ответы [ 5 ]

4 голосов
/ 05 октября 2008

Когда я замечаю странные вещи, моя стратегия такова:

  1. проверить, есть ли ошибка в коде
  2. проверить, есть ли ошибка в используемой библиотеке / инструменте (SQLite, здесь)
  3. проверить, есть ли ошибка в компиляторе
  4. тогда, и только тогда, проверьте аппаратные сбои

За 10 лет моей работы 99,99% ошибок были связаны с программным обеспечением.

Надеюсь, это поможет.

2 голосов
/ 05 октября 2008

Произойдут битовые ошибки. Подумайте о защите ваших данных с помощью CRC или какого-либо другого механизма обнаружения / исправления ошибок. Вероятность того, что это произойдет, зависит от того, какое у вас оборудование. Если у вас есть память с ECC, то это будет менее вероятно, чем, например, если у вас ее нет, но даже память ECC выходит из строя и может не исправить ошибки. С несколькими сотнями компьютеров я бы сказал, что странная аппаратная ошибка, скорее всего, наверняка произойдет ежедневно.

1 голос
/ 27 июля 2010

"Википедия: память ECC" говорит «Недавние тесты DRAM дают широко варьируемые коэффициенты ошибок с разницей более чем на 7 порядков, в диапазоне от 10 ^ -10 до 10 ^ -17 ошибок / бит · ч, примерно от одной ошибки бита в час на гигабайт памяти до ошибки 1 бит за столетие на гигабайт памяти. [7] [11] [12] "

Даже если мы используем наиболее оптимистичную оценку ошибки в один бит на столетие на гигабайт, если у вас кластер из 100 компьютеров с 2 ГБ ОЗУ каждый, это означает, что вы будете видеть битовую ошибку два раза в год. (Это включает только ошибку бита ОЗУ. Вы упомянули необнаруженное повреждение пакета TCP, и вы могли бы также рассмотреть сбои дисков, случайное отключение шнура питания, отказы вентилятора охлаждения и т. Д.). Более пессимистичные оценки означают, что вы будете видеть битовые ошибки гораздо чаще - как сказал Стив Бейкер, битовые ошибки неизбежны.

0 голосов
/ 10 июня 2011

Выключите эту машину. В моей нынешней должности (~ 7 лет) я однажды видел синий экран, вызванный ошибкой аппаратной памяти. Если вы дважды сталкивались с ошибками на одной и той же машине, вероятно, вы нашли виновника. За тот же период времени я видел десятки сбоев контроллера дисков / сбоев дисков / повреждения реестра. Так что они редки, но они случаются.

Со стороны сети у нас был один случай, когда устройство сжатия WAN стороннего поставщика неправильно сжимало TCP-пакеты наших приложений, а затем помещало на него хороший CRC. Это сеет хаос, если не сказать больше.

0 голосов
/ 05 октября 2008

с незначительными ошибками, это может произойти в любое время, и из нескольких источников, даже , наиболее маловероятно .

Поскольку вы видите ошибки, возникающие на одном компьютере, лучше всего обрабатывать ущерб, а не полагаться на статистику, чтобы сообщать, когда что-то может пойти не так. Хотя ошибки могут быть связаны с внешними факторами, если вы видели более одного, было бы целесообразно, чтобы этот memchecker работал на машине, чтобы проверить, не является ли она неисправным оборудованием. Альтернатива - верить в удачу, что вы не увидите полного отказа.

...