JDK-8046153 : JEP 163: Enable NUMA Mode by Default When Appropriate
  • Type: JEP
  • Component: hotspot
  • Sub-Component: gc
  • Priority: P4
  • Status: Draft
  • Resolution: Unresolved
  • Submitted: 2012-08-15
  • Updated: 2020-04-29
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Description
Summary
-------

To improve the out-of-the-box performance on NUMA hardware, enable the
`-XX:+UseNUMA` flag by default when the JVM detects it is running on a
NUMA style computer.


Motivation
----------

NUMA style systems are now common, but the JVM defaults have not been
updated to reflect it. Applications generally get better performance with
proper NUMA behavior, aided by the existing JVM capabilities, rather than
relying on operating system defaults when running on a NUMA
computer. Without proper NUMA behavior, applications may experience large
run-to-run variation simply due to the memory layout given by operating
system defaults.


Description
-----------

The intent of this change is to enable the existing JVM capability turned
on by the `-XX:+UseNUMA` option by using operating system APIs to detect
the NUMA topology at JVM boot time and turn on this support without the
user having to explicitly add `-XX:+UseNUMA` to the flags.

To lower the impact on small applications there will be a minimum heap
size required to enable NUMA. A reasonable limit is expected to be
2GB. There will be a new develop flag to set this value.

Other than the work required to detect the NUMA topology and set the
flags, no further work to modify or extend existing NUMA features is
intended by this JEP.


Testing
-------

This change can be tested by standard benchmarks and application server
test suites, on both NUMA and single node systems to ensure there are no
unintended side effects.


Risks and Assumptions
---------------------

The JDK source base supports several operating systems, so that increases
the amount of testing required if all the operating systems will adopt
this behavior.