До основного вмісту

Перевірка оперативної пам'яті сервера: memtest86+ і EDAC

Виділені сервери · 24.09.2026
Ілюстрація до статті «Перевірка оперативної пам'яті сервера: memtest86+ і EDAC»

Перевірка оперативної пам'яті сервера: memtest86+ і EDAC

Оперативну пам'ять виділеного сервера перевіряють двома способами. Офлайн — завантаженням memtest86+ із зовнішнього образу: тест пише й читає шаблони за всіма адресами і знаходить дефект точно, але сервер цей час не працює. Онлайн — читанням лічильників підсистеми EDAC у ядрі Linux: вона реєструє кожну помилку, яку виправив ECC, і ловить деградацію модуля за тижні до відмови.

  • ECC виправляє одиночні бітові помилки й записує факт у EDAC: каталог /sys/devices/system/edac/mc/.
  • Зростання ce_count на одному DIMM — привід міняти модуль, навіть якщо сервер працює без збоїв.
  • Помилка UE (uncorrectable) означає, що дані вже зіпсовані: сервер виводять з роботи одразу.
  • Усі виділені сервери ZevsHost ідуть із DDR4 ECC: від 16 GB на Start до 64 GB на Enterprise US.

EDAC проти memtest86+: що чим ловиться

EDAC (Error Detection And Correction) — це драйвери ядра під конкретні контролери пам'яті Intel і AMD. Вони не тестують пам'ять, а знімають те, що контролер уже порахував: скільки одиночних помилок виправлено (CE) і скільки подвійних виправити не вдалося (UE). Пам'ять при цьому працює під вашим реальним навантаженням, а не під синтетичним шаблоном.

memtest86+ працює інакше: він вантажиться замість ОС, забирає всю пам'ять собі й проганяє по ній тести move inversions, випадковими та «ходячими» одиницями. Так знаходять дефекти, які ECC виправляє мовчки, і помилки адресації, коли запис за однією адресою псує іншу.

МетодПростій потрібенЩо знаходитьКоли застосовувати
EDAC (sysfs)нілічильники CE/UE по контролерах і слотахпостійно, у моніторингу
memtesterнідефекти у вільній частині пам'ятішвидка перевірка на живій машині
memtest86+так, годинидефекти комірок і адресації по всьому обсягуприймання, заміна модуля, розбір аварії

На прийманні нового сервера обидві перевірки роблять до перенесення даних — порядок дій розібрано в статті про приймання виділеного сервера.

Онлайн-перевірка через EDAC

Лічильники в sysfs

Перевірте, що драйвер завантажено, і зніміть лічильники. На серверних Xeon E3 і E5 це зазвичай sb_edac, ie31200_edac або skx_edac.

# драйвер EDAC завантажено?
lsmod | grep -i edac

# сумарні лічильники по контролерах пам'яті
grep -H . /sys/devices/system/edac/mc/mc*/ce_count
grep -H . /sys/devices/system/edac/mc/mc*/ue_count

# розбивка по слотах: скільки помилок і як слот підписано в BIOS
grep -H . /sys/devices/system/edac/mc/mc*/dimm*/dimm_ce_count
cat /sys/devices/system/edac/mc/mc0/dimm0/dimm_label

Нулі в усіх файлах — нормальний стан. Будь-яке ненульове значення в ue_count вважайте аварією. Ненульовий ce_count сам по собі не вирок, важлива динаміка: зніміть значення, зачекайте добу, зніміть знову.

memtester: перевірка без перезавантаження

memtester тестує лише ту пам'ять, яку зміг виділити процесу, тому ядро та зайняті сторінки він не покриє. Для швидкого відсіювання цього вистачає: якщо дефект потрапляє в перевірювану область, він спливає за хвилини.

# вільна пам'ять у мегабайтах
free -m

# тест 4 GB, 3 проходи, вивід у файл
memtester 4096M 3 > /var/log/memtester.log 2>&1

# чим завершилося
grep -i -E 'failure|ok' /var/log/memtester.log | tail -n 20

Не запускайте memtester на обсяг, близький до загального. Процес блокує пам'ять через mlock, і ядро відправляє в OOM-killer базу даних, вебсервер і все інше, що працювало на машині. Беріть не більше 60–70 % від значення free, а на навантаженому сервері — не більше 25 %. Перевірити, що ви нікого не поклали: dmesg -T | grep -i oom має мовчати, а systemctl --failed — показувати порожній список.

Офлайн-прогін memtest86+

Повноцінний тест вимагає завантаження замість ОС. На виділеному сервері це роблять через IPMI та KVM-over-IP: підключаєте ISO як віртуальний привід і обираєте завантаження з нього. Опція доступу KVM/IPMI коштує $5/міс на всіх тарифах, окрім Dedicated Enterprise US, де вона вже включена.

Другий шлях — встановити пакет у систему, він додасть пункт у меню завантажувача.

# Debian/Ubuntu: пункт memtest86+ у меню GRUB
apt-get install -y memtest86+
update-grub

# перевірити, що пункт з'явився
grep -i memtest /boot/grub/grub.cfg

Орієнтуйтеся на час: повний прохід по 16 GB DDR4 займає близько двох-трьох годин, по 64 GB на Enterprise US — майже добу. Закладайте щонайменше два проходи поспіль, а під час пошуку плаваючого дефекту — чотири.

Що робити зі знайденими помилками

  • Поодинокий CE за місяць. Записати й спостерігати. Це може бути частинка космічного випромінювання, заради якої ECC і придумали.
  • Десятки CE на добу на одному DIMM. Модуль деградує, плануйте заміну в найближче вікно.
  • Будь-який UE. Негайно знімайте навантаження: невиправлена помилка вже могла потрапити у файл бази або в сторінку кешу.
  • Помилки мігрують між слотами. Справа не в модулях: дивіться на контролер пам'яті, процесор і налаштування таймінгів у BIOS/UEFI.

Чому ECC узагалі вартий того й чим серверна пам'ять відрізняється від десктопної, розібрано окремо в статті про ECC-пам'ять у сервері. Конфігурації за обсягом пам'яті на кожному тарифі дивіться на сторінці виділених серверів.

Коротко

  • Лічильники EDAC дають раннє попередження без простою; memtest86+ дає доказ, але вимагає зупинки.
  • Стежте за динамікою ce_count по слотах, а не за самим фактом ненульового лічильника.
  • Будь-яка UE — привід вивести сервер з роботи, не чекаючи вікна обслуговування.
  • Для офлайн-тесту підключіть ISO через IPMI і закладайте від двох повних проходів.
← Назад до бази знань Поставити питання підтримці