Настройка сборщика мусора G1 для пропускной способности, для размера кучи
Настройка для пропускной способности
Политика G1 по умолчанию пытается поддерживать баланс между пропускной способностью и задержкой; однако существуют ситуации, когда желательна более высокая пропускная способность. Помимо уменьшения общего времени паузы, как описано в предыдущих постах, частота пауз может быть уменьшена. Основная идея заключается в том, чтобы увеличить максимальное время паузы с помощью -XX:MaxGCPauseMillis. Эвристика определения размера поколения автоматически адаптирует размер молодого поколения, что напрямую определяет частоту пауз. Если это не приводит к ожидаемому поведению, особенно на этапе восстановления пространства, увеличение минимального размера молодого поколения с помощью -XX:G1NewSizePercent заставит G1 сделать это.
В некоторых случаях -XX:G1MaxNewSizePercent, максимально допустимый размер молодого поколения, может ограничивать пропускную способность, ограничивая размер молодого поколения. Это можно диагностировать, посмотрев итоговый вывод журнала по gc+heap=info. В этом случае совокупный процент регионов Eden и Survivor близок к -XX:G1MaxNewSizePercent проценту от общего числа регионов. В этом случае рассмотрите увеличение XX:G1MaxNewSizePercent.
Другим вариантом увеличения пропускной способности является попытка уменьшить объем конкурентной работы, в частности, для конкурентных обновлений запоминаемого набора часто требуется много ресурсов ЦП. Увеличение -XX:G1RSetUpdatingPauseTimePercent перемещает работу из конкурентной операции в паузу сбора мусора. В худшем случае конкурентные обновления запомненного набора можно отключить, установив -XX:-G1UseAdaptiveConcRefinement -XX:G1ConcRefinementGreenZone=2G -XX:G1ConcRefinementThreads=0. В основном это отключает этот механизм и перемещает всю работу по обновлению запомненного набора в следующую паузу сборки мусора.
Включение использования больших страниц с помощью -XX:+UseLargePages также может улучшить пропускную способность. Обратитесь к документации по вашей операционной системе, чтобы узнать, как настроить большие страницы.
Вы можете минимизировать работу по изменению размера кучи, отключив ее; установите опции -Xms и -Xmx в одно и то же значение. Кроме того, вы можете использовать -XX:+AlwaysPreTouch, чтобы переместить работу операционной системы обратно в виртуальную память с физической памятью во время запуска виртуальной машины. Обе эти меры могут быть особенно желательны для того, чтобы сделать время паузы более последовательным.
Настройка для размера кучи
Как и другие сборщики, G1 стремится измерить кучу так, чтобы время, затрачиваемое на сборку мусора, было ниже отношения, определенного параметром -XX:GCTimeRatio. Отрегулируйте эту опцию, чтобы G1 соответствовал вашим требованиям.
Читайте также:
- Сборщик мусора Garbage-First (G1) в Java VM
- Внутреннее устройство сборщика мусора Garbage-First в Java VM
- Эргономические настройки по умолчанию для сборщика мусора G1
- Настройка сборщика мусора Garbage-First (G1)
- Улучшение производительности сборщика мусора G1 в Java VM
- Тюнинг сборщика мусора G1 на задержку
Комментарии
Отправить комментарий