RFR (XS) 8230425: Shenandoah forces +UseNUMAInterleaving even after explicitly disabled

Aleksey Shipilev shade at redhat.com
Mon Sep 2 08:47:42 UTC 2019


On 9/2/19 10:31 AM, Aleksey Shipilev wrote:
> Bug:
>   https://bugs.openjdk.java.net/browse/JDK-8230425
> 
> Shenandoah enables NUMA when possible, but it also unconditionally sets UseNUMAInterleaving, which
> is not correct and overrides user setting.
> 
> Fix:
> 
> diff -r a333fdeb8de0 src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp
> --- a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp   Fri Aug 30 09:37:41 2019 +0200
> +++ b/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp   Mon Sep 02 10:29:49 2019 +0200
> @@ -65,5 +65,7 @@
>    if (FLAG_IS_DEFAULT(UseNUMA)) {
>      FLAG_SET_DEFAULT(UseNUMA, true);
> -    FLAG_SET_DEFAULT(UseNUMAInterleaving, true);
> +    if (FLAG_IS_DEFAULT(UseNUMAInterleaving)) {
> +      FLAG_SET_DEFAULT(UseNUMAInterleaving, true);
> +    }
>    }

Even better, after observing that Arguments::adjust_after_os does enable UseNUMAInterleaving once
OS-specific code had chance to act:

diff -r a333fdeb8de0 src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp   Fri Aug 30 09:37:41 2019 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp   Mon Sep 02 10:38:49 2019 +0200
@@ -60,11 +60,9 @@
   }

   // Enable NUMA by default. While Shenandoah is not NUMA-aware, enabling NUMA makes
-  // storage allocation code NUMA-aware, and NUMA interleaving makes the storage
-  // allocated in consistent manner (interleaving) to minimize run-to-run variance.
+  // storage allocation code NUMA-aware.
   if (FLAG_IS_DEFAULT(UseNUMA)) {
     FLAG_SET_DEFAULT(UseNUMA, true);
-    FLAG_SET_DEFAULT(UseNUMAInterleaving, true);
   }

Testing: more manual testing on NUMA-enabled machines

-- 
Thanks,
-Aleksey




More information about the hotspot-gc-dev mailing list