ECC против не-ECC

ECC против не-ECC

Я хотел бы построить сервер хранения (на базе GNU/Linux или FreeBSD), который будет работать все время. Чтобы предотвратить повреждение данных (что вряд ли произойдет, поскольку у меня никогда не было такой проблемы, но лучше перестраховаться, чем потом сожалеть), я хотел бы использовать ECC RAM.

Хотя и не так хорош, как EDD (?) (который намного дороже) и обеспечивает дополнительную защиту. ECC, похоже, исправляет только ошибки отдельных битов.

Зарегистрированная оперативная память ECC может использоваться только с платами рабочих станций/серверов, такими как Intel Xeon или AMD interlagos/magny-cours/valencia g34 или c32.

ECC unbuffered можно использовать на платах Intel Xeon lga1155 или AMD AM3+ на Asus.

Второй вариант будет намного дешевле с точки зрения процессора и материнской платы, и я сомневаюсь, что мне понадобится больше 16 ГБ оперативной памяти (4x4 ГБ ECC unbuffered — самые большие доступные планки).

У меня есть сомнения (в основном по поводу платы asus am3+): ECC-unbuffered RAM так же хороша, как ECC-registered RAM (с точки зрения безопасности и надежности)? Или это худший выбор. Скорость меня не особо волнует.

Дополнительные сведения: сервер будет использовать серверный корпус с 24 x 3,5'' дисками и должен потреблять как можно меньше. LGA1155 в этом смысле кажется лучшим выбором (TDP ~ 20-95 Вт) по сравнению с другими (>80 Вт) за вдвое большую цену. Любые предложения приветствуются. Допустим, менее 120 Вт в режиме ожидания (~ с 10 жесткими дисками из 24).

решение1

Ну, если вы используете только 16 ГБ оперативной памяти (что не входит в диапазон серверной оперативной памяти), то вам подойдет практически любой стандартный объем оперативной памяти/системы настольного компьютера.

Если это всего лишь сервер хранения данных, то вам даже не понадобится такая высокая производительность ЦП.

Как вы и сказали, выбирайте Sandy Bridge, это даст вам классную, производительную и надежную систему.

Говоря о диапазонах оперативной памяти объемом 16 ГБ, вам не придется беспокоиться о вещах ECC.

решение2

Судя по всему, ECC исправляет только ошибки в отдельных битах.

Правильно. Для исправления большего количества ошибок потребуется больше бит. А так вы уже используете 10 бит для хранения 8 бит информации, «тратя» 20% чипов памяти, чтобы обеспечить исправление одного бита и обнаружение до двух битов ошибок.

Это работает следующим образом. Представьте себе a 0или an 1. Если я прочитаю что-то одно, то мне остается только надеяться, что я прочитаю правильно. Если 0 превратился в 1 из-за какой-то космической радиации или из-за неисправного чипа, то я никогда этого не узнаю.

В прошлом мы пытались решить эту проблему с помощью четности. Четность добавляла девятый бит на каждые 8 ​​сохраненных бит. Мы проверяли, сколько нулей и сколько единиц было в байте. Девятый был установлен, чтобы сделать это число четным. (для четности). Если вы когда-либо читали байт, и число было неправильным, то вы знали, что что-то не так. Однако вы не знаете, какой именно бит был неправильным.

ECC расширил это. Он использует 10 бит и сложный алгоритм для обнаружения, когда один бит перевернулся. Он также знает, каким было изначальное значение. Очень простой способ объяснить, как он это делает, будет следующим:

Заменить все 0s на 000. Заменить все 1s на 111.

Теперь вы можете прочитать шесть комбинаций:
000
001
010
100
101
111

Мы никогда не уверены на 100%, что было изначально сохранено. Если мы читаем, 000то это может быть как раз то 000, что мы ожидали, или все три бита могли перевернуться. Последнее очень маловероятно. Биты не переворачиваются случайным образом, хотя это случается. Допустим, что это происходит один раз из десяти для некоторых простых вычислений (в реальности гораздо меньше). Это приводит к следующим шансам прочитать правильное значение:

000-> Либо 000(уверенность 99,9%), либо тройной флип (шанс 1/1000)

001-> Мы знаем, что что-то пошло не так. Но это либо было 000и один бит перевернулся (шанс 1:10), либо было 111и два бита перевернулись (шанс 1:100). Так что давайте относиться к этому так, как будто мы читаем, 000но регистрируем ошибку.

010-> То же, что и выше.

100-> То же, что и выше.

011-> То же, что и выше, но предполагая, что это был111

101-> То же, что и выше, но предполагая, что это был111

110-> То же, что и выше, но предполагая, что это был111

111-> Либо 111(уверенность 99,9%), либо тройной флип (шанс 1/1000)

111-> Либо 000(уверенность 99,9%), либо тройной флип (шанс 1/1000)

ECC делает похожие трюки, но делает это более эффективно. Для 8 бит (один байт) они используют только 10 бит для обнаружения и исправления.


Регистрируемая оперативная память ECC может использоваться только с платами для рабочих станций/серверов. Небуферизованная оперативная память ECC может использоваться на платах Intel Xeon LGA1155 или AMD AM3+ на платах Asus.

Я уже упоминал, что такое часть ECC, теперь о зарегистрированной и небуферизованной части.

