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

Unified Diff: content/browser/browser_main_runner.cc

Issue 1891913002: Support saving browser metrics to disk and reading them during next run. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed review comments by Ilya Created 4 years, 8 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
Index: content/browser/browser_main_runner.cc
diff --git a/content/browser/browser_main_runner.cc b/content/browser/browser_main_runner.cc
index 96a3454f1499edbb0211afbcdb1ba8024cb6e2bc..857824a4eeb0a95280e66bce5aa2815a2cd8719a 100644
--- a/content/browser/browser_main_runner.cc
+++ b/content/browser/browser_main_runner.cc
@@ -11,6 +11,7 @@
#include "base/macros.h"
#include "base/metrics/histogram.h"
#include "base/metrics/histogram_macros.h"
+#include "base/metrics/persistent_histogram_allocator.h"
#include "base/metrics/statistics_recorder.h"
#include "base/profiler/scoped_profile.h"
#include "base/profiler/scoped_tracker.h"
@@ -60,6 +61,15 @@ class BrowserMainRunnerImpl : public BrowserMainRunner {
}
int Initialize(const MainFunctionParams& parameters) override {
+ // Create persistent/shared memory and allow histograms to be stored in it.
+ // Memory that is not actualy used won't be physically mapped by the system.
+ // BrowserMetrics usage peaked around 95% of 2MiB as of 2016-02-20.
Ilya Sherman 2016/04/25 19:48:41 nit: "95% of 2MiB" is confusing -- it kind of soun
bcwhite 2016/04/25 20:37:17 That is what it means. Better to just say "1.9MiB
+ base::GlobalHistogramAllocator::CreateWithLocalMemory(
+ 3 << 20, // 3 MiB
+ 0x935DDD43, // SHA1(BrowserMetrics)
+ "BrowserMetrics");
+ base::GlobalHistogramAllocator::Disable(); // Enabled by experiment only.
+
SCOPED_UMA_HISTOGRAM_LONG_TIMER(
"Startup.BrowserMainRunnerImplInitializeLongTime");
@@ -224,6 +234,13 @@ class BrowserMainRunnerImpl : public BrowserMainRunner {
notification_service_.reset(NULL);
+ // Dump all the persistent metrics to a file for upload during the next
+ // run of the browser.
+ base::GlobalHistogramAllocator* allocator =
+ base::GlobalHistogramAllocator::Get();
+ if (allocator)
Ilya Sherman 2016/04/25 19:48:41 Under what circumstances can the allocator be null
bcwhite 2016/04/25 20:37:17 It will be null if the allocator has been disabled
Ilya Sherman 2016/04/25 21:12:11 Yikes, that is so confusing that it confused me ev
bcwhite 2016/04/26 13:32:30 Acknowledged.
+ allocator->WriteToPersistentLocation();
+
is_shutdown_ = true;
}
}

Powered by Google App Engine
This is Rietveld 408576698