Help processing G1GC logs (visualization tools) - also, mysterious great performance after inexplicable full GC?

Aaron Daubman daubman at gmail.com
Wed Oct 17 20:36:14 PDT 2012


Hi Monica,

Thanks for the reply and very helpful analysis - some followup in-line
below:

I'd like to start by noting that by explicitly setting NewRatio, you are
> basically not letting your nursery adaptively grow (upto 80% of heap) or
> shrink (down to 20% of heap) which is needed by G1 to try to meet its pause
> time goal. In your case, it works out OK though.
>

Could you say some more about NewRatio? The setting I used was one out of
several attempts that seemed to do OK - is this best to not set with G1GC?
(what is and isn't adaptive? it seems that even MarkStackSize is on its way
to becoming adaptive?)



> Anyway, here's what I understand from your log -
>
>    - After your first 4 young collections the heap occupancy crosses 45%
>    of 8G (3.6Gs) and hence you see the "initial mark" piggy-backed on the
>    young collection
>       - The time spent in copying here by itself was 1.1sec (on an
>       average) for the 33GC threads
>    - After plotting your heap occupancy and GC Histo, it seems that your
>    heap occupancy stays around 3.5Gs till the first expansion to ~10Gs and
>    then stays at around 4Gs (Note: with this expansion the new heap occupancy
>    limit is around 4.5Gs) and it seems that you are allocating "humongous
>    objects"
>       - The reason being that the next multitude of initial-marks are not
>       showing Eden reaching its full capacity.
>       - And the assumption is that since the heap is near its Marking
>       Threshold limit, the humongous object allocation is triggering the initial
>       mark.
>    - I also spotted some (528 in number)
>    "concurrent-mark-reset-for-overflow" and when I consulted with John
>    Cuthbertson, he mentioned that we should try to increase the MarkStackSize
>    to alleviate that issue.
>
> Would you please point me to more documentation on this, as well as
suggest how to increase it (and to what)?


>
>
> So quick recommendations based on your application "phases" that we see
> from you GC logs -
>
>    1. Increase your InitiatingHeapOccupancyPercent. 70 could be a safe
>    number for you.
>    2. Increase your MarkStackSize.
>
> How / to what? (what are sane limits?)


>
>    1. Print with GC cause enabled (PrintGCCause)**, so that you can
>    understand what's causing all those pauses.
>
> Adding -XX:+PrintGCCause resulted in the JVM failing to launch with this
error:
---snip---
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
---snip---


>
>    1. Also, looking at your command-line, I wanted to quickly highlight
>    that UseBiasedLocking and UseTLAB are probably enabled by default. Also,
>    UseNUMA will have no effect.
>
>
What would be a good way for me to find this out? (e.g. is there an
up-to-date list of flags and defaults for current JDK versions?)

Thanks again!
     Aaron
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-gc-use/attachments/20121017/57b48265/attachment-0001.html 


More information about the hotspot-gc-use mailing list