RFR: JDK-8297796 GenShen: instrument the remembered set scan [v12]
Y. Srinivas Ramakrishna
ysr at openjdk.org
Tue Dec 20 00:27:17 UTC 2022
On Mon, 19 Dec 2022 23:54:52 GMT, William Kemper <wkemper at openjdk.org> wrote:
>> 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 65 commits:
>>
>> - Merge branch 'master' into JVM-1264-dependent
>> - Add a previously missed ticket#. Doing it here rather than in parent to
>> avoid an otherwise unnecessary re-review touchpoint.
>> - Merge branch 'stats_merge' into JVM-1264-dependent
>> - Merge branch 'master' into stats_merge
>> - jcheck space fix
>> - Fix compiler error on windows.
>> - Fix some tier1 tests.
>> - Remove an unnecessary include, fix some type incorrectness.
>> - Merge branch 'JVM-1264' into JVM-1264-dependent
>> - Merge branch 'master' into JVM-1264
>> - ... and 55 more: https://git.openjdk.org/shenandoah/compare/bbd4ef34...9c5c741f
>
> src/hotspot/share/gc/shenandoah/shenandoah_globals.hpp line 548:
>
>> 546: "Enable statistics collection related to clean & dirty cards") \
>> 547: \
>> 548: notproduct(int, ShenandoahCardStatsLogInterval, 50, \
>
> This isn't really cycles right? It's number of workers that completed a card scan?
It's a number of card-scan rounds, independently for either RS scan or Update refs, where a round consists of a RS cycle or Update refs cycle by however many worker threads participate. The logging is oblivious to workers, but uses whatever number was used.
Let me attach an example log in the PR summary to illusrate, but roughly speaking, it's as follows:
<start of remembered set (RS) scan>
<end of remembered set scan>
<log of card stats for this round of RS by worker #1>
...
<log of card stats for this round by RS worker #k1>
...
<start of update refs (UR) scan>
<end of update refs scan>
<log of card stats for this round of UR by worker #1>
...
<log of card stats for this round of UR by worker #k2>
...
Every `ShenandoahCardStatsLogInterval` such round, we also produce a cumulative historical log across all workers and rounds to date, but one each for RS and UR.
Let me know if that makes sense, and if "cycles" makes sense in the documentation for what I have called "rounds" above.
-------------
PR: https://git.openjdk.org/shenandoah/pull/176
More information about the shenandoah-dev
mailing list