RFR: 8312116: GenShen: make instantaneous allocation rate triggers more timely [v30]

Kelvin Nilsen kdnilsen at openjdk.org
Wed Feb 18 23:06:55 UTC 2026


> After studying large numbers of GC logs with degenerated cycles that have resulted from "late" triggers, we propose the following general improvements:
> 
> 1. Track trends in GC times rather than always using the average GC time plus standard deviation.  In many situations, GC times trend upward due to, for example, increasing amounts of live data that must be marked as a workload builds up its working set of memory.
> 2. Sample allocation rates more frequently than once every 100 ms.
> 3. Track trends in allocation rates.  In some situations, the allocation rate trends upwards due to, for example, the start of a new phase of execution or a spike in client workload.
> 4. When we detect acceleration of allocation rate, predict consumption of memory based on accelerated allocation rates rather than assuming constant allocation rate.

Kelvin Nilsen has updated the pull request incrementally with six additional commits since the last revision:

 - remove _is_generational, _regulator_thread, _control_thread from ShenandoahAdaptiveHeuristics
 - Remove resume_idle_span()
 - Remove arg to compute_headroom_adjustment() and update headroom if soft_capacity is managed
 - ShenandoahAccelertaionSamplePeriod is measured in ms
 - Represent ShenandoahAccelerationSamplePeriod in ms and require all adaptive triggers to wait for some garbage to accumulate
 - Improve formatting and comments

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/29039/files
  - new: https://git.openjdk.org/jdk/pull/29039/files/6bd4c9e1..0b708973

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=29039&range=29
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=29039&range=28-29

  Stats: 114 lines in 8 files changed: 34 ins; 56 del; 24 mod
  Patch: https://git.openjdk.org/jdk/pull/29039.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/29039/head:pull/29039

PR: https://git.openjdk.org/jdk/pull/29039


More information about the shenandoah-dev mailing list