RFR: 8261492: Shenandoah: reconsider forwardee accesses memory ordering [v8]

Aleksey Shipilev shade at openjdk.java.net
Fri Sep 10 07:44:58 UTC 2021


On Tue, 7 Sep 2021 08:33:40 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> More work: leave `acquire`-in-lieu-of-`consume` in, and special case the heap update paths to dodge the performance penalty of doing so. Seems to work on x86_64 and AArch64.
>
>> @shipilev Hi, I have tested this pull request as well as this pull request + `OrderAccess::release();` on specjbb 2015 on AArch64 (Kunpeng 920). Maybe there is a slight improvement on critical-jOPS? Here is the result.
> 
> Thanks for testing. So explicit barrier does seem to result in a slight bump in critical-jOPS.
> 
> I assume "base" results are this PR? If so, do you have performance results for the current master? In other words, it would be interesting to see three results: baseline (current master), this PR, and this PR + `OrderAccess::release()`.

> @shipilev Yes, “base” means this PR in my previous comment. Here is the result of the current master(i.e. revert all commits in this PR). It seems master performs better, so the cost of “acquire” may be really high as you have said.

(sighs) Thanks for testing. Do you have spare cycles to verify that "acquire" is indeed the culprit for this? It would be simple to check: replace all `mark_acquire()` to just `mark()` in this PR. I am somewhat sure that would not break things very much for the test runs.

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

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


More information about the shenandoah-dev mailing list