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

Unified Diff: chrome/browser/metrics/metrics_memory_details.cc

Issue 2566083002: Add peak memory usage metric
Patch Set: Created 4 years 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: chrome/browser/metrics/metrics_memory_details.cc
diff --git a/chrome/browser/metrics/metrics_memory_details.cc b/chrome/browser/metrics/metrics_memory_details.cc
index 807bc0921b82f41e578cee406727cbf81181799d..316d1a6f606aedbb2ab6e4ce8427634eeff317fb 100644
--- a/chrome/browser/metrics/metrics_memory_details.cc
+++ b/chrome/browser/metrics/metrics_memory_details.cc
@@ -12,6 +12,7 @@
#include "base/metrics/histogram_macros.h"
#include "base/single_thread_task_runner.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/sys_info.h"
#include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h"
#include "components/nacl/common/nacl_process_type.h"
@@ -56,11 +57,23 @@ bool MemoryGrowthTracker::UpdateSample(base::ProcessId pid,
return false;
}
+PeakMemoryUsageTracker::PeakMemoryUsageTracker() : peak_(0) {}
+
+bool PeakMemoryUsageTracker::Update(int memory_usage) {
+ if (memory_usage > peak_) {
+ peak_ = memory_usage;
+ return true;
+ }
+ return false;
+}
+
MetricsMemoryDetails::MetricsMemoryDetails(
const base::Closure& callback,
- MemoryGrowthTracker* memory_growth_tracker)
+ MemoryGrowthTracker* memory_growth_tracker,
+ PeakMemoryUsageTracker* peak_memory_usage_tracker)
: callback_(callback),
memory_growth_tracker_(memory_growth_tracker),
+ peak_memory_usage_tracker_(peak_memory_usage_tracker),
generate_histograms_(true) {}
MetricsMemoryDetails::~MetricsMemoryDetails() {
@@ -199,6 +212,25 @@ void MetricsMemoryDetails::UpdateHistograms() {
int total_sample = static_cast<int>(aggregate_memory / 1024);
UMA_HISTOGRAM_MEMORY_LARGE_MB("Memory.Total2", total_sample);
+ if (peak_memory_usage_tracker_) {
+ int previous_peak = peak_memory_usage_tracker_->peak();
+ if (peak_memory_usage_tracker_->Update(
+ static_cast<int>(aggregate_memory))) {
+ int physical_memory =
+ static_cast<int>(base::SysInfo::AmountOfPhysicalMemory());
+ int previous_peak_percentage = std::min(
+ static_cast<int>(100.0 * previous_peak / physical_memory), 100);
+ int new_peak_percentage =
+ std::min(static_cast<int>(100.0 * peak_memory_usage_tracker_->peak() /
+ physical_memory),
+ 100);
+ for (int i = previous_peak_percentage + 1; i <= new_peak_percentage;
+ ++i) {
+ UMA_HISTOGRAM_COUNTS_100("Memory.Total2.RelativePeak", i);
+ }
+ }
+ }
+
// Predict the number of processes needed when isolating all sites and when
// isolating only HTTPS sites.
int all_renderer_count = renderer_count + chrome_count + extension_count;

Powered by Google App Engine
This is Rietveld 408576698