Практикум по памяти сервера

Большие страницы Linux: TLB, HugeTLB и THP

Вы научитесь отличать TLB, HugeTLB и THP, читать статистику памяти и проверять, использует ли приложение большие страницы. Четыре модуля связывают механизм работы с приёмкой сервера.

База → пресейл и приёмка35 минут4 модуля8 вопросов
После курса

Что вы сможете сделать

  1. Отличать промах TLB от обращения к подкачке.
  2. Проверять запас HugeTLB с учётом резерва и размера страниц.
  3. Проверять, используются ли большие страницы, а не только включена ли поддержка THP.
Модуль 1 из 4

1. Сначала разберите адреса

Приложение работает с виртуальными адресами. Для доступа к физической памяти нужен перевод адреса; готовые переводы хранятся в TLB.

  • TLB хранит переводы адресов, а не пользовательские данные.

  • Промах TLB ещё не означает чтение из подкачки: перевод может быть найден в таблицах страниц.

  • Page fault — исключение при обращении к памяти. Оно может понадобиться для выделения памяти или копирования при записи, а не для чтения с диска.

  • Большие страницы уменьшают часть затрат, но могут расходовать лишнюю память и сложнее выделяться.

Модуль 2 из 4

2. Посчитайте пул HugeTLB

Пул может быть подготовлен, но приложение ещё не получило его страницы. Не считайте весь свободный остаток новым запасом, пока не проверен резерв.

  • Для использования HugeTLB приложение обращается к специальным интерфейсам; одного наличия пула недостаточно.

  • Память HugeTLB недоступна для других целей и не выгружается в подкачку.

  • HugePages_Free — ещё не выделенные страницы; HugePages_Rsvd — уже обещанное, но ещё не выданное из пула.

  • Выделению нужны непрерывные участки физической памяти, а не только достаточная сумма свободных байтов.

  • Первые поля meminfo описывают размер по умолчанию; Hugetlb учитывает память HugeTLB всех размеров.

Модуль 3 из 4

3. Проверьте, что произошло с THP

THP использует большие страницы иначе, чем HugeTLB. Настройки описывают разрешённое поведение, а использование нужно проверять по подходящей статистике.

  • THP управляет размером страниц автоматически и не требует заранее выделенного пула HugeTLB.

  • mTHP означает большие страницы нескольких размеров. Они могут быть меньше традиционной страницы уровня PMD в таблице страниц; размеры проверяют на своей системе.

  • AnonHugePages относится к анонимным страницам уровня PMD. Для меньших размеров mTHP смотрят отдельную статистику.

  • Рост thp_fault_fallback показывает переход на малые страницы при неудаче выделения или учёта большой.

Модуль 4 из 4

4. Проверьте пользу на нагрузке

Большие страницы — не добавление физической RAM и не гарантия ускорения. Зафиксируйте условия и сравните результат приложения, не меняя настройки действующего сервера ради этого задания.

  • В режиме defrag=always выделение THP может задержать приложение на освобождение и уплотнение памяти.

  • Меньше затрат на TLB — один из возможных эффектов; расход памяти и сложности выделения остаются частью оценки.

Финишная прямая

Проверьте инженерное мышление

Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.

01Счётчик промахов TLB растёт. Что именно подтверждает такой промах?
02Разбор исключения page fault показал копирование при записи; исходная страница находится в RAM. Как описать результат?
03В meminfo есть ненулевой HugePages_Total. Настройки и выделения конкретного приложения ещё не проверяли. Что установлено?
04Для одного размера HugeTLB показаны HugePages_Free=100 и HugePages_Rsvd=80. Как прочитать этот снимок?
05В системе есть несколько размеров HugeTLB. Чему соответствует произведение HugePages_Total и Hugepagesize?
06В Linux 6.12 AnonHugePages равен нулю. Поддержку и использование меньших размеров mTHP ещё не проверяли. Что следует из этого?
07За интервал увеличился thp_fault_fallback. Какой процесс описывает этот счётчик?
08Для THP выбран defrag=always. При выделении выросли задержки, но причину ещё не измерили. Что проверить в первую очередь по механизму из курса?

Следующий шаг

Сформулируйте задачу и уточните требования к своей системе.

Подготовить подбор с Делектусом

Откроется черновик вопроса. Отправьте его, когда будете готовы.

Проверяемая база

Источники курса

Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.

  • Официальная документация

    Page Tables

    Linux Kernel · Linux 6.12 documentation

    Раздел MMU, TLB, and Page Faults: кэш переводов адресов, обход таблиц, обычные причины page fault и компромиссы больших страниц.

    Открыть первоисточник
  • Официальная документация

    HugeTLB Pages

    Linux Kernel · Linux 6.12 documentation

    Пул HugeTLB, поля meminfo, резервирование, отсутствие подкачки и зависимость выделения от непрерывной физической памяти. Команды изменения настроек не выполнялись.

    Открыть первоисточник
  • Официальная документация

    Transparent Hugepage Support

    Linux Kernel · Linux 6.12 documentation

    THP и mTHP, область AnonHugePages, thp_fault_fallback и возможные задержки при уплотнении памяти. Режим работы конкретного сервера не проверялся.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие