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
Hi,
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
complicated.
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 :)
Thanks,
Thomas
More information about the hotspot-gc-dev
mailing list