Commit 489b507f authored by erikchen's avatar erikchen Committed by Commit Bot

Remove unused memory metrics.

This CL removes several memory metrics that are not being used. These are:
  * Memory.{ProcessType}Count
  * Memory.*.Committed
  * Memory.Renderer{Shrink,Growth}In30Min
  * Memory.Swap.*

The memory metrics actively being used and developed are emitted in
ProcessMemoryMetricsEmitter. These are emitted in both UMA and UKM form. The UKM
form implicitly includes ProcessType, though with less granularity. Both the UMA
and UKMs include PrivateMemoryFootprint, a cross-platform consistent metric that
supercedes Memory.*.Committed. There is no replacement for
Memory.Renderer{Shrink,Growth}In30Min.

Bug: 765470
Change-Id: I857f710eeb3ddf233b63be3139ea90ebe8d9a5c9
Reviewed-on: https://chromium-review.googlesource.com/952985Reviewed-by: default avatarKeishi Hattori <keishi@chromium.org>
Reviewed-by: default avatarTakashi Sakamoto <tasak@google.com>
Reviewed-by: default avatarHajime Hoshi <hajimehoshi@chromium.org>
Reviewed-by: default avatarNick Carter <nick@chromium.org>
Reviewed-by: default avatarAlexei Svitkine <asvitkine@chromium.org>
Commit-Queue: Erik Chen <erikchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542144}
parent ce362d27
...@@ -712,7 +712,7 @@ void ChromeMetricsServiceClient::CollectFinalHistograms() { ...@@ -712,7 +712,7 @@ void ChromeMetricsServiceClient::CollectFinalHistograms() {
weak_ptr_factory_.GetWeakPtr()); weak_ptr_factory_.GetWeakPtr());
scoped_refptr<MetricsMemoryDetails> details( scoped_refptr<MetricsMemoryDetails> details(
new MetricsMemoryDetails(callback, &memory_growth_tracker_)); new MetricsMemoryDetails(callback));
details->StartFetch(); details->StartFetch();
scoped_refptr<ProcessMemoryMetricsEmitter> emitter( scoped_refptr<ProcessMemoryMetricsEmitter> emitter(
......
...@@ -204,10 +204,6 @@ class ChromeMetricsServiceClient : public metrics::MetricsServiceClient, ...@@ -204,10 +204,6 @@ class ChromeMetricsServiceClient : public metrics::MetricsServiceClient,
PluginMetricsProvider* plugin_metrics_provider_; PluginMetricsProvider* plugin_metrics_provider_;
#endif #endif
// The MemoryGrowthTracker instance that tracks memory usage growth in
// MemoryDetails.
MemoryGrowthTracker memory_growth_tracker_;
// Callback to determine whether or not a cellular network is currently being // Callback to determine whether or not a cellular network is currently being
// used. // used.
base::Callback<void(bool*)> cellular_callback_; base::Callback<void(bool*)> cellular_callback_;
......
...@@ -12,39 +12,12 @@ ...@@ -12,39 +12,12 @@
#include "build/build_config.h" #include "build/build_config.h"
#include "chrome/browser/memory_details.h" #include "chrome/browser/memory_details.h"
// MemoryGrowthTracker tracks latest metrics about record time and memory usage
// at that time per process.
class MemoryGrowthTracker {
public:
MemoryGrowthTracker();
virtual ~MemoryGrowthTracker();
// If 30 minutes have passed since last UMA record, UpdateSample() computes
// a difference between current memory usage |sample| of process |pid| and
// stored memory usage at the time of last UMA record. Then, it updates the
// stored memory usage to |sample|, stores the difference in |diff| and
// returns true.
// If no memory usage of |pid| has not been recorded so far or 30 minutes
// have not passed since last record, it just returns false.
// |sample| is memory usage in kB.
virtual bool UpdateSample(base::ProcessId pid, int sample, int* diff);
private:
// Latest metrics about record time and memory usage at that time per process.
// The second values of |memory_sizes_| are in kB.
std::map<base::ProcessId, base::TimeTicks> times_;
std::map<base::ProcessId, int> memory_sizes_;
DISALLOW_COPY_AND_ASSIGN(MemoryGrowthTracker);
};
// Handles asynchronous fetching of memory details and logging histograms about // Handles asynchronous fetching of memory details and logging histograms about
// memory use of various processes. // memory use of various processes.
// Will run the provided callback when finished. // Will run the provided callback when finished.
class MetricsMemoryDetails : public MemoryDetails { class MetricsMemoryDetails : public MemoryDetails {
public: public:
MetricsMemoryDetails(const base::Closure& callback, explicit MetricsMemoryDetails(const base::Closure& callback);
MemoryGrowthTracker* memory_growth_tracker);
void set_generate_histograms(bool generate_histograms) { void set_generate_histograms(bool generate_histograms) {
generate_histograms_ = generate_histograms; generate_histograms_ = generate_histograms;
...@@ -60,21 +33,8 @@ class MetricsMemoryDetails : public MemoryDetails { ...@@ -60,21 +33,8 @@ class MetricsMemoryDetails : public MemoryDetails {
// Updates the global histograms for tracking memory usage. // Updates the global histograms for tracking memory usage.
void UpdateHistograms(); void UpdateHistograms();
#if defined(OS_CHROMEOS)
void UpdateSwapHistograms();
#endif
// Notifies |memory_growth_tracker_| about the memory usage.
// Update histograms on memory growth or shrink in renderer processes.
void AnalyzeMemoryGrowth();
base::Closure callback_; base::Closure callback_;
// A pointer to MemoryGrowthTracker which is contained in a longer-lived
// owner of MetricsMemoryDetails, for example, ChromeMetricsServiceClient.
// If it is null, nothing is tracked.
MemoryGrowthTracker* memory_growth_tracker_;
// A flag indicating if histogram data should be generated. True on default. // A flag indicating if histogram data should be generated. True on default.
// If false, then only MemoryGrowthTracker gets notified about memory usage. // If false, then only MemoryGrowthTracker gets notified about memory usage.
bool generate_histograms_; bool generate_histograms_;
......
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/metrics/metrics_memory_details.h"
#include "base/bind_helpers.h"
#include "base/macros.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "base/test/histogram_tester.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "content/public/test/test_utils.h"
namespace {
class TestMemoryDetails : public MetricsMemoryDetails {
public:
TestMemoryDetails() : MetricsMemoryDetails(base::DoNothing(), nullptr) {}
void StartFetchAndWait() {
StartFetch();
content::RunMessageLoop();
}
private:
~TestMemoryDetails() override {}
void OnDetailsAvailable() override {
MetricsMemoryDetails::OnDetailsAvailable();
// Exit the loop initiated by StartFetchAndWait().
base::RunLoop::QuitCurrentWhenIdleDeprecated();
}
DISALLOW_COPY_AND_ASSIGN(TestMemoryDetails);
};
} // namespace
class MetricsMemoryDetailsBrowserTest : public InProcessBrowserTest {
public:
MetricsMemoryDetailsBrowserTest() {}
~MetricsMemoryDetailsBrowserTest() override {}
private:
DISALLOW_COPY_AND_ASSIGN(MetricsMemoryDetailsBrowserTest);
};
IN_PROC_BROWSER_TEST_F(MetricsMemoryDetailsBrowserTest, TestMemoryDetails) {
base::HistogramTester histogram_tester;
scoped_refptr<TestMemoryDetails> details(new TestMemoryDetails);
details->StartFetchAndWait();
histogram_tester.ExpectTotalCount("Memory.Browser.Committed", 1);
std::unique_ptr<base::HistogramSamples> committed_samples(
histogram_tester.GetHistogramSamplesSinceCreation(
"Memory.Browser.Committed"));
ASSERT_TRUE(committed_samples);
#if !defined(OS_LINUX)
// Committed memory isn't calculated on Linux.
EXPECT_NE(0, committed_samples->sum());
#endif
}
...@@ -54,7 +54,7 @@ namespace { ...@@ -54,7 +54,7 @@ namespace {
class TestMemoryDetails : public MetricsMemoryDetails { class TestMemoryDetails : public MetricsMemoryDetails {
public: public:
TestMemoryDetails() : MetricsMemoryDetails(base::DoNothing(), nullptr) {} TestMemoryDetails() : MetricsMemoryDetails(base::DoNothing()) {}
void StartFetchAndWait() { void StartFetchAndWait() {
uma_.reset(new base::HistogramTester()); uma_.reset(new base::HistogramTester());
......
...@@ -585,7 +585,6 @@ test("browser_tests") { ...@@ -585,7 +585,6 @@ test("browser_tests") {
"../browser/media_galleries/fileapi/media_file_validator_browsertest.cc", "../browser/media_galleries/fileapi/media_file_validator_browsertest.cc",
"../browser/media_galleries/media_galleries_dialog_controller_mock.cc", "../browser/media_galleries/media_galleries_dialog_controller_mock.cc",
"../browser/media_galleries/media_galleries_dialog_controller_mock.h", "../browser/media_galleries/media_galleries_dialog_controller_mock.h",
"../browser/metrics/metrics_memory_details_browsertest.cc",
"../browser/metrics/metrics_reporting_state_browsertest.cc", "../browser/metrics/metrics_reporting_state_browsertest.cc",
"../browser/metrics/metrics_service_browsertest.cc", "../browser/metrics/metrics_service_browsertest.cc",
"../browser/metrics/oom/out_of_memory_reporter_browsertest.cc", "../browser/metrics/oom/out_of_memory_reporter_browsertest.cc",
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment