RFR: 7164841: Improvements to the GC log file rotation
Yumin Qi
yumin.qi at oracle.com
Fri Aug 23 23:05:40 UTC 2013
Tao,
Thanks for your review.
On 8/23/2013 3:33 PM, Tao Mao wrote:
> Hi,
>
> I reviewed most of the code and test-ran a build from it. It's a very
> cool and important improvement.
>
> Thank you for putting together these on our wishlist for long.
>
> Below are some comments.
>
> 1. src/share/vm/runtime/arguments.cpp
>
> - 1853 "To enable GC log rotation, use -Xloggc:<filename>
> -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=<num_of_files>
> -XX:GCLogFileSize=<num_of_size>[k|K|m|M]\n"
> + 1853 "To enable GC log rotation, use -Xloggc:<filename>
> -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=<num_of_files>
> -XX:GCLogFileSize=<num_of_size>[k|K|m|M|g|G]\n"
>
> Please consider adding [g|G] to GCLogFileSize suggestion.
>
> I worked on a problem of enabling gc log limit over 2G (JDK-7122222).
> So it seems that customers sometimes want gc logs to be very large.
>
Sure, will add.
> 2. src/share/vm/runtime/arguments.hpp
>
> (1) with the current changeset, we only append date&time to file_name
> w/ +UseGCLogFileRotation; if not, we won't have date&time info.
>
> I think it would be useful to let both cases (w/ and w/o
> UseGCLogFileRotation) have date&time in order to solve the overwritten
> problem (e.g. JDK-8020667). In fact, having that, we actually solve
> JDK-8020667.
>
> If you want to have that, basically you need to work on the FileStream
> constructor methods fileStream().
>
I can change that, if no objection from others. This also will simplify
the setting of file name here.
> (2) Would it be better to rename method name reformat_filename() to
> extend_filename()?
>
> (3) Typos and suggestion
> 537 // rotate file in names filename.0, filename.1, ...,
> filename.<NumberOfGCLogFiles - 1>
> *=> extended_filename.0*
>
> 538 // filename contains pid and time when the fist file created. The
> current filename is
> *=> *the*first *file created.
>
> 539 // gc_log_file_name + pid<pid> + YYYY-MM-DD_HH-MM-SS.<i>.current,
> where i is current
> 540 // rotation file number. After it reaches max file size, the file
> will be saved and
> 541 // renamed with .current removed from its tail.
>
Will change that.
> 3. For your point 5), I don't quite get it. In my test-run, I tried to
> change file permission to unreadable and unwritable, but VM would
> later change the permission back anyway.
>
> So could you bring up some use cases of that functionality to give
> more details?
>
Changing file permission will not stop the file create, in this
rotation, the file opened/saved/removed/renamed -> then repeat. What I
have done is change the while directory to read only, then the create
failed so rotation stopped.
> 4. Will you write jtreg tests for this functionality? It looks
> possible to write some tests, at least checking the format of log names.
>
Good suggestion, I will add one.
> Thanks.
> Tao
>
> On 8/23/13 7:53 AM, Yumin Qi wrote:
>> Could I get a GC staff review the change? Need more reviewers to
>> push this in.
>>
>> Thanks
>> Yumin
>>
>> On 8/21/2013 3:43 PM, Yumin Qi wrote:
>>> Hi, all
>>>
>>> This is second version after feedback from first round.
>>> The changes are:
>>>
>>> 1) file name will be based on gc log file name (-Xloggc:filename),
>>> pid (process id) and time when the first rotation file created:
>>> <filename>-pid<pid>-YYYY-MM-DD_HH-MM-SS
>>> 2) If rotate in same file, file name is as in 1), if rotate in
>>> multiple files, .<i> will append to above file name.
>>> 3) every time file rotated, file name and time when file created
>>> will be logged to head/tail, this is same as first version.
>>> 4) current file has name
>>> <filename>-pid<pid>-YYYY-MM-DD_HH-MM-SS.<i>.current
>>> This is similar to first version.
>>> By adapting such name format we will never loss logs in case
>>> apps stops and restart, the log files will not be overwritten since
>>> time stamp in file names.
>>> 5) If open file failed, turn off gc log rotation.
>>> If due to some reason, file operation failed (such as
>>> permission changed etc), with log file opened, logging still works,
>>> but at
>>> saving and renaming, the file operation will fail, this will
>>> lead not all files saved.
>>>
>>> http://cr.openjdk.java.net/~minqi/7164841/webrev01
>>>
>>> Tested with jtreg, JPRT.
>>>
>>> Thanks
>>> Yumin
>>>
>>> On 8/15/2013 8:35 AM, Yumin Qi wrote:
>>>> Hi,
>>>>
>>>> Can I have your review for this small changes?
>>>> http://cr.openjdk.java.net/~minqi/7164841/webrev00/
>>>> <http://cr.openjdk.java.net/%7Eminqi/7164841/webrev00/>
>>>>
>>>> This is for a enhancement to add head/tail message to the
>>>> logging files to assist reading GC output.
>>>> 1. modified prompt message if invalid arguments used for log
>>>> rotating;
>>>> 2. add time and file name message to log file head/tail.
>>>> 3. for easily identify which log file is current, use file name
>>>> like <filename>.n.current, after it reaches maximum size, rename it
>>>> to <filename>.n
>>>> On Windows, there is no F_OK (existing test) definition,
>>>> F_OK is defined as "0" and for _access of VC++, it just describes:
>>>>
>>>> modevalue
>>>>
>>>>
>>>>
>>>> Checks file for
>>>>
>>>> 00
>>>>
>>>>
>>>>
>>>> Existence only
>>>>
>>>> 02
>>>>
>>>>
>>>>
>>>> Write-only
>>>>
>>>> 04
>>>>
>>>>
>>>>
>>>> Read-only
>>>>
>>>> 06
>>>>
>>>>
>>>>
>>>> Read and write
>>>>
>>>>
>>>> http://msdn.microsoft.com/en-us/library/1w06ktdy.aspx
>>>> The definition are consistent with unistd.h.
>>>>
>>>> Test: JPRT and jtreg.
>>>>
>>>> Thanks
>>>> Yumin
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20130823/d736c396/attachment.htm>
More information about the hotspot-gc-dev
mailing list