openjdk.ruOpenJDK на русском

JEP 163: Enable NUMA Mode by Default When Appropriate

Включение режима NUMA по умолчанию, когда это уместно

ОтветственныйJesper Wilhelmsson
ТипFeature
ОбластьImplementation
СтатусDraft
Компонентhotspot / gc
Обсуждениеhotspot dash gc dash dev at openjdk dot java dot net
ТрудоёмкостьXS
ДлительностьS
Создан2012/08/15 20:00
Обновлён2020/04/29 04:21
Задача8046153

Аннотация

Чтобы улучшить производительность на оборудовании NUMA без дополнительной настройки, флаг -XX:+UseNUMA включается по умолчанию, когда JVM обнаруживает, что работает на компьютере с архитектурой NUMA.

Мотивация

Системы с архитектурой NUMA сейчас широко распространены, но значения по умолчанию JVM не были обновлены с учётом этого. На компьютере NUMA приложения, как правило, работают быстрее при правильном NUMA-поведении, которое обеспечивают уже существующие возможности JVM, чем если полагаться на настройки операционной системы по умолчанию. Без правильного NUMA-поведения производительность приложений может сильно различаться от запуска к запуску просто из-за размещения памяти, которое задают настройки операционной системы по умолчанию.

Описание

Цель этого изменения — задействовать существующую возможность JVM, которая включается параметром -XX:+UseNUMA: при старте JVM топология NUMA определяется с помощью API операционной системы, и эта поддержка включается без того, чтобы пользователю приходилось явно добавлять -XX:+UseNUMA к флагам.

Чтобы снизить влияние на небольшие приложения, для включения NUMA потребуется минимальный размер кучи. Ожидается, что разумным пределом будет 2 ГБ. Для задания этого значения появится новый develop-флаг.

Помимо работы, необходимой для определения топологии NUMA и установки флагов, этот JEP не предполагает никакой дальнейшей работы по изменению или расширению существующих возможностей NUMA.

Тестирование

Это изменение можно протестировать стандартными бенчмарками и наборами тестов серверов приложений как на системах NUMA, так и на системах с одним узлом, чтобы убедиться в отсутствии непредусмотренных побочных эффектов.

Риски и допущения

Исходный код JDK поддерживает несколько операционных систем, поэтому объём необходимого тестирования возрастёт, если это поведение будет принято во всех операционных системах.