RFR: 8036025 - Sort the freelist in order to shrink the heap
Jesper Wilhelmsson
jesper.wilhelmsson at oracle.com
Tue Mar 18 11:51:47 UTC 2014
Hi,
Recent changes in the GC code lead to non-trivial merge conflicts. I have
updated the change and here is a new webrev:
http://cr.openjdk.java.net/~jwilhelm/8036025/webrev.3/
The change itself should be the same but several name changes and cleanups in
related code was made that caused the conflicts.
Thanks,
/Jesper
Jesper Wilhelmsson skrev 4/3/14 02:14:
> Hi,
>
> I'm looking for reviews for this change in the freelist handling in G1.
>
> The problem is basically that if there are old regions that G1 choses not to
> collect or humongous regions near the top of the heap, G1 can not shrink the
> heap even though there is plenty of free space below these regions. Keeping the
> freelist sorted and trying to allocate old and humongous regions from the bottom
> of the heap while allocating young regions from the top of the heap will reduce
> the risk of encountering regions undesirable to evacuate in the top of the heap.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8036025
>
> Webrev: http://cr.openjdk.java.net/~jwilhelm/8036025/webrev/
>
> As performance testing we have run internal WLS benchmarks with good results.
> Keeping the regions sorted did not show any performance hit in these benchmarks.
>
> I also ran SPECjbb2005 for sanity and got good results:
>
> GC pauses without sorting:
> Count: 4673 Min: 0.0041562 Max: 0.0661340 Mean: 0.0324
>
> GC pauses with sorting:
> Count: 4116 Min: 0.0039851 Max: 0.0657399 Mean: 0.0323
>
> There are fewer GCs and the average pause time is about the same. There were two
> full GCs in each run. The heap size was smaller for a long time when sorting the
> freelist. Near the end of the benchmark it grew to the same size as the number
> of warehouses increased.
>
> I also look at the "Free CSet" time since this is where the insertion sort is
> happening to keep the list sorted.
>
> Without sorting: Min: 0.0 Max: 2.2 Mean: 1.57
> With sorting: Min: 0.0 Max: 2.4 Mean: 1.73
> With sorting 2:nd run: Min: 0.0 Max: 1.9 Mean: 1.52
>
> What at first seemed as a slight regression is actually within the noise interval.
>
> The total SPECjbb score was improved with about 2%.
>
> Thanks,
> /Jesper
>
More information about the hotspot-gc-dev
mailing list