Request for Reviews(M): 7092905: C2: Keep track of the number of dead nodes
vladimir.kozlov at oracle.com
Wed Oct 31 11:18:32 PDT 2012
Vladimir Ivanov wrote:
> Thanks for the clarification.
> I agree that compiler's <task> section is the best fit for such info.
> What I would like to see is clearer format and denser data
> representation, so it isn't burdensome to parse it by automatic tools
> (like LogCompilation).
> But I still have one unclear point. It's more methodological and relates
> to VM logging in general. Do we have a habit to look for warnings in
> compilation logs? :-)
It could be useful in general. LogCompilation is diagnostic flag and we use it
with product VM to find what happened during compilations. I think, it is good
to have warnings there if they help diagnose problems.
On other hand IdealNodeCount verification warning is not useful in this sense if
we will have total and alive nodes count in <phase> info as you suggested. What
information you can get from the knowledge that alive nodes count is not
accurate? Which we know will happen almost always.
> When a warning is issued during node count verification step, it doesn't
> occur on console. I would duplicate it both on console & in the log
> then. But, I rely on my own habits here - if I request such checks
> explicitly, I would like to easily see them.
I agree with that, I also suggested to add output to tty when
VerifyIdealNodeCount flag is used to avoid additional step to look into log file.
> Best regards,
> Vladimir Ivanov
> On 10/30/12 11:27 PM, John Rose wrote:
>> On Oct 30, 2012, at 7:48 AM, Vladimir Ivanov wrote:
>>> Regarding the currently published version, I think that logging part can
>>> be improved further.
>> Those are good suggestions, Vladimir.
>>> The general question is: do you intentionally print this info into XML
>>> compiler log? Why don't you use tty instead? All the messages will
>>> appear on console and will be duplicated in <tty> section in XML log
>>> anyway and you don't need to bother too much about the format.
>> Each compiler thread has a separate log section, divided in the <task>s
>> executed by that thread.
>> The main <tty> log is global, and intended for globally serialized
>> runtime events, such as deoptimizations or GCs or tty->print stuff.
>> Meanwhile, the compiler (in one more more threads) runs asynchronously
>> to all the Java application threads. So it gets a separate log.
>> If an interesting event occurs within the time-sequence of a compiler
>> task, it should be logged in that compiler thread's C->log.
>> When the JVM exits, all the extra compiler logs are catted together onto
>> the end of the main log's output file.
More information about the hotspot-compiler-dev