Revision: 21381
Author: [email protected]
Date: Tue May 20 09:53:18 2014 UTC
Log: Print promotion rate and semi-space copy rate in --trace-gc-nvp.
BUG=
[email protected]
Review URL: https://codereview.chromium.org/290133004
http://code.google.com/p/v8/source/detail?r=21381
Modified:
/branches/bleeding_edge/src/heap.cc
/branches/bleeding_edge/src/heap.h
/branches/bleeding_edge/src/mark-compact.cc
=======================================
--- /branches/bleeding_edge/src/heap.cc Mon May 19 07:57:04 2014 UTC
+++ /branches/bleeding_edge/src/heap.cc Tue May 20 09:53:18 2014 UTC
@@ -97,10 +97,13 @@
gc_safe_size_of_old_object_(NULL),
total_regexp_code_generated_(0),
tracer_(NULL),
- young_survivors_after_last_gc_(0),
high_survival_rate_period_length_(0),
low_survival_rate_period_length_(0),
survival_rate_(0),
+ promoted_objects_size_(0),
+ promotion_rate_(0),
+ semi_space_copied_object_size_(0),
+ semi_space_copied_rate_(0),
previous_survival_rate_trend_(Heap::STABLE),
survival_rate_trend_(Heap::STABLE),
max_gc_pause_(0.0),
@@ -420,6 +423,10 @@
}
#endif
}
+
+ // Reset GC statistics.
+ promoted_objects_size_ = 0;
+ semi_space_copied_object_size_ = 0;
UpdateMaximumCommitted();
@@ -1005,9 +1012,15 @@
void Heap::UpdateSurvivalRateTrend(int start_new_space_size) {
if (start_new_space_size == 0) return;
- double survival_rate =
- (static_cast<double>(young_survivors_after_last_gc_) * 100) /
- start_new_space_size;
+ promotion_rate_ =
+ (static_cast<double>(promoted_objects_size_) /
+ static_cast<double>(start_new_space_size) * 100);
+
+ semi_space_copied_rate_ =
+ (static_cast<double>(semi_space_copied_object_size_) /
+ static_cast<double>(start_new_space_size) * 100);
+
+ double survival_rate = promotion_rate_ + semi_space_copied_rate_;
if (survival_rate > kYoungSurvivalRateHighThreshold) {
high_survival_rate_period_length_++;
@@ -2056,7 +2069,7 @@
}
}
- heap->tracer()->increment_promoted_objects_size(object_size);
+ heap->IncrementPromotedObjectsSize(object_size);
return;
}
}
@@ -2075,6 +2088,7 @@
// buffer.
*slot = target;
MigrateObject(heap, object, target, object_size);
+ heap->IncrementSemiSpaceCopiedObjectSize(object_size);
return;
}
@@ -6028,7 +6042,6 @@
full_gc_count_(0),
allocated_since_last_gc_(0),
spent_in_mutator_(0),
- promoted_objects_size_(0),
nodes_died_in_new_space_(0),
nodes_copied_in_new_space_(0),
nodes_promoted_(0),
@@ -6175,11 +6188,15 @@
PrintF("holes_size_after=%" V8_PTR_PREFIX "d ",
CountTotalHolesSize(heap_));
PrintF("allocated=%" V8_PTR_PREFIX "d ", allocated_since_last_gc_);
- PrintF("promoted=%" V8_PTR_PREFIX "d ", promoted_objects_size_);
+ PrintF("promoted=%" V8_PTR_PREFIX "d ", heap_->promoted_objects_size_);
+ PrintF("semi_space_copied=%" V8_PTR_PREFIX "d ",
+ heap_->semi_space_copied_object_size_);
PrintF("nodes_died_in_new=%d ", nodes_died_in_new_space_);
PrintF("nodes_copied_in_new=%d ", nodes_copied_in_new_space_);
PrintF("nodes_promoted=%d ", nodes_promoted_);
- PrintF("survived=%.1f%% ", heap_->survival_rate_);
+ PrintF("survival_rate=%.1f%% ", heap_->survival_rate_);
+ PrintF("promotion_rate=%.1f%% ", heap_->promotion_rate_);
+ PrintF("semi_space_copy_rate=%.1f%% ", heap_->semi_space_copied_rate_);
if (collector_ == SCAVENGER) {
PrintF("stepscount=%d ", steps_count_since_last_gc_);
=======================================
--- /branches/bleeding_edge/src/heap.h Mon May 19 07:57:04 2014 UTC
+++ /branches/bleeding_edge/src/heap.h Tue May 20 09:53:18 2014 UTC
@@ -1187,9 +1187,18 @@
// Check new space expansion criteria and expand semispaces if it was
hit.
void CheckNewSpaceExpansionCriteria();
+ inline void IncrementPromotedObjectsSize(int object_size) {
+ ASSERT(object_size > 0);
+ promoted_objects_size_ += object_size;
+ }
+
+ inline void IncrementSemiSpaceCopiedObjectSize(int object_size) {
+ ASSERT(object_size > 0);
+ semi_space_copied_object_size_ += object_size;
+ }
+
inline void IncrementYoungSurvivorsCounter(int survived) {
ASSERT(survived >= 0);
- young_survivors_after_last_gc_ = survived;
survived_since_last_expansion_ += survived;
}
@@ -2027,10 +2036,13 @@
static const int kOldSurvivalRateLowThreshold = 10;
- int young_survivors_after_last_gc_;
int high_survival_rate_period_length_;
int low_survival_rate_period_length_;
double survival_rate_;
+ intptr_t promoted_objects_size_;
+ double promotion_rate_;
+ intptr_t semi_space_copied_object_size_;
+ double semi_space_copied_rate_;
SurvivalRateTrend previous_survival_rate_trend_;
SurvivalRateTrend survival_rate_trend_;
@@ -2599,10 +2611,6 @@
// Sets the full GC count.
void set_full_gc_count(int count) { full_gc_count_ = count; }
-
- void increment_promoted_objects_size(int object_size) {
- promoted_objects_size_ += object_size;
- }
void increment_nodes_died_in_new_space() {
nodes_died_in_new_space_++;
@@ -2657,9 +2665,6 @@
// previous collection and the beginning of the current one.
double spent_in_mutator_;
- // Size of objects promoted during the current collection.
- intptr_t promoted_objects_size_;
-
// Number of died nodes in the new space.
int nodes_died_in_new_space_;
=======================================
--- /branches/bleeding_edge/src/mark-compact.cc Wed May 14 09:12:21 2014 UTC
+++ /branches/bleeding_edge/src/mark-compact.cc Tue May 20 09:53:18 2014 UTC
@@ -2077,6 +2077,7 @@
object,
size,
NEW_SPACE);
+ heap()->IncrementSemiSpaceCopiedObjectSize(size);
}
*cells = 0;
}
@@ -3083,8 +3084,7 @@
object,
object_size,
target_space->identity());
- heap()->mark_compact_collector()->tracer()->
- increment_promoted_objects_size(object_size);
+ heap()->IncrementPromotedObjectsSize(object_size);
return true;
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.