Commit cb73facc authored by Hannes Payer's avatar Hannes Payer

Added --trace_idle_notification_verbose which prints out the idle notificatino heap state.

BUG=
R=jochen@chromium.org

Review URL: https://codereview.chromium.org/732473002

Cr-Commit-Position: refs/heads/master@{#25369}
parent c3af691e
...@@ -542,6 +542,8 @@ DEFINE_BOOL(trace_gc_ignore_scavenger, false, ...@@ -542,6 +542,8 @@ DEFINE_BOOL(trace_gc_ignore_scavenger, false,
"do not print trace line after scavenger collection") "do not print trace line after scavenger collection")
DEFINE_BOOL(trace_idle_notification, false, DEFINE_BOOL(trace_idle_notification, false,
"print one trace line following each idle notification") "print one trace line following each idle notification")
DEFINE_BOOL(trace_idle_notification_verbose, false,
"prints the heap state used by the idle notification")
DEFINE_BOOL(print_cumulative_gc_stat, false, DEFINE_BOOL(print_cumulative_gc_stat, false,
"print cumulative GC statistics in name=value format on exit") "print cumulative GC statistics in name=value format on exit")
DEFINE_BOOL(print_max_heap_committed, false, DEFINE_BOOL(print_max_heap_committed, false,
......
...@@ -41,6 +41,25 @@ void GCIdleTimeAction::Print() { ...@@ -41,6 +41,25 @@ void GCIdleTimeAction::Print() {
} }
void GCIdleTimeHandler::HeapState::Print() {
PrintF("contexts_disposed=%d ", contexts_disposed);
PrintF("contexts_disposal_rate=%f ", contexts_disposal_rate);
PrintF("size_of_objects=%" V8_PTR_PREFIX "d ", size_of_objects);
PrintF("incremental_marking_stopped=%d ", incremental_marking_stopped);
PrintF("can_start_incremental_marking=%d ", can_start_incremental_marking);
PrintF("sweeping_in_progress=%d ", sweeping_in_progress);
PrintF("mark_compact_speed=%" V8_PTR_PREFIX "d ",
mark_compact_speed_in_bytes_per_ms);
PrintF("incremental_marking_speed=%" V8_PTR_PREFIX "d ",
incremental_marking_speed_in_bytes_per_ms);
PrintF("scavenge_speed=%" V8_PTR_PREFIX "d ", scavenge_speed_in_bytes_per_ms);
PrintF("new_space_size=%" V8_PTR_PREFIX "d ", used_new_space_size);
PrintF("new_space_capacity=%" V8_PTR_PREFIX "d ", new_space_capacity);
PrintF("new_space_allocation_throughput=%" V8_PTR_PREFIX "d",
new_space_allocation_throughput_in_bytes_per_ms);
}
size_t GCIdleTimeHandler::EstimateMarkingStepSize( size_t GCIdleTimeHandler::EstimateMarkingStepSize(
size_t idle_time_in_ms, size_t marking_speed_in_bytes_per_ms) { size_t idle_time_in_ms, size_t marking_speed_in_bytes_per_ms) {
DCHECK(idle_time_in_ms > 0); DCHECK(idle_time_in_ms > 0);
......
...@@ -116,7 +116,10 @@ class GCIdleTimeHandler { ...@@ -116,7 +116,10 @@ class GCIdleTimeHandler {
// If contexts are disposed at a higher rate a full gc is triggered. // If contexts are disposed at a higher rate a full gc is triggered.
static const double kHighContextDisposalRate; static const double kHighContextDisposalRate;
struct HeapState { class HeapState {
public:
void Print();
int contexts_disposed; int contexts_disposed;
double contexts_disposal_rate; double contexts_disposal_rate;
size_t size_of_objects; size_t size_of_objects;
......
...@@ -4485,7 +4485,13 @@ bool Heap::IdleNotification(int idle_time_in_ms) { ...@@ -4485,7 +4485,13 @@ bool Heap::IdleNotification(int idle_time_in_ms) {
PrintF("Idle notification: requested idle time %d ms, actual time %d ms [", PrintF("Idle notification: requested idle time %d ms, actual time %d ms [",
idle_time_in_ms, actual_time_in_ms); idle_time_in_ms, actual_time_in_ms);
action.Print(); action.Print();
PrintF("]\n"); PrintF("]");
if (FLAG_trace_idle_notification_verbose) {
PrintF("[");
heap_state.Print();
PrintF("]");
}
PrintF("\n");
} }
contexts_disposed_ = 0; contexts_disposed_ = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment