RFR: JDK-8297796 GenShen: instrument the remembered set scan [v12]

Y. Srinivas Ramakrishna ysr at openjdk.org
Tue Dec 20 00:36:14 UTC 2022


On Tue, 20 Dec 2022 00:24:53 GMT, Y. Srinivas Ramakrishna <ysr at openjdk.org> wrote:

>> 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)
> 
> (og 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 rounds, in addition to the per round, per worker stats like we did above, we also produce cumulative statistics across all workers and all 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.

See https://github.com/openjdk/shenandoah/pull/176#issuecomment-1342840919.

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

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


More information about the shenandoah-dev mailing list