RFR 8215523: jstat reports incorrect values for OU for CMS GC

Thomas Schatzl thomas.schatzl at oracle.com
Mon Aug 12 03:34:46 UTC 2019


On 11.08.19 16:25, Poonam Parhar wrote:
> Hello,
> The fix for this bug had to be backed out with '8227178: Backout of 
> 8215523' because it had caused timeout failures for some of the CMS 
> tests. Those failures get  resolved by adding the following check before 
> calling recalculate_used_stable() in CompactibleFreeListSpace::allocate():
> 1387 // During GC we do not need to recalculate the stable used value for
> 1388 // every allocation in old gen. It is done once at the end of GC 
> instead
> 1389 // for performance reasons.
> 1390 if (!CMSHeap::heap()->is_gc_active()) {
> 1391 recalculate_used_stable();
> 1392 }
> 1393

   looks good.

For others: the problem with the original 8215523 has been that the 
additional verification in used() (used in recalculate_used_stable()) is 
very slow; since in some cases the heap is resized quite often during 
GC, this caused a significant slowdown.

This is the "point-fix" to workaround this problem as the comment 
indicates. The alternative would have been making a special path for 
old-gen allocations during GC I think. This has been considered as too 

Poonam tested the change in some small reproducer, causing no more 
significant slowdowns in debug mode (and none in product anyway).

We performed multiple hs-tier1-7 runs with no more failures due to 
timeouts that we had seen earlier.

> Please review the updated webrev:
> http://cr.openjdk.java.net/~poonam/8215523/webrev.02/

Some procedural issue: this change must be pushed under a new CR that 
still needs to be created, called "[Redo] jstat reports incorrect values 
for OU for CMS GC", linking 8215523. Thanks :)


More information about the hotspot-gc-dev mailing list