Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8298642

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

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 20
    • 19, 20
    • hotspot
    • gc
    • b29
    • linux

        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. We pass 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.

              ngasson Nick Gasson
              ngasson Nick Gasson
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: