RFR: 8367473: Shenandoah: Make the detailed evacuation metrics a runtime diagnostic option

William Kemper wkemper at openjdk.org
Fri Sep 12 22:19:18 UTC 2025


On Thu, 11 Sep 2025 22:43:23 GMT, William Kemper <wkemper at openjdk.org> wrote:

> Non-product builds currently have a feature to produce detailed metrics about evacuations (number of objects, number of bytes, split out by age (young, old, promotion) and thread (mutator or worker). This change makes this feature accessible in release builds as a diagnostic option.

Converted to draft while we wait for performance evaluations to complete.

This chart shows the distribution (as a box plot) of all concurrent evacuation times across all benchmarks and platforms for the past 24 hours (approximately 15K data points in total). Each facet of the chart shows 3 configurations:
* top: The diagnostic option in this PR is enabled
* middle: The diagnostic option is disabled
* bottom: The baseline - this behavior does not exist in the product build.

The first facet shows the effect of this option on _global_ GCs in Genshen. The second facet shows the effect of this option on _global_ GCs in Shenandoah. The last option shows the effect on _young_ evacuation in GenShen. The performance impact of testing if the option is enabled seems minimal for Genshen. The impact when the option is enabled is small, but notable. I cannot explain the outlier (p100) for Genshen's young collections on master. 

<img width="1830" height="650" alt="image" src="https://github.com/user-attachments/assets/04b46996-9bf8-4dea-a208-85960a9fd942" />

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

PR Comment: https://git.openjdk.org/jdk/pull/27238#issuecomment-3282858675
PR Comment: https://git.openjdk.org/jdk/pull/27238#issuecomment-3286899661


More information about the hotspot-gc-dev mailing list