LargePageHeapSizeThreshold активирует UseTransparentHugePage в JVM? - PullRequest
0 голосов
/ 28 сентября 2019

Недавно я заметил, что в дистрибутивах Linux у нас есть огромные страницы памяти, которые можно установить на всегда , чтобы система могла постоянно использовать огромные страницы, madvise , чтобы позволитьприложения, чтобы определить, хотят ли они использовать огромные страницы, или никогда .

Эта возможность в несколько раз может снизить производительность приложения.

В JVM у нас есть два параметра, которые могутбыть активирован, чтобы контролировать эту возможность ОС.

LargePageHeapSizeThreshold : если это значение меньше MaxHeapSize JVM использует большой размер страницы.

UseTransparentHugePages : этологическое значение, которое может быть истинным или ложным.

Мой вопрос заключается в том, что установка LargePageHeapSizeThreshold на значение меньше MaxHeapSize активирует огромную страницу, даже если UseTransparentHugePages = false ?

Включает ли установка большого размера страницы в всегда в linux активация JVM для использования большой страницы, даже если UseTransparentHugePages = false ?

1 Ответ

0 голосов
/ 29 сентября 2019

устанавливает значение LargePageHeapSizeThreshold меньше, чем MaxHeapSize, активирует огромную страницу, даже если UseTransparentHugePages = false?

Нет, работает наоборот : если максимальный размер кучи меньше LargePageHeapSizeThreshold, большие страницы по умолчанию отключены.

Однако это относится только к виртуальной машине-клиенту, у которой нет компилятора C2 или Graal (довольно необычный случайВ наше время).Таким образом, в самых популярных версиях JVM флаг LargePageHeapSizeThreshold никак не влияет.

Активирует ли установка огромного размера страницы всегда в linux активировать JVM для использования большой страницы, даже если UseTransparentHugePages = false?

Я предполагаю, что вы имеете в виду следующий параметр:

echo always >/sys/kernel/mm/transparent_hugepage/enabled

В этом режиме Linux пытается выделить огромные страницы для анонимных отображений памяти (включая Java Heap и Code Cache) даже без приложения.зная об огромных страницах.Так что да - JVM может извлечь выгоду из этой опции, даже если она сама не заботится об огромных страницах.

С другой стороны, не гарантируется, что Java Heap всегда будет использовать огромные страницы в этом режиме.Если Linux не удастся выделить огромные страницы для области памяти (например, из-за фрагментации), он молча вернется к использованию обычных страниц.

...