К основному контенту

HugePages на серверах БД под Linux


Столкнулись со следующей ситуацией:


Снижение объема доступной ОЗУ + увеличение использования swap.
При этом PageTable занимали около 200Gb при общем объеме 756Gb.

grep PageTables /proc/meminfo

Рекомендации Oracle support “HugePages on Oracle Linux 64-bit (Doc ID 361468.1)”.

Использование Huge pages критично для производительности БД Oracle на платформах Linux с большим объемом ОЗУ и SGA. При размере SGA более 8 Gb должны использоваться HugePages.

Некоторые из указанных преимуществ:

·         Уменьшение служебных операций с памятью

·         Huge pages не выгружаются в Swap

·         Общее снижение используемой памяти




Рекомендации по настройке серверного оборудования HP:


Технология Huge page, реализованная в Linux, настоятельно рекомендуется к использованию на DL980 при работе с БД Oracle.

Данная технология способствует наиболее рациональному использованию памяти. Для каждого пользователя, подключающегося к БД, создается своя копия таблицы страниц SGA. При использовании стандартных страниц  (4Kb) таблица страниц (та самая PageTables) в ОС вскоре превысит размер SGA. Пример: при 800 Gb SGA c 1024 пользователями потребуется 1,6 Tb под таблицу страниц. При использовании huge pages для указанной конфигурации потребуется таблица страниц лишь 32 Gb.



Рекомендации по использованию режима Huge pages при работе с БД Oracle приводятся также на сайтах REDHAT, Novell (SuSe Linux) и в тематических форумах  и блогах. Так, статья описывает решение серьезной проблемы с производительностью сервера БД. В качестве основных симптомов приводится: повышенное использование процессорных ресурсов, оперативной памяти и swap. В приведенном примере из 20 Гигабайт доступной оперативной памяти 5 Гигабайт выделено под таблицу страниц. В конце статьи следует вывод, что в данный момент не существует причин не использовать HugePages для работы БД Oracle на ОС Linux.

В другой статье говорится, как минимум, о 13% приросте производительности базы данных Oracle при использовании HugePages.
  
Известные ограничения.

Начиная с 6 версии в RedHat6/OEL6 была применена технология Transparent HugePages, которая включена по умолчанию. Данная технология может приводить к непредвиденным перезагрузкам узлов и проблемам с производительностью в составе Oracle RAC. В ряде случает проблемы наблюдались также на БД Oracle, не входящими в кластер. Oracle рекомендует отключать Transparent HugePages на серверах БД Oracle (ID 1557478.1).

Transparent HugePages по умолчанию отключены в Oracle Linux 7.

Итог
После настройки HugePages проблемы с нехваткой ОЗУ прекратились.

Комментарии

Популярные сообщения из этого блога

Установка и настройка pgAgent(планировщика заданий PostgreSQL)

Установка pgAgent Последняя версия скрипта для установки агента  тут . Перенести инструкцию по агенту в отдельную тему. 1. Создать пользователя ОС, и сделать ему домашний каталог: useradd -s /bin/false -r -M pgagent mkdir /home/pgagent 2. Установить и настроить демон: yum install pgagent_94 При наличии ошибок вида (была на Oracle Linux 6.8) Error: Package: pgagent_94-3.4.0-1.rhel6.x86_64 (pgdg94)            Requires: libwx_baseu-2.8.so.0(WXU_2.8)(64bit) Нужно установить EPEL systemctl enable pgagent_94 chown pgagent:pgagent /var/log/pgagent_94.log 3. Установить схему агента в базе: sudo -u postgres psql -f /usr/share/pgagent_94-3.4.0/pgagent.sql postgres 4. Создать файл паролей для подключения агента к базе. vi /home/pgagent/.pgpass localhost:5432:*:postgres:postgres chown pgagent.pgagent /home/pgagent -R chmod 600 /home/pagent/.pgpass 5. Запустить и проверить работу агента systemctl start pgagent...

Включение логирования для Haproxy

Изначально логирование в syslog в HaProxy отключено. Ниже пример настройки логирования для ОС Centos 7. Настройка: Добавить строку  log 127.0.0.1 local2 в секцию global файла /etc/haproxy/haproxy.cfg Раскомментировать $ModLoad imudp и $UDPServerRun 514 в файле  /etc/rsyslog.conf Создать файл  /etc/rsyslog.d/haproxy.conf со следующим содержимым:  local2.* /var/log/haproxy.log Перезапустить rsyslog и haproxy.

Установка PL/Java для PostgreSQL 9.4

Предварительные требования:  1. Компилятор C. Как правило имеется в виду gcc и g++ gcc  --version на CENTOS 7 мне понадобился gcc_c++ (в дополнение к установленному ранее gcc) 2. JAVA. Убедиться, что  javac  -version работает  3. PostgreSQL установлен и  работает pg_config Файлы для разработки (.h файлы) для нашего PostgreSQL также должны быть установлены. Убедиться можно посмотрев что лежит в INCLUDEDIR-SERVER (вывод pg_config). Я раньше компилировал БД из исходников на этой машине, так что у меня эти файлы были. 4. компилятор Maven mvn --version Установка git clone https://github.com/tada/pljava.git или git clone ssh://git@github.com/tada/pljava.git Заходим в директорию pljava и выполняем mvn clean install В результате должны получить: [INFO] PostgreSQL PL/Java ................................ SUCCESS [INFO] PL/Java API ....................................... SUCCESS [INFO] PL/Java backend Java code...