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 поддерживает несколько операционных систем, поэтому объём необходимого тестирования возрастёт, если это поведение будет принято во всех операционных системах.