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 shenandoah-dev
mailing list