Chromium Code Reviews| 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 f8ccb556074e1419b88758d1fd1ffa04f65a2f80..f99c4be33ab6690f33316aa7fb251067274c427d 100644 |
| --- a/chrome/browser/metrics/metrics_memory_details.cc |
| +++ b/chrome/browser/metrics/metrics_memory_details.cc |
| @@ -56,17 +56,23 @@ bool MemoryGrowthTracker::UpdateSample(base::ProcessId pid, |
| } |
| MetricsMemoryDetails::MetricsMemoryDetails( |
| - const base::Closure& callback, |
| - MemoryGrowthTracker* memory_growth_tracker) |
| - : callback_(callback), memory_growth_tracker_(memory_growth_tracker) { |
| - memory_growth_tracker_ = memory_growth_tracker; |
|
mwlodar
2016/10/12 21:50:52
Deleted as redundant.
|
| -} |
| + const base::Closure& callback, MemoryGrowthTracker* memory_growth_tracker) |
| + : callback_(callback), memory_growth_tracker_(memory_growth_tracker), |
| + generate_histograms_(true) {} |
| + |
| +MetricsMemoryDetails::MetricsMemoryDetails( |
| + const base::Closure& callback, MemoryGrowthTracker* memory_growth_tracker, |
| + bool generate_histograms) |
| + : callback_(callback), memory_growth_tracker_(memory_growth_tracker), |
| + generate_histograms_(generate_histograms) {} |
| MetricsMemoryDetails::~MetricsMemoryDetails() { |
| } |
| void MetricsMemoryDetails::OnDetailsAvailable() { |
| - UpdateHistograms(); |
| + if (generate_histograms_) |
| + UpdateHistograms(); |
| + AnalyzeMemoryGrowth(); |
|
Simon Que
2016/10/12 21:15:56
Since AnalyzeMemoryGrowth() is defined in a #if de
mwlodar
2016/10/12 21:50:52
Both should be outside this #if. Fixed.
|
| base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback_); |
| } |
| @@ -120,15 +126,6 @@ void MetricsMemoryDetails::UpdateHistograms() { |
| sample / 1024); |
| UMA_HISTOGRAM_MEMORY_LARGE_MB("Memory.Renderer.Committed", |
| committed / 1024); |
| - int diff; |
| - if (memory_growth_tracker_ && |
| - memory_growth_tracker_->UpdateSample( |
| - browser.processes[index].pid, sample, &diff)) { |
| - if (diff < 0) |
| - UMA_HISTOGRAM_MEMORY_KB("Memory.RendererShrinkIn30Min", -diff); |
| - else |
| - UMA_HISTOGRAM_MEMORY_KB("Memory.RendererGrowthIn30Min", diff); |
| - } |
| renderer_count++; |
| continue; |
| } |
| @@ -310,4 +307,23 @@ void MetricsMemoryDetails::UpdateSwapHistograms() { |
| swap_info().orig_data_size / swap_info().compr_data_size, 1, 20, 20); |
| } |
| } |
| + |
| +void MetricsMemoryDetails::AnalyzeMemoryGrowth() { |
| + const ProcessData& browser = *ChromeBrowser(); |
| + for (size_t index = 0; index < browser.processes.size(); index++) { |
| + int sample = static_cast<int>(browser.processes[index].working_set.priv); |
| + |
| + int diff; |
| + if (memory_growth_tracker_ && memory_growth_tracker_->UpdateSample( |
| + browser.processes[index].pid, sample, &diff)) { |
| + if (generate_histograms_) { |
| + if (diff < 0) |
| + UMA_HISTOGRAM_MEMORY_KB("Memory.RendererShrinkIn30Min", -diff); |
| + else |
| + UMA_HISTOGRAM_MEMORY_KB("Memory.RendererGrowthIn30Min", diff); |
| + } |
| + } |
| + } |
| +} |
| + |
| #endif // defined(OS_CHROMEOS) |