RFR: 8272083: G1: Move precise BOT updates in evacuation to concurrent phase [v5]
Yude Lin
duke at openjdk.java.net
Thu Oct 28 15:13:10 UTC 2021
On Mon, 18 Oct 2021 09:32:40 GMT, Yude Lin <duke at openjdk.java.net> 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 three additional commits since the last revision:
>
> - Removed additional thread and card set code
> - Switch to dcq and refinement threads to manage the plab cards
> - Trivial
> Since I have a pretty cleaned up PoC, I think moving forward with that one is probably good:
> master...kstefanj:rnd-explicit-bot-updates
>
> There are some things I need to clean up more before sending out for review. I think I will create a new enhancement for this and we can rename this enhancement to something like:
> Move precise BOT updates in evacuation to concurrent phase
>
> It would be great if you can help with reviewing that change and also test to see that it helps your uses-cases. How does that sound?
Yep, that sounds fair. Will change the name of this issue.
Looking forward to see your updates!
-------------
PR: https://git.openjdk.java.net/jdk/pull/5039
More information about the hotspot-gc-dev
mailing list