Практикум по памяти сервера
Большие страницы Linux: TLB, HugeTLB и THP
Вы научитесь отличать TLB, HugeTLB и THP, читать статистику памяти и проверять, использует ли приложение большие страницы. Четыре модуля связывают механизм работы с приёмкой сервера.
Что вы сможете сделать
- Отличать промах TLB от обращения к подкачке.
- Проверять запас HugeTLB с учётом резерва и размера страниц.
- Проверять, используются ли большие страницы, а не только включена ли поддержка THP.
1. Сначала разберите адреса
Приложение работает с виртуальными адресами. Для доступа к физической памяти нужен перевод адреса; готовые переводы хранятся в TLB.
TLB хранит переводы адресов, а не пользовательские данные.
Промах TLB ещё не означает чтение из подкачки: перевод может быть найден в таблицах страниц.
Page fault — исключение при обращении к памяти. Оно может понадобиться для выделения памяти или копирования при записи, а не для чтения с диска.
Большие страницы уменьшают часть затрат, но могут расходовать лишнюю память и сложнее выделяться.
2. Посчитайте пул HugeTLB
Пул может быть подготовлен, но приложение ещё не получило его страницы. Не считайте весь свободный остаток новым запасом, пока не проверен резерв.
Для использования HugeTLB приложение обращается к специальным интерфейсам; одного наличия пула недостаточно.
Память HugeTLB недоступна для других целей и не выгружается в подкачку.
HugePages_Free — ещё не выделенные страницы; HugePages_Rsvd — уже обещанное, но ещё не выданное из пула.
Выделению нужны непрерывные участки физической памяти, а не только достаточная сумма свободных байтов.
Первые поля meminfo описывают размер по умолчанию; Hugetlb учитывает память HugeTLB всех размеров.
3. Проверьте, что произошло с THP
THP использует большие страницы иначе, чем HugeTLB. Настройки описывают разрешённое поведение, а использование нужно проверять по подходящей статистике.
THP управляет размером страниц автоматически и не требует заранее выделенного пула HugeTLB.
mTHP означает большие страницы нескольких размеров. Они могут быть меньше традиционной страницы уровня PMD в таблице страниц; размеры проверяют на своей системе.
AnonHugePages относится к анонимным страницам уровня PMD. Для меньших размеров mTHP смотрят отдельную статистику.
Рост thp_fault_fallback показывает переход на малые страницы при неудаче выделения или учёта большой.
4. Проверьте пользу на нагрузке
Большие страницы — не добавление физической RAM и не гарантия ускорения. Зафиксируйте условия и сравните результат приложения, не меняя настройки действующего сервера ради этого задания.
В режиме defrag=always выделение THP может задержать приложение на освобождение и уплотнение памяти.
Меньше затрат на TLB — один из возможных эффектов; расход памяти и сложности выделения остаются частью оценки.
Проверьте инженерное мышление
Вопросы проверяют не память на аббревиатуры, а умение не делать лишних выводов.
Следующий шаг
Сформулируйте задачу и уточните требования к своей системе.
Подготовить подбор с ДелектусомОткроется черновик вопроса. Отправьте его, когда будете готовы.
Источники курса
Ссылки приведены один раз для всего курса, чтобы не мешать чтению каждого тезиса.
- Официальная документация
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 и возможные задержки при уплотнении памяти. Режим работы конкретного сервера не проверялся.
Открыть первоисточник