gclog improvements

Jon Masamitsu Jon.Masamitsu at Sun.COM
Tue Oct 14 20:19:08 UTC 2008

There's a project to define a common standard for
logging in J2SE and J2EE.  If that happens then
there is a second project to make the VM logging
fit into that same infrastructure.  One of the
hopes was that an application could see logs
from the VM through a well defined API.

On 10/14/08 11:48, kirk wrote:
> Hi Jon,
> Ok, now I'm scared ;-) What do you mean by "work on that logging 
> overhaul"? I've got a bit invested in the status quo and while I'm all 
> for an overhaul, it would be nice to understand what is on the table.
> Regards,
> Kirk
> Jon Masamitsu wrote:
>> On 10/14/08 09:42, kirk wrote:
>>> Hi,
>>> IBM does log rollovers and IMHO it's a reasonable feature request. It 
>>> makes it easier to leave verbose gc turned on in production.
>> It is a reasonable feature and it would
>> probably fit into an overhaul of the logging
>> infrastructure that is on the to-do list
>> of the runtime guys.  However, there is no one
>> available to work on that logging overhaul
>> so I would not be too hopeful.
>>> Regards,
>>> Kirk
>>> Rainer Jung wrote:
>>>> Tony Printezis schrieb:
>>>>>> Unfortunately the gclog gets overwrittten each time the JVM starts 
>>>>>> due
>>>>>> to the way the file gets opened. So in order to keep the files people
>>>>>> need to add rotation commands to their start scripts. Often this 
>>>>>> doesn't
>>>>>> happen and especially when emergency restarts where needed, the old
>>>>>> gclog is gone.
>>>>>> Any plans for changing this? Or maybe even adding log file 
>>>>>> rotation to
>>>>>> the gclog?
>>>>> We don't have any immediate plans for doing this. Regarding the log 
>>>>> file
>>>>> getting overwritten, typically customers launch the JVM from a script
>>>>> and it's easy to create a unique GC log file name from a script 
>>>>> (append
>>>>> the start time, pid, or something like that). So, that's an easy issue
>>>>> to solve...
>>>> Yes, but I do now see a lot of customers running their midrange server
>>>> apps on Windows. Those are of course services started by Java service
>>>> wrappers, which are not themselves easily scriptable. Especially
>>>> automatic restarts triggered by built-in watchdogs do not have any
>>>> scripting mechanism.
>>>>>> Furthermore: Until now there is no event based model of monitoring 
>>>>>> the
>>>>>> GC and Memory data. All methods apart from logging are based on a 
>>>>>> pull
>>>>>> model, that retrieves information in regular intervals. The most
>>>>>> important information does not exist in regular intervals, but 
>>>>>> instead
>>>>>> immediately after a GC. It would be nice to have some event based 
>>>>>> model
>>>>>> (e.g. like in JVMTI), that allows to track the same data as the gc
>>>>>> logging, without using the historically motivated gclog file format.
>>>>> There's a trade-off. I don't like the pull method myself, given 
>>>>> that it
>>>>> can skip events, give you inconsistent information, etc. But, to get
>>>>> consistent information you generally have to do a STW pause, and 
>>>>> this is
>>>>> too much of an overhead for an application in production. This is 
>>>>> why a
>>>>> lot of the monitoring has been implemented asynchronously.
>>>> So there is a problem in getting a perfect solution. An approximation
>>>> could be:
>>>> - provide a buffer with the information obtained after the last
>>>> Minor/Major GC (e.g. GC type, count, total and filled sizes of the
>>>> various memory regions, durations of the last run)
>>>> - fire an asynchronous event (not STW) to allow agents to retrieve the
>>>> buffered data
>>>> That's a hybrid, that would try to provide some benefits of the event
>>>> model, without risking long STW pauses. Of course one would have to
>>>> think about synchronizing read/write access to the buffer, but without
>>>> an actual agent running, there would be no contention, and with an 
>>>> agent
>>>> running there would be only noticable performance impact, if there were
>>>> lots of GCs and additionally the agent did expensive operations while
>>>> retrieving the buffers.
>>>> Regards,
>>>> Rainer

More information about the hotspot-gc-dev mailing list