summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/controller/oom_intervention_impl.cc
diff options
context:
space:
mode:
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.cc52
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