Wiki
Инфраструктура

ECC-память — что это и зачем нужна серверам

ECC (Error-Correcting Code) — память с автоматической коррекцией однобитных ошибок. Обязательна для серверов, где 1 бит-флип может уронить БД.

ECC-память (Error-Correcting Code) — оперативная память с встроенным механизмом обнаружения и коррекции ошибок. Каждые 64 бита данных сопровождаются 8 битами контрольной суммы, позволяющей: (1) обнаружить и исправить любую однобитную ошибку (SEC — single error correction), (2) обнаружить, но не исправить двубитную (DED — double error detection).

Зачем: bit-flip (случайное изменение бита в памяти под воздействием космических лучей или деградации ячейки) на потребительском ПК происходит редко, но статистически предсказуемо: на сервере с 128 ГБ RAM работающем 24/7 — несколько раз в год. Без ECC bit-flip приводит к: (1) crash приложения, (2) кэша базы данных с испорченными данными, (3) silent data corruption — самое опасное, когда вы годами читаете неверные данные и не знаете.

На всех серверных CPU (Intel Xeon, AMD EPYC) ECC поддерживается на уровне контроллера памяти. У нас во всех VPS/dedicated — DDR5 ECC RDIMM. Стоит на 15-25 % дороже non-ECC, но для production без ECC работать нельзя. Потребительские CPU (Intel Core i7, AMD Ryzen non-Pro) ECC часто не поддерживают — эти чипы в дата-центрах не встретите.

Частые вопросы

Есть ли ECC в моём VPS?
Да — все наши VPS работают на серверном железе AMD EPYC 9004 с ECC DDR5 RDIMM. Ваша VM получает виртуальную память, которая физически подкреплена ECC.
Насколько часто bit-flip реально происходит?
По исследованию Google 2009 — 1 ошибка на 1.7-11 GB RAM в год. На современных 128GB-сервере — от нескольких раз в год до нескольких раз в месяц. ECC ловит их все.