RFR: 8351405: G1: Collection set early pruning causes suboptimal region selection

Ivan Walulya iwalulya at openjdk.org
Mon Mar 17 15:34:53 UTC 2025


On Mon, 17 Mar 2025 11:19:02 GMT, Ivan Walulya <iwalulya at openjdk.org> wrote:

> Hi all,
> 
> Please review this change which aims to reduce spikes in mixed GCs, especially the last mixed-gc in a mixed cycle. Currently, G1 sorts regions identified for collection by reclaimable bytes, then prunes the list removing regions that with the lowest amount of reclaimable bytes. The pruned list is then split into collection groups which are later sorted on gc-efficiency. 
> 
> In the cachestress benchmark, we run into a case where some regions contain onlya  few live objects but having many incoming references from other regions.  These regions very expensive collect (low gc-efficiency).
> 
> This patch improves the pruning process by tracking incoming references to regions during marking. Instead of pruning based on reclaimable bytes alone, we estimate GC efficiency beforehand and prune regions with the worst GC efficiency.
> 
> This reduces the spikes in gc pause time as shown for cachestress benchmark in the image below. 
> 
> ![mixed-gc](https://github.com/user-attachments/assets/740fb51d-eb20-4946-bf90-4eef23afe2e4)
> 
> 
> Testing: Tier 1-3.

> _Mailing list message from [Kirk Pepperdine](mailto:kirk at kodewerk.com) on [hotspot-gc-dev](mailto:hotspot-gc-dev at mail.openjdk.org):_
> 
> Hi Ivan,
> 
> Not a review but this change looks good. I?ve also noted that the last mixed collection in the set always takes longer than the previous mixed. Does this patch address that spike?
> 
> Kind regards, Kirk

Thanks for taking a look. Yes this patch is meant to address the spikey "last mixed collection", at least reduce the spikes if not eliminating them.

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

PR Comment: https://git.openjdk.org/jdk/pull/24076#issuecomment-2729967241


More information about the hotspot-gc-dev mailing list