📌 HugePages
HugePages — механизм в Linux и других системах управления памятью, позволяющий использовать страницы памяти большего размера (обычно 2 MB или 1 GB) вместо стандартных 4 KB.
🧠 Как работает
Обычная виртуальная память управляется через страницы 4 KB. Это приводит к:
- Росту таблиц страниц при большом объёме данных
- Повышенной нагрузке на TLB (Translation Lookaside Buffer)
HugePages уменьшают количество записей в таблицах и TLB-промахов, улучшая производительность.
Режимы:
- Static HugePages — вручную выделяются при загрузке
- Transparent HugePages (THP) — ядро автоматически использует большие страницы (можно отключать)
Примеры размеров:
Тип | Размер страницы |
---|---|
Standard | 4 KB |
HugePage (default) | 2 MB |
Gigantic HugePage | 1 GB |
⚙️ Где применяется
Область | Применение |
---|---|
DPDK, VPP | Низкоуровневая обработка сетевых пакетов |
Databases | Oracle, PostgreSQL |
VM и Hypervisor | KVM, 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
-
Уменьшение накладных расходов при работе с большой памятью
❌ Недостатки
-
Не всегда эффективно при фрагментированной памяти
-
Требует ручной настройки и контроля использования
-
Программа должна явно поддерживать HugePages (если не THP)