Невозможно создать JVM с включенным -XX:+UseLargePages

У меня есть служба Java, которая в настоящее время работает с кучей 14 ГБ. Я очень хочу попробовать опцию -XX:+UseLargePages, чтобы увидеть, как это может повлиять на производительность системы.Я настроил ОС, как описано Oracle, используя соответствующие значения общей памяти и страниц (их также можно рассчитать с помощью онлайн-инструмента).

Как только ОС настроена, я вижу, что она выделяет ожидаемый объем памяти в виде больших страниц. Однако запуск ВМ с установленным параметром -XX:+UseLargePagesвсегда приводит к одной из следующих ошибок:

Когда -Xms/ -Xmxпочти равно выделению огромных страниц:

    Failed to reserve shared memory (errno = 28). // 'No space left on device'

Когда -Xms/ -Xmxменьше, чем выделению огромных страниц:

    Failed to reserve shared memory (errno = 12). // 'Out of memory'

Я пытался ввести некоторую свободу действий - так далее В системе на 32 ГБ я выделил 24 ГБ общей памяти и огромных страниц для использования с JVM, сконфигурированной с кучей на 20 ГБ, из которых в настоящее время используется только 14 ГБ. Я также проверил, что пользователь, выполняющий JVM, имеет групповые права, соответствующие /proc/sys/vm/hugetlb_shm_group.

Кто-нибудь может подсказать, где я могу ошибаться и что мне делать дальше?

Выделения/использование:

  • -Xms/ -Xmx- 20 ГБ
  • Использованная куча - 14 ГБ
  • /proc/sys/kernel/shmmax- 25769803776 ( 24 ГБ)
  • /proc/sys/vm/nr_hugepages- 12288

Среда:

  • Системная память — 32 ГБ
  • Размер системной страницы — 2048 КБ
  • debian 2.6.26-2-amd64
  • Sun JVM 1.6.0_20-b02

Решение

Спасибо @jfgagneза предоставленный ответ, который привел к решению.В дополнение к /proc/sys/kernel/shmall(указывается как страницы размером 4 КБ), мне пришлось добавить записи в /etc/security/limits.conf, как описано в блоге Томаса. ]. Однако, поскольку мое приложение запускается с использованием jsvc, мне также пришлось продублировать настройки для пользователя root (обратите внимание, что ограничения указаны в КБ):

    root       soft memlock 25165824
    root       hard memlock 25165824
    pellegrino soft memlock 25165824
    pellegrino hard memlock 25165824

Также стоит упомянуть, что настройки можно было быстро протестировать. запустив JVM с аргументом -version:

    java -XX:+UseLargePages -Xmx20g -version

9
задан Community 23 May 2017 в 12:09
поделиться