diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/controller/oom_intervention_impl.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/controller/oom_intervention_impl.cc | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/chromium/third_party/blink/renderer/controller/oom_intervention_impl.cc b/chromium/third_party/blink/renderer/controller/oom_intervention_impl.cc index 4bf6e8d8365..24b601ff70b 100644 --- a/chromium/third_party/blink/renderer/controller/oom_intervention_impl.cc +++ b/chromium/third_party/blink/renderer/controller/oom_intervention_impl.cc @@ -4,6 +4,7 @@ #include "third_party/blink/renderer/controller/oom_intervention_impl.h" +#include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "mojo/public/cpp/bindings/strong_binding.h" #include "third_party/blink/public/platform/platform.h" @@ -11,7 +12,6 @@ #include "third_party/blink/renderer/controller/crash_memory_metrics_reporter_impl.h" #include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/page/page.h" -#include "third_party/blink/renderer/platform/web_task_runner.h" #include "third_party/blink/renderer/platform/wtf/allocator/partitions.h" namespace blink { @@ -23,9 +23,12 @@ void OomInterventionImpl::Create(mojom::blink::OomInterventionRequest request) { } OomInterventionImpl::OomInterventionImpl() - : timer_(Platform::Current()->MainThread()->GetTaskRunner(), + : timer_(Thread::MainThread()->GetTaskRunner(), this, - &OomInterventionImpl::Check) {} + &OomInterventionImpl::Check), + delayed_report_timer_(Thread::MainThread()->GetTaskRunner(), + this, + &OomInterventionImpl::TimerFiredUMAReport) {} OomInterventionImpl::~OomInterventionImpl() {} @@ -53,7 +56,6 @@ OomInterventionMetrics OomInterventionImpl::GetCurrentMemoryMetrics() { void OomInterventionImpl::Check(TimerBase*) { DCHECK(host_); - DCHECK(renderer_pause_enabled_ || navigate_ads_enabled_); OomInterventionMetrics current_memory = GetCurrentMemoryMetrics(); bool oom_detected = false; @@ -95,6 +97,11 @@ void OomInterventionImpl::Check(TimerBase*) { // Notify V8GCForContextDispose that page navigation gc is needed when // intervention runs, as it indicates that memory usage is high. V8GCForContextDispose::Instance().SetForcePageNavigationGC(); + + // Report the memory impact of intervention after 10, 20, 30 seconds. + metrics_at_intervention_ = current_memory; + number_of_report_needed_ = 3; + delayed_report_timer_.StartRepeating(TimeDelta::FromSeconds(10), FROM_HERE); } } @@ -118,4 +125,41 @@ void OomInterventionImpl::ReportMemoryStats( current_memory); } +void OomInterventionImpl::TimerFiredUMAReport(TimerBase*) { + OomInterventionMetrics current_memory = GetCurrentMemoryMetrics(); + switch (number_of_report_needed_--) { + case 3: + base::UmaHistogramSparse( + "Memory.Experimental.OomIntervention.ReducedBlinkUsageAfter10secs", + current_memory.current_blink_usage_kb / 1024 - + metrics_at_intervention_.current_blink_usage_kb / 1024); + base::UmaHistogramSparse( + "Memory.Experimental.OomIntervention.ReducedRendererPMFAfter10secs", + current_memory.current_private_footprint_kb / 1024 - + metrics_at_intervention_.current_private_footprint_kb / 1024); + break; + case 2: + base::UmaHistogramSparse( + "Memory.Experimental.OomIntervention.ReducedBlinkUsageAfter20secs", + current_memory.current_blink_usage_kb / 1024 - + metrics_at_intervention_.current_blink_usage_kb / 1024); + base::UmaHistogramSparse( + "Memory.Experimental.OomIntervention.ReducedRendererPMFAfter20secs", + current_memory.current_private_footprint_kb / 1024 - + metrics_at_intervention_.current_private_footprint_kb / 1024); + break; + case 1: + base::UmaHistogramSparse( + "Memory.Experimental.OomIntervention.ReducedBlinkUsageAfter30secs", + current_memory.current_blink_usage_kb / 1024 - + metrics_at_intervention_.current_blink_usage_kb / 1024); + base::UmaHistogramSparse( + "Memory.Experimental.OomIntervention.ReducedRendererPMFAfter30secs", + current_memory.current_private_footprint_kb / 1024 - + metrics_at_intervention_.current_private_footprint_kb / 1024); + delayed_report_timer_.Stop(); + break; + } +} + } // namespace blink |