как узнать, должны ли мои серверы использовать огромные страницы (размер страницы памяти)

у нас есть несколько серверов в кластере, и мы хотим знать, что в целом, в каких случаях нам нужно настроить огромные страницы?

у меня тоже есть несколько вопросов

  1. доза "memory page size" равна Huge pages?

на моем linux сервере я ввел следующую команду для проверки размера страницы памяти по умолчанию

grep Hugepagesize /proc/meminfo

Hugepagesize: 2048 kB

getconf PAGESIZE

4096
  1. но как все видят здесь, мы получаем разные результаты, почему?

  2. каковы риски при использовании огромных страниц?

  3. доза Disable Transparent Huge Page - означает отключение опции HUGE PAGES ?

1
задан 25 February 2018 в 00:57
2 ответа

Огромные страницы интересны, когда приложениям нужны большие сопоставления, к которым они будут выполнять произвольный доступ, потому что это наихудший случай для буфера альтернативной трансляции (TLB). Вы жертвуете детализацией отображения для записей TLB.

Страницы, включая огромные страницы, могут быть отображены только в блок физической памяти того же размера и выровнены по этому размеру. Таким образом, огромная страница размером 2 МБ должна быть сопоставлена ​​с границей 2 МБ в физической ОЗУ, а огромная страница размером 1 ГБ должна быть сопоставлена ​​с границей 1 ГБ, потому что младшие биты адресуют данные внутри страницы, и здесь нельзя добавить смещение.

Это означает, что огромные страницы обычно резервируются при запуске системы, когда физическая память еще не фрагментирована. Приложения, поддерживающие огромные страницы, могут использовать hugetlbfs для их выделения.

Вы должны решить с помощью параметра ядра, должны ли огромные страницы иметь размер 2 МБ или 1 ГБ, их нельзя смешивать. Всегда доступны обычные страницы размером 4 КБ.

Наиболее распространенным вариантом использования являются виртуальные машины (qemu / kvm может использовать огромные страницы), где это позволяет сохранить все отображение памяти виртуальной машины в небольшом количестве записей TLB, которые, следовательно, никогда не удаляются. , поэтому доступ к памяти внутри виртуальной машины требует поиска таблицы страниц только в гостевом контексте.

Некоторые системы баз данных также поддерживают огромные страницы, но это обычно полезно только при работе с большими наборами данных и индексами.

Вопросы:

  1. Есть обычные (4 КБ) страницы и огромные (2 МБ или 1 ГБ) страницы. Когда вы запрашиваете размер страницы, вы получаете размер для обычных страниц, когда вы запрашиваете огромный размер страницы,вы получаете настройку для огромных страниц. И обычные, и огромные страницы могут использоваться параллельно, но вы не можете смешивать разные огромные размеры страниц.

  2. Вы получаете разные результаты, потому что это две разные вещи. Размер обычных страниц фиксирован аппаратно, поэтому это не настройка.

  3. Огромные страницы необходимо выделять заранее, и хотя память технически «свободна», ее нельзя использовать ни для чего, кроме приложений с поддержкой огромных страниц, поэтому у всех, кроме этих приложений, будет меньше доступной памяти. Обычно это не проблема, потому что вы будете использовать огромные страницы на машинах, которые предназначены для требовательных к памяти приложений, таких как виртуальные машины или базы данных.

  4. Прозрачные огромные страницы пытаются сделать память доступной в виде буферов и кешей (в отличие от пункта 3), и попробуйте предоставить огромные страницы приложениям, которые отображают большие блоки памяти, чтобы приложения, которые не осознают огромные страницы, могли получать от них выгоду - в основном приложение, которое запрашивает блок памяти 2 МБ / 1 ГБ, получит огромную страницу, если это возможно. Помогает это или ухудшает производительность, зависит от ваших приложений. Если у вас есть приложение с поддержкой огромных страниц и вы хотите назначить память вручную, вам нужно отключить THP, тогда как система, в которой есть приложение базы данных, которое не поддерживает огромные страницы, скорее всего, выиграет.

4
ответ дан 3 December 2019 в 16:32

Очевидные варианты использования больших страниц - это когда PageTables (видимые в / proc / meminfo) становятся десятками ГБ. Это означает большие накладные расходы на память и процессор из-за простого отслеживания вашей памяти. Это происходит с гигантскими кусками памяти, большим количеством процессов или и тем, и другим. Часто в приложениях баз данных.

Огромные страницы значительно сокращают эти накладные расходы, потому что одна запись в таблице страниц теперь адресует гораздо больше памяти, скажем, 2048 КБ вместо 4 КБ. (Существуют разные размеры на других платформах, например, AIX на POWER поддерживает большие страницы размером 16 МБ.)

Огромные страницы в Linux не могут использоваться для кэширования файлов, они раздражают и неэффективны для нескольких мегабайт для malloc () для неразделенной памяти. Таким образом, администратору приходится выделять огромные пулы страниц, которые можно использовать только для некоторых целей. Это недостаток использования огромных страниц.

Прозрачные огромные страницы (THP) стараются сделать администрирование менее утомительным, автоматически «дефрагментируя» непрерывную память на огромные страницы. Идея заключалась в том, чтобы сделать заранее выделенные огромные страницы необязательными. Выгоды сильно зависят от рабочей нагрузки, возможно, потребуется слишком много ресурсов процессора, чтобы того стоить. Отключение THP означает, что вы все еще можете использовать выделение огромных страниц вручную. Иногда стоит отключить THP и просто поместить сегменты разделяемой памяти базы данных на огромные страницы.

И последнее замечание по поводу огромных страниц Linux: я считаю, что управление ими раздражает.

  • Общая память использует один интерфейс, но для остальных вы используете Библиотека и файловая система hugetlbfs.
  • Вы можете «тратить» память, выделяя слишком большие страницы, а не настройки вашего приложения для его использования.
  • Это количество страниц необходимо масштабировать для каждого размера хоста, потому что его количество страниц, а не процент памяти.
  • Часто способность выделять огромные страницы ограничивается нахождением в одной группе, переключение пользователей базы данных может привести к неожиданной трате памяти.
3
ответ дан 3 December 2019 в 16:32

Теги

Похожие вопросы