RFR: 8314599: [GenShen] Couple adaptive tenuring and generation size budgeting [v3]

Kelvin Nilsen kdnilsen at openjdk.org
Tue Oct 14 16:57:55 UTC 2025


On Wed, 8 Oct 2025 18:01:55 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> I'm still maybe a bit confused.  Is it get_untenurable_live_bytes_in_young_regions()?  Are we distinguishing?
>> 
>> So we have a total of N live bytes within young regions that have been placed into the collection set.  We expect that P bytes (P < N) will be promoted, and the remaining S bytes (S + P == N) will be evacuated to "survivor space" within young.
>> 
>> Does get_live_bytes_in_untenurable_regions() equal P + S?
>
> The _tenure_ here refers to the regions the objects reside in, not the objects themselves. `get_live_bytes_in_tenurable_regions` is the sum of live bytes in all regions with an age above the tenuring threshold (we expect to promote _all_ of these, though some promotions may fail). It's complement `get_live_bytes_in_untenurable_regions` is the sum of live bytes in all regions with an age less than the tenuring threshold (we expect to promote _some_ of these, but we don't really know how many). This was part of the reason I wanted to rename these methods. They  represent the provenance of the objects in the collection set, not necessarily the regions they will be evacuated to.

> get_live_bytes_in_untenurable_regions is the sum of live bytes in all regions with an age less than the tenuring 
> threshold (we expect to promote some of these, but we don't really know how many)

Given that the promotion potential is determined by mark-time age census, I was thinking we do know how many of the bytes in untenurable_regions we "expect to promote".  Isn't this just total_promotable_bytes - get_live_bytes_in_tenurable_regions()?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27632#discussion_r2429856399


More information about the shenandoah-dev mailing list