RFR: 8272807: Permit use of memory concurrent with pretouch

Aleksey Shipilev shade at openjdk.java.net
Wed Aug 25 12:52:23 UTC 2021

On Mon, 23 Aug 2021 11:35:18 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

> Please review this change to os::pretouch_memory to permit use of the memory
> concurrently with the pretouch operation.  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 the application.
> 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.
> This change doesn't make use of the new capability; I have some other
> changes in development to do that.
> Testing:
> mach5 tier1-3.
> I've been using this change while developing uses of the new capability.
> Performance testing hasn't found any regressions related to this change.

Thinking some more about this. The conflict I described must be fine, as strong CAS implementations are supposed to guard from the spurious violations like these. Stray ADD(0) (true sharing) is not very different from the stray update to the same cache line (false sharing) in this scenario.


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

More information about the hotspot-runtime-dev mailing list