Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
HUGEPAGES_CONFIG_ERROR Linux / DevOps

Настройка HugePages и отключение Transparent HugePages (THP) для СУБД

Обновлено: 21.08.2026
  • Непредсказуемые задержки (latency spikes) и блокировки в Redis, MongoDB или PostgreSQL.
  • Высокое потребление CPU потоком ядра [khugepaged] в режиме compaction/defrag.
  • Раздувание таблиц страниц памяти (PageTables в /proc/meminfo занимает десятки гигабайт).

1. Отключение Transparent HugePages (Рекомендовано для Redis, Mongo, Postgres)

Создайте systemd-юнит /etc/systemd/system/disable-thp.service:

[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=basic.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo never > /sys/kernel/mm/transparent_hugepage/defrag'

[Install]
WantedBy=basic.target
systemctl daemon-reload && systemctl enable --now disable-thp.service

2. Настройка статических HugePages (для PostgreSQL / Oracle / QEMU)

Рассчитайте необходимое число страниц по 2MB (например, для 16GB RAM: 16 * 1024 / 2 = 8192 страниц):

В файле /etc/sysctl.d/99-hugepages.conf:

# Выделение 8192 страниц по 2MB (~16GB)
vm.nr_hugepages = 8192

# Разрешить группе dba/postgres (GID 1001) доступ к HugePages
vm.hugetlb_shm_group = 1001
sysctl --system

3. Проверка статуса HugePages

cat /proc/meminfo | grep -i huge
Практический опыт инженера: При настройке vm.nr_hugepages задавайте параметр на этапе загрузки ОС через sysctl или boot-параметры grub (hugepages=8192), иначе из-за фрагментации памяти ядро не сможет выделить непрерывный пул страниц на работающем сервере.

Частые вопросы (FAQ)

Почему базы данных не рекомендуют Transparent HugePages (THP)?

THP выделяет страницы по 2MB динамически. Фоновый процесс ядра khugepaged для объединения мелких страниц выполняет операцию defragmentation, что блокирует доступ к страницам памяти приложения и вызывает резкие фризы (latency spikes).

Как активировать HugePages в PostgreSQL?

В postgresql.conf установите параметр huge_pages = on (или try) и убедитесь, что размер shared_buffers помещается в выделенный объем HugePages.