RFR: 8230109: G1DirtyCardQueueSet should use card counts rather than buffer counts

Stefan Johansson stefan.johansson at oracle.com
Mon Aug 26 08:52:40 UTC 2019

Hi Kim,

> 24 aug. 2019 kl. 06:02 skrev Kim Barrett <kim.barrett at oracle.com>:
> Please review this change to G1DirtyCardQueueSet and its clients to
> consistently use card counts, rather than a mix of card counts and
> buffer counts, to measure pending work and work performed.
> JDK-8227719 already changed DCQS to use card counts internally, but
> retained the buffer count API (estimating based on card counts and the
> buffer size) to reduce the fanout from that change.  This change
> removes that buffer count API and updates clients to consistently use
> card counts.  It also updates some names accordingly.  For example,
> *log_buffer_entry* => *logged_cards*.
> There aren't any _intentional_ behavioral changes here, just unit and
> nomenclature changes.
> A lingering use of buffer counts is DCQS::_processed_buffers_(mut|rs_thread).
> These are only used in the RemSetSummary, to print some statistics.
> I'm planning to address that as part of other work.
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8230109
> Webrev:
> http://cr.openjdk.java.net/~kbarrett/8230109/open.00/ <http://cr.openjdk.java.net/~kbarrett/8230109/open.00/>

I really like the cleanups you’ve done in this area of the code base and this one is no exception. Looks good, just one question around the different G1ConcRefinement-flags (threshold and zones). Couldn’t we make these be number of cards and get rid of the buffers_to_cards conversion in g1ConcurrentRefine.cpp?


> Testing:
> mach5 tier1-3
> Manually examined log output for gcbasher to verify refinement related
> values were consistent with using card units rather than buffer units.

More information about the hotspot-gc-dev mailing list