Withdrawn: 8272807: Permit use of memory concurrent with pretouch
Kim Barrett
kbarrett at openjdk.java.net
Fri Oct 1 00:32:41 UTC 2021
On Thu, 2 Sep 2021 18:33:56 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:
> Note that this PR replaces the withdrawn https://github.com/openjdk/jdk/pull/5215.
>
> Please review this change which adds os::touch_memory, which is similar to
> os::pretouch_memory but allows concurrent access to the memory while it is
> being touched. This is accomplished by using an atomic add of zero as the
> operation for touching the memory, ensuring the virtual location is backed
> by physical memory while not changing any values being read or written by
> other threads.
>
> While I was there, fixed some other lurking issues in os::pretouch_memory.
> There was a potential overflow in the iteration that has been fixed. And if
> the range arguments weren't page aligned then the last page might not get
> touched. The latter was even mentioned in the function's description. Both
> of those have been fixed by careful alignment and some extra checks. The
> resulting code is a little more complicated, but more robust and complete.
>
> Similarly added TouchTask, which is similar to PretouchTask. Again here,
> there is some cleaning up to avoid potential overflows and such.
>
> - The chunk size is computed using the page size after possible adjustment
> for UseTransparentHugePages. We want a chunk size that reflects the actual
> number of touches that will be performed.
>
> - The chunk claim is now done using a CAS that won't exceed the range end.
> The old atomic-fetch-and-add and check the result, which is performed by
> each worker thread, could lead to overflow. The old code has a test for
> overflow, but since pointer-arithmetic overflow is UB that's not reliable.
>
> - The old calculation of num_chunks for parallel touching could also
> potentially overflow.
>
> Testing:
> mach5 tier1-3
This pull request has been closed without being integrated.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5353
More information about the hotspot-dev
mailing list