-
Sub-task
-
Resolution: Fixed
-
P3
-
13
-
b07
-
generic
-
generic
This sub-task captures updates and additions to the
baseline monitor logging code.
The updates and additions include:
- The '-XX:+TraceMonitorInflation' option now maps to LogLevel::Trace
instead of LogLevel::Debug. The existing 'monitorinflation' logging is
about per-object ObjectMonitor inflation and deflation so it is way too
verbose for LogLevel::Debug.
- Add support for calling ObjectSynchronizer::audit_and_print_stats()
at LogLevel::Info when the VM is exiting and at LogLevel::Debug
when ObjectSynchronizer::finish_deflate_idle_monitors() is called
at the end of that safepoint cleanup phase.
- With 'info' level logging, you get output at the end of the VM's life.
- With 'debug' level logging, you get output at each safepoint.
- Add DeflateMonitorCounters::perThreadScavenged to track the
number of monitors scavenged per-thread.
- Add 'deflating global idle monitors' log output that includes deflated_count
and how long it took; non-zero global deflation counts are reported at
LogLevel::Info and zero global deflation counts are reported at
LogLevel::Debug. Global deflations are much more rare than per-thread
deflations.
- Added 'deflating per-thread idle monitors' log output that's in the same
style as the new 'deflating global idle monitors' log output.
- Add per-thread deflation count output to the existing "safepoint+cleanup"
logging; reporting times without counts seemed silly to me...
- Add audit_and_print_stats() to verify the global monitor lists and the
per-thread monitor lists. Also reports info about the various lists. I'm
planning to add output for the monitor subsystem perf-counters, but
I haven't gotten there yet.
- Update runtime/logging/MonitorInflationTest.java to match the new
'-Xlog:monitorinflation=' level ('trace' instead of 'debug').
I've also added a new diagnostic option for enabling extra output about
in-use monitors: '-XX:+IncludeInUseMonitorDetailsInLogMsgs'. I did it
this way to help debug an object pinning bug in my port of the prototype
and I didn't want to be overwhelmed with output. However, adding another
diagnostic option is not a good idea so this choice doesn't sit well with me
(and I wrote it).
baseline monitor logging code.
The updates and additions include:
- The '-XX:+TraceMonitorInflation' option now maps to LogLevel::Trace
instead of LogLevel::Debug. The existing 'monitorinflation' logging is
about per-object ObjectMonitor inflation and deflation so it is way too
verbose for LogLevel::Debug.
- Add support for calling ObjectSynchronizer::audit_and_print_stats()
at LogLevel::Info when the VM is exiting and at LogLevel::Debug
when ObjectSynchronizer::finish_deflate_idle_monitors() is called
at the end of that safepoint cleanup phase.
- With 'info' level logging, you get output at the end of the VM's life.
- With 'debug' level logging, you get output at each safepoint.
- Add DeflateMonitorCounters::perThreadScavenged to track the
number of monitors scavenged per-thread.
- Add 'deflating global idle monitors' log output that includes deflated_count
and how long it took; non-zero global deflation counts are reported at
LogLevel::Info and zero global deflation counts are reported at
LogLevel::Debug. Global deflations are much more rare than per-thread
deflations.
- Added 'deflating per-thread idle monitors' log output that's in the same
style as the new 'deflating global idle monitors' log output.
- Add per-thread deflation count output to the existing "safepoint+cleanup"
logging; reporting times without counts seemed silly to me...
- Add audit_and_print_stats() to verify the global monitor lists and the
per-thread monitor lists. Also reports info about the various lists. I'm
planning to add output for the monitor subsystem perf-counters, but
I haven't gotten there yet.
- Update runtime/logging/MonitorInflationTest.java to match the new
'-Xlog:monitorinflation=' level ('trace' instead of 'debug').
I've also added a new diagnostic option for enabling extra output about
in-use monitors: '-XX:+IncludeInUseMonitorDetailsInLogMsgs'. I did it
this way to help debug an object pinning bug in my port of the prototype
and I didn't want to be overwhelmed with output. However, adding another
diagnostic option is not a good idea so this choice doesn't sit well with me
(and I wrote it).