RFR: 8272083: G1: Record iterated range for BOT performance during card scan [v3]
Thomas Schatzl
tschatzl at openjdk.java.net
Thu Sep 16 08:41:47 UTC 2021
On Mon, 13 Sep 2021 04:44:51 GMT, Yude Lin <github.com+16811675+linade at openjdk.org> wrote:
>> A fix to the problem in 8272083 is to use a per-worker pointer to indicate where the worker has scanned up to, similar to the _scanned_to variable. The difference is this pointer (I call it _iterated_to) records the end of the object and _scanned_to records the end of the scan. Since we always scan with increasing addresses, the end of the latest object scanned is also the address where BOT has fixed up to. So we avoid having to fix below this address when calling block_start(). This implementation approximately reduce the number of calls to set_offset_array() during scan_heap_roots() 2-10 times (in my casual test with -XX:G1ConcRefinementGreenZone=1000000).
>>
>> What this approach not solving is random access to BOT. So far I haven't found anything having this pattern.
>
> Yude Lin has updated the pull request incrementally with one additional commit since the last revision:
>
> Resolve TODOs
Hi linade,
just fyi, I am aware that you posted another change for this, but currently I am a too busy looking into nontrivial PRs with some pre/post-JDK17 GA work. I started some internal specjbb2015 runs where critical-jops look like they improved, i.e. I noticed single scores higher than usual, but also with higher than usual variance. This was kind of expected according to your comments, but this just means we should just look into this some more.
Thomas
-------------
PR: https://git.openjdk.java.net/jdk/pull/5039
More information about the hotspot-gc-dev
mailing list