RFR: 8327388: GenShen: census during marking is partial
Kelvin Nilsen
kdnilsen at openjdk.org
Wed Mar 20 19:31:32 UTC 2024
On Tue, 5 Mar 2024 17:43:20 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:
> 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
Thanks. LGTM.
-------------
Marked as reviewed by kdnilsen (Committer).
PR Review: https://git.openjdk.org/shenandoah/pull/403#pullrequestreview-1949951717
More information about the shenandoah-dev
mailing list