RFR: 8272138: ZGC: Adopt relaxed ordering for self-healing [v5]

Hao Tang github.com+7947546+tanghaoth90 at openjdk.java.net
Fri Aug 13 09:33:27 UTC 2021


On Wed, 11 Aug 2021 14:43:46 GMT, Albert Mingkun Yang <ayang at openjdk.org> wrote:

>> src/hotspot/share/gc/z/zForwarding.inline.hpp line 141:
>> 
>>> 139:   // Make sure that object copy is finished
>>> 140:   // before forwarding table installation
>>> 141:   OrderAccess::release();
>> 
>> Can we replace it by `OrderAccess::storestore()`? I think LoadStore constraint in `OrderAccess::release()` is not required here.
>> Furthermore, is it possible to relax `Atomic::load_acquire` in `ZForwarding::at`?
>
> I believe further relaxing is possible, but it's unclear whether there will be observable perf improvement. Could be interesting to see some numbers before drawing any conclusion.

@albertnetymk Thanks for your suggestion.
> Can we replace it by `OrderAccess::storestore()`?

`OrderAccess::release()` has the same implementation as `OrderAccess::storestore()` on AArch64. Therefore, replacing `OrderAccess::release()` does not yield perf improvement.
I found an interesting pull request related to StoreStore: https://github.com/openjdk/jdk/pull/427 (not integrated yet). I am not aware that this patch can make any improvement.

> Furthermore, is it possible to relax `Atomic::load_acquire` in `ZForwarding::at`?

My initial experiment suggests >5% concurrent mark time reduction using `Atomic::load` instead.
I am still working on checking the correctness of the relaxation.

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

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



More information about the hotspot-gc-dev mailing list