Request for review (S): 7166894 Add gc cause to Full GC logging for all collectors

Bengt Rutisson bengt.rutisson at oracle.com
Tue May 8 14:18:07 UTC 2012


Hi again everyone,

It seems like the feedback on hotspot-gc-use is that we should add the 
GC cause to all collectors but also provide a switch to turn this 
logging off.

Here is an updated webrev:
http://cr.openjdk.java.net/~brutisso/7166894/webrev.03/

Changes:
* GC cause logged for all collectors
* Added the flag -XX:-PrintGCCause to turn the new information off
* Refactored the string concatenation code into a helper class

I guess I will also have to update the CR to now reflect the fact that 
this does not just concern full GCs anymore.

Thanks,
Bengt

On 2012-05-07 23:10, Bengt Rutisson wrote:
>
> Hi Kris,
>
> Thanks for looking at this!
>
> Good point regarding CMS. I guess I am a bit concerned about changing 
> that since it might start breaking more parsers. I'll send a question 
> out on the hotspot-gc-use mailing list to get some feedback.
>
> If we do go for adding this information to CMS we can probably also 
> take the chance of adding it to all the young GCs.
>
> I looked at the log sample you referred to. It looks like you were 
> logging more details about exactly why a GC was triggered. That is 
> probably a good idea, but for now I think we should settle for just 
> the text message describing the cause.
>
> Thanks again for looking at this,
> Bengt
>
> On 2012-05-07 15:19, Krystal Mok wrote:
>> Hi Bengt,
>>
>> FYI, I did something similar to CMS as well, covered by a new flag 
>> called "PrintGCReason" in my build.
>> It's primitive, compared with your change. I was striving to keep the 
>> log within the brackets just as they were, and instead print extra 
>> information before the opening bracket, on a separate line. The 
>> parsing tool we use tend to ignore the lines it couldn't recognize, 
>> so doing it this way interrupted the tool the least.
>>
>> An example of the output can be found here [1], page 42. The 
>> motivation to add the extra logging was to track down a mysterious 
>> behavior in CMS that it keep doing back-to-back collections, without 
>> much gains, as explained in [1]. I needed to know why it was 
>> triggered. Some of our applications actually liked the extra logging, 
>> so it remained in the code base after the bug was found.
>>
>> Anyway, I like the idea of getting more info out of GC logs, in a 
>> uniform way.
>> Would you mind adding the extra logging to CMS, too?
>>
>> - Kris
>>
>> [1]: http://www.slideshare.net/RednaxelaFX/jvm-taobao
>>
>> On Mon, May 7, 2012 at 8:31 PM, Bengt Rutisson 
>> <bengt.rutisson at oracle.com <mailto:bengt.rutisson at oracle.com>> wrote:
>>
>>
>>     Hi all,
>>
>>     Can I get a couple of reviews of this simple change:
>>     http://cr.openjdk.java.net/~brutisso/7166894/webrev/
>>     <http://cr.openjdk.java.net/%7Ebrutisso/7166894/webrev/>
>>
>>     Background:
>>     I recently pushed a similar fix for G1 as "7163848: G1: Log GC
>>     Cause for a GC". That fix adds the GC cause information to all G1
>>     GCs. It was discussed if we should do this for all collectors and
>>     we came to the conclusion that it would be fairly safe to do it
>>     for all Full GCs. These log messages already contain the text
>>     "(System)" or "(System.gc())" when a System.gc() happens and
>>     PrintGCDetails are enabled. Now they will always contain the
>>     cause in parenthesis, even when only PrintGC is enabled.
>>     Hopefully most parsing will work with this.
>>
>>     Thanks,
>>     Bengt
>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20120508/e4e51d38/attachment.htm>


More information about the hotspot-gc-dev mailing list