[jdk20] Integrated: 8298642: ParallelGC -XX:+UseNUMA eden spaces allocated on wrong node

Nick Gasson ngasson at openjdk.org
Wed Dec 21 11:03:55 UTC 2022


On Wed, 14 Dec 2022 14:23:01 GMT, Nick Gasson <ngasson at openjdk.org> wrote:

> I noticed this when implementing JDK-8298482.  If UseAdaptiveSizePolicy and/or UseAdaptiveNUMAChunkSizing are enabled and UseLargePages is *not* enabled, part of the eden spaces managed by MutableNUMASpace end up bound to the wrong node.  This seems to be a regression caused by JDK-8283935, specifically the addition of
> 
> 
>   set_page_size(alignment());
> 
> 
> to MutableNUMASpace::initialize().  Previously the page size would have been equal to os::vm_page_size() unless UseLargePages was enabled.
> 
> In bias_region() we call os::free_memory() to uncommit a range of pages so that they can be later allocated on a different node, passing page_size() as the alignment_hint argument. However on Linux this does nothing if alignment_hint is greater than os::vm_page_size() and THP is not enabled, so the pages always remain bound to their original node (see os::pd_free_memory() in os_linux.cpp).
> 
> I think the solution here is to pass os::vm_page_size() as the alignment_hint when UseLargePages is disabled.
> 
> I tested SPECjbb on a dual-socket AArch64 system with -XX:+UseParallelGC -XX:+UseNUMA but otherwise default options and critical-jOPS improved by about 12% (averaged over several runs).

This pull request has now been integrated.

Changeset: 81933b7a
Author:    Nick Gasson <ngasson at openjdk.org>
URL:       https://git.openjdk.org/jdk20/commit/81933b7a927c1579eda7b6678901e5d2bc1c1aed
Stats:     5 lines in 1 file changed: 3 ins; 0 del; 2 mod

8298642: ParallelGC -XX:+UseNUMA eden spaces allocated on wrong node

Reviewed-by: tschatzl, ayang

-------------

PR: https://git.openjdk.org/jdk20/pull/33


More information about the hotspot-gc-dev mailing list