ergo default for GCTaskTimestampEntries etc.
Bengt Rutisson
bengt.rutisson at oracle.com
Thu Jun 28 20:54:56 UTC 2012
Hi Ramki,
I don't think you got any response on this email yet. Sorry about that!
I had a quick look at the code that you refer to. This is not a part of
the code that I have been touching much but as far as I can tell your
analysis is correct. I filed a bug to track this issue. It hasn't shown
up on the public bug page yet, but hopefully it will be available there
soon:
7180571 Make the code regarding GCTaskTimestampEntries more robust
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7180571
I'm not sure when we get around to investigating this further. If you
happen to create a patch for this I'm happy to shepherd the fix into the
repository. ;-)
Thanks for the report!
Bengt
On 2012-06-18 21:48, Srinivas Ramakrishna wrote:
>
> Hi John, all --
>
> I recently saw the JVM complain that the default value of
> GCTaskTimestampEntries was too low, when it was run with
> +PrintGCTaskTimeStamps :-
>
> GCTaskTimeStamp* GCTaskThread::time_stamp_at(uint index) {
> guarantee(index < GCTaskTimeStampEntries, "increase
> GCTaskTimeStampEntries"); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>
> return &(_time_stamps[index]);
> }
>
> Firstly, a guarantee here and an exit seems too draconian, rather the
> logging should drop the value presented and carry on. The culrpit is
> this piece of
> code in the GCTaskThread work loop:-
>
> if (PrintGCTaskTimeStamps) {
> assert(_time_stamps != NULL,
> "Sanity (PrintGCTaskTimeStamps set late?)");
>
> timer.update();
>
> GCTaskTimeStamp* time_stamp =
> time_stamp_at(_time_stamp_index++);
>
> time_stamp->set_name(name);
> time_stamp->set_entry_time(entry_time);
> time_stamp->set_exit_time(timer.ticks());
> }
>
>
> Secondly, does the max # timestamp entries depend on factors that
> could be set ergonomically upon start-up so one doesn't need to
> navigate here by trial-and-error?
>
> Also, it would be great if one could have a suboption whereby such
> verbose logging could be limited to specific phases of GC, which could
> turn the verbosity
> level up and down as specified. For example, I might want the logging
> only for major gc cycles of ParallelOldGC and not otherwise, so I
> should be able to
> say, for example: PrintParallelOldGCTaskTimeStamps (or equivalently
> say PrintGCTaskTimeStamps=ParllelOld) and have the verbose logging be
> limited to
> that phase of GC. May be the logging framework can address issues like
> this in a consistent and uniform fashion.
>
> Thanks!
> -- ramki
More information about the hotspot-gc-dev
mailing list