RFR: 8272807: Permit use of memory concurrent with pretouch

Aleksey Shipilev shade at openjdk.java.net
Fri Feb 4 11:11:05 UTC 2022


On Fri, 4 Feb 2022 10:47:18 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

> [Trying again, after a couple previous proposals.]
> 
> Please review this change to os::pretouch_memory to permit use of the memory
> being pretouched concurrently with the pretouch operation.  This will allow
> future changes that can make use of such overlap.
> 
> Testing:
> mach5 tier1-3 with -XX:+AlwaysPreTouch.
> 
> Verified no performance impact by comparing startup times with Epsilon GC and
> -XX:+AlwaysPretouch on a large enough heap that the pretouch takes a
> significant amount of time.  Tested on both linux-x64 and linux-aarch64.
> 
> None of these test concurrent use; that will wait for future changes that use
> the new feature.

Looks okay to me, with minor nits.

src/hotspot/share/runtime/os.cpp line 1758:

> 1756: void os::pretouch_memory(void* start, void* end, size_t page_size) {
> 1757:   assert(is_power_of_2(page_size), "page size misaligned: %zu", page_size);
> 1758:   assert(page_size >= sizeof(int), "page size too small: %zu", page_size);

`SIZE_FORMAT` instead of `%zu`.

src/hotspot/share/runtime/os.cpp line 1771:

> 1769:       Atomic::add(reinterpret_cast<int*>(cur), 0, memory_order_relaxed);
> 1770:       if (cur == last) break;
> 1771:     }

Took me some time to check the loop. Suggestion:


    do {
      Atomic::add(reinterpret_cast<int*>(cur), 0, memory_order_relaxed);
      cur += page_size;
    } while (cur < last);

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

PR: https://git.openjdk.java.net/jdk/pull/7343


More information about the hotspot-runtime-dev mailing list