📌 HugePages

HugePages — механизм в Linux и других системах управления памятью, позволяющий использовать страницы памяти большего размера (обычно 2 MB или 1 GB) вместо стандартных 4 KB.

🧠 Как работает

Обычная виртуальная память управляется через страницы 4 KB. Это приводит к:

  • Росту таблиц страниц при большом объёме данных
  • Повышенной нагрузке на TLB (Translation Lookaside Buffer)

HugePages уменьшают количество записей в таблицах и TLB-промахов, улучшая производительность.

Режимы:

  • Static HugePages — вручную выделяются при загрузке
  • Transparent HugePages (THP) — ядро автоматически использует большие страницы (можно отключать)

Примеры размеров:

ТипРазмер страницы
Standard4 KB
HugePage (default)2 MB
Gigantic HugePage1 GB

⚙️ Где применяется

ОбластьПрименение
DPDK, VPPНизкоуровневая обработка сетевых пакетов
DatabasesOracle, PostgreSQL
VM и HypervisorKVM, QEMU, libvirt
HPCПовышение эффективности доступа к памяти

💻 Пример (настройка в Linux)

# Выделить 1024 HugePages по 2 MB
echo 1024 > /proc/sys/vm/nr_hugepages
 
# Проверить
grep Huge /proc/meminfo
 
# Монтировать как файловую систему
mount -t hugetlbfs none /mnt/huge

📐 Сравнение доступа

[Standard Paging] → Больше TLB-миссов, больше переключений страниц
[HugePages]       → Меньше TLB-записей, выше производительность

✅ Преимущества

  • Снижение нагрузки на TLB

  • Уменьшение накладных расходов при работе с большой памятью

  • Улучшение производительности DPDK, VM, DBMS

❌ Недостатки

  • Не всегда эффективно при фрагментированной памяти

  • Требует ручной настройки и контроля использования

  • Программа должна явно поддерживать HugePages (если не THP)