RFR: 8327388: GenShen: census during marking is partial [v4]

Y. Srinivas Ramakrishna ysr at openjdk.org
Tue Apr 9 00:45:35 UTC 2024


> There was a bug in the placement of the call to clear stale census data before starting a fresh one for a new marking cycle that marks through the younger generation. This bug resulted in the use of a co-terminal suffix of the census collection, losing all data from the earlier iterations of an iterative collection process that may run up to 5 times.
> 
> We stumbled upon the defect when working on a refactoring task involving separation of generational extensions of Shenandoah from its non-generational version. The (performance) defect has existed since day zero of the adaptive tenuring code in GenShen.
> 
> Along with fixing the defect, an assertion has been added to check the "reasonable completeness" of the census, which came in useful to detect a reset call inadvertently left behind in one place.
> 
> Some ShenandoahAgeCensus APIs have been narrowed and cleaned up a bit, and documentation clarified a bit more.
> 
> **Testing**:
> - [x] GHA : there are crashes unrelated to this change that are being addressed in other PRs
> - [ ] Code pipeline testing : there is a crash, unrelated to this change, that needs investigation
> - [x] SPECjbb
> 
> **Performance**:
> - [x] SPECjbb : the variance in tests appears to fail significance under 2-tailed Mann-Whitney
> - [ ] SPECjbb (patched for wk ref issue) : TBD
> - [ ] Extremem : in progress

Y. Srinivas Ramakrishna has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 16 commits:

 - Merge branch 'master' into clear_census
 - Merge branch 'master' into clear_census
 - Merge branch 'master' into clear_census
 - Remove local_reset of age_census object inadvertently left behind in the
   GLOBAL gen concurrent mark, which was triggering the newly added
   reasonableness assert (yay!).
 - Avoid divide-by-zero.
 - Merge branch 'master' into clear_census
 - Fix word and byte size unit confusion in comparison/assert.
 - Loose verification of "reasonable completeness" of census.
 - Fix release build.
 - Support for verification of census' reasonableness, but no verification
   itself yet.
 - ... and 6 more: https://git.openjdk.org/shenandoah/compare/11295a6a...d5fb72cc

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

Changes: https://git.openjdk.org/shenandoah/pull/403/files
  Webrev: https://webrevs.openjdk.org/?repo=shenandoah&pr=403&range=03
  Stats: 167 lines in 11 files changed: 122 ins; 27 del; 18 mod
  Patch: https://git.openjdk.org/shenandoah/pull/403.diff
  Fetch: git fetch https://git.openjdk.org/shenandoah.git pull/403/head:pull/403

PR: https://git.openjdk.org/shenandoah/pull/403


More information about the shenandoah-dev mailing list