В современных ЦП контроллер памяти находится на кристалле ЦП, начиная с давних времен для чипов AMD Opteron и с серии Core i для Intel. Большинство настольных ЦП затем напрямую взаимодействуют с гнездами DIMM, содержащими ОЗУ. Это работает, и не требуется никакой дополнительной логики. Это дешево в сборке, и скорость высока, потому что нет задержки при передаче от контроллера памяти к ОЗУ.

Но контроллер памяти может управлять только ограниченным током на высоких скоростях. Это означает, что существует ограничение на то, сколько сокетов памяти можно добавить на материнскую плату. (И чтобы сделать это более сложным, на то, сколько DIMM могут использовать, что приводит к рангам памяти. Я пропущу это, так как это и так длинное).

На серверных платах часто требуется использовать больше памяти, чем в настольной системе. Поэтому в память добавляется буфер «регистра». Считывания с чипов на DIMM сначала копируются в этот буфер. Спустя один такт этот буфер подключается к контроллеру памяти для передачи данных.

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

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

У меня есть сомнения (в основном по поводу платы asus am3+): ECC-unbuffered RAM так же хороша, как ECC-registered RAM (с точки зрения безопасности и надежности)? Или это худший выбор. Скорость меня не особо волнует.**

С точки зрения безопасности и стабильности ECC-небуферизованные и ECC-зарегистрированные — это одно и то же.


Дополнительные сведения: сервер будет использовать серверный корпус с 24 дисками размером 3 ½'' и должен потреблять как можно меньше энергии.

24 диска будут потреблять много энергии. Насколько много, зависит от дисков. Мой диск SAS на 140 ГБ 15K RPM потребляет всего 10 Вт в режиме ожидания, столько же, сколько диск SATA 7k2 на 1 ТБ. При использовании оба потребляют больше.

Умножьте это на 24. 24x10 Вт на холостом ходу означает 240 Вт, которые просто поддерживают вращение пластин дисков, преодолевая сопротивление воздуха. В два раза больше для использования.


В этом смысле LGA1155 представляется более выгодным вариантом (TDP ~ 20-95 Вт) по сравнению с другими (>80 Вт) за вдвое большую цену.

На момент написания статьи Intel была лучше в производстве маломощных процессоров, в том числе и тех процессоров, которые вы упомянули.

Любые предложения приветствуются. Допустим, менее 120 Вт в режиме ожидания (~ с 10 жесткими дисками из 24).

Если вы выбираете FreeBSD, внимательно посмотрите на ZFS. Он может быть отличным. Многие из его более продвинутых функций (например, дедупликация и/или сжатие) используют серьезную мощность ЦП и требуют много памяти. ZFS для базового использования с ZRAID будет хорошо работать на обоих упомянутых вами наборах ЦП и с 16 ГБ, но если вы включите такие функции, как дедупликация, вам следует внимательно изучить рекомендуемый объем памяти, необходимый для емкости вашего диска; до 5 ГБ на ТБ хранилища рекомендуетсянекоторые гиды.

Еще две вещи:

  1. Я не видел ничего о подключении дисков. Некоторые платы могут иметь до 10 портов SATA. Но для всего, что больше, вам понадобятся карты расширения. Если вы рассматриваете аппаратный RAID, то, возможно, лучше спланировать это с самого начала.
  2. Отказ привода: следует ли использоватьМножители портов SATAзатем внимательно посмотрите, как они действуют, если диск SATA выходит из строя. Часто это некрасиво. Не большая проблема для домашней установки, но совсем не корпоративного класса. Вам может потребоваться также рассмотреть, как отдельные диски обрабатывают ошибки. Причина, по которой некоторые диски маркируются как предназначенные для использования «NAS» или «RAID», заключается в том, что они обрабатывают ошибки иначе, чем обычные диски. Без RAID вы хотите, чтобы диск повторял попытки как можно больше раз. С RAID,вы хотите, чтобы диск быстро вышел из строя, так что вы можете прочитать другую копию.

решение3

Два отдельных вопроса.

ECC против не-ECC

  • используйте ECC везде, где важна бесперебойная работа
  • стоит дороже -- нужно (кратно) 9 чипов вместо 8
  • Для его использования материнская плата должна его поддерживать.

Зарегистрированные и небуферизованные:

  • Можно установить (гораздо) больше оперативной памяти с помощью зарегистрированных модулей DIMM
    • Меньше электрической нагрузки на интерфейс контроллера памяти
  • Но все установленные модули DIMM должны быть зарегистрированы или нет.
    • необходимо удалить небуферизованные модули DIMM при обновлении до зарегистрированных
  • Также это дороже, и цикл доступа медленнее
    • Небуферизованный режим обеспечивает немного меньшую задержку, если это имеет значение.
    • все случайные доступы в любом случае занимают много циклов
    • Обратите внимание, что абсолютная задержка доступа (время в наносекундах) не сильно улучшилась за всю историю использования DRAM в ПК.
      • вместо этого значительно улучшились стоимость, емкость и пропускная способность
      • кэши памяти в любом случае скрывают задержку для большинства обращений к памяти
    • Более длительная задержка больше всего снижает производительность однопоточных вычислений в режиме реального времени
      • обычно не сильно влияет на варианты использования «сервера»
    • Отсутствие или минимальная разница в пропускной способности и общей производительности
      • полоса пропускания последовательного доступа не изменяется
      • Кэши L2/L3 означают, что фактические шаблоны доступа в основном заменяют строки в кэше за раз, поэтому в любом случае обычно имеют «пакетный» доступ

Связанный контент