Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(747)

Unified Diff: content/renderer/render_thread_impl.cc

Issue 2636873002: memory metrics: record growth after purging BG renderer's cache (Closed)
Patch Set: Added label to PurgeAndSuspendExperiment. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_thread_impl.cc
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 6d110144772b5214491f3d25fc514c068bbbb45e..d6315802af990c405019d88f68c3f69c77b2c712 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -891,6 +891,9 @@ void RenderThreadImpl::Init(
record_purge_suspend_metric_closure_.Reset(base::Bind(
&RenderThreadImpl::RecordPurgeAndSuspendMetrics, base::Unretained(this)));
+ record_purge_suspend_growth_metric_closure_.Reset(
+ base::Bind(&RenderThreadImpl::RecordPurgeAndSuspendMemoryGrowthMetrics,
+ base::Unretained(this)));
base::MemoryCoordinatorClientRegistry::GetInstance()->Register(this);
@@ -1646,6 +1649,10 @@ void RenderThreadImpl::OnProcessBackgrounded(bool backgrounded) {
record_purge_suspend_metric_closure_.Reset(
base::Bind(&RenderThreadImpl::RecordPurgeAndSuspendMetrics,
base::Unretained(this)));
+ record_purge_suspend_growth_metric_closure_.Cancel();
+ record_purge_suspend_growth_metric_closure_.Reset(
+ base::Bind(&RenderThreadImpl::RecordPurgeAndSuspendMemoryGrowthMetrics,
+ base::Unretained(this)));
}
}
@@ -1760,7 +1767,7 @@ void RenderThreadImpl::GetRendererMemoryMetrics(
// we should collect the metrics using memory-infra.
// TODO(tasak): We should also report a difference between the memory usages
// before and after purging by using memory-infra.
-void RenderThreadImpl::RecordPurgeAndSuspendMetrics() const {
+void RenderThreadImpl::RecordPurgeAndSuspendMetrics() {
// If this renderer is resumed, we should not update UMA.
if (!RendererIsHidden())
return;
@@ -1781,6 +1788,56 @@ void RenderThreadImpl::RecordPurgeAndSuspendMetrics() const {
memory_metrics.v8_main_thread_isolate_mb);
UMA_HISTOGRAM_MEMORY_MB("PurgeAndSuspend.Memory.TotalAllocatedMB",
memory_metrics.total_allocated_mb);
+ purge_and_suspend_memory_metrics_ = memory_metrics;
+
+ // record how many memory usage increases after purged.
+ GetRendererScheduler()->DefaultTaskRunner()->PostDelayedTask(
+ FROM_HERE, record_purge_suspend_growth_metric_closure_.callback(),
+ base::TimeDelta::FromMinutes(5));
+ GetRendererScheduler()->DefaultTaskRunner()->PostDelayedTask(
+ FROM_HERE, record_purge_suspend_growth_metric_closure_.callback(),
+ base::TimeDelta::FromMinutes(10));
+ GetRendererScheduler()->DefaultTaskRunner()->PostDelayedTask(
+ FROM_HERE, record_purge_suspend_growth_metric_closure_.callback(),
+ base::TimeDelta::FromMinutes(15));
+}
+
+#define GET_MEMORY_GROWTH(current, previous, allocator) \
+ (current.allocator > previous.allocator \
+ ? current.allocator - previous.allocator \
+ : 0)
+
+void RenderThreadImpl::RecordPurgeAndSuspendMemoryGrowthMetrics() const {
+ // If this renderer is resumed, we should not update UMA.
+ if (!RendererIsHidden())
+ return;
+
+ RendererMemoryMetrics memory_metrics;
+ GetRendererMemoryMetrics(&memory_metrics);
+ UMA_HISTOGRAM_MEMORY_KB(
+ "PurgeAndSuspend.Experimental.MemoryGrowth.PartitionAllocKB",
+ GET_MEMORY_GROWTH(memory_metrics, purge_and_suspend_memory_metrics_,
+ partition_alloc_kb));
+ UMA_HISTOGRAM_MEMORY_KB(
+ "PurgeAndSuspend.Experimental.MemoryGrowth.BlinkGCKB",
+ GET_MEMORY_GROWTH(memory_metrics, purge_and_suspend_memory_metrics_,
+ blink_gc_kb));
+ UMA_HISTOGRAM_MEMORY_MB(
+ "PurgeAndSuspend.Experimental.MemoryGrowth.MallocKB",
+ GET_MEMORY_GROWTH(memory_metrics, purge_and_suspend_memory_metrics_,
+ malloc_mb) * 1024);
+ UMA_HISTOGRAM_MEMORY_KB(
+ "PurgeAndSuspend.Experimental.MemoryGrowth.DiscardableKB",
+ GET_MEMORY_GROWTH(memory_metrics, purge_and_suspend_memory_metrics_,
+ discardable_kb));
+ UMA_HISTOGRAM_MEMORY_MB(
+ "PurgeAndSuspend.Experimental.MemoryGrowth.V8MainThreadIsolateKB",
+ GET_MEMORY_GROWTH(memory_metrics, purge_and_suspend_memory_metrics_,
+ v8_main_thread_isolate_mb) * 1024);
+ UMA_HISTOGRAM_MEMORY_MB(
+ "PurgeAndSuspend.Experimental.MemoryGrowth.TotalAllocatedKB",
+ GET_MEMORY_GROWTH(memory_metrics, purge_and_suspend_memory_metrics_,
+ total_allocated_mb) * 1024);
}
void RenderThreadImpl::OnProcessResume() {
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698