Skip to content

Commit 1359b9c

Browse files
Anthony Vallee-DuboisChromium LUCI CQ
Anthony Vallee-Dubois
authored and
Chromium LUCI CQ
committed
Add available memory histograms
This should help inform the choice of the heuristic memory saver thresholds Bug: 1420344 Change-Id: Ic178c327c625e90558aab6db27a8e5639447d281 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4361971 Reviewed-by: Joe Mason <joenotcharles@google.com> Commit-Queue: Anthony Vallée-Dubois <anthonyvd@chromium.org> Cr-Commit-Position: refs/heads/main@{#1122551}
1 parent 586ef5a commit 1359b9c

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

chrome/browser/performance_manager/metrics/metrics_provider.cc

+18
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
#include "chrome/browser/performance_manager/metrics/metrics_provider.h"
66

77
#include "base/metrics/histogram_functions.h"
8+
#include "base/system/sys_info.h"
9+
#include "base/timer/timer.h"
810
#include "chrome/browser/performance_manager/public/user_tuning/user_performance_tuning_manager.h"
911
#include "components/performance_manager/public/user_tuning/prefs.h"
1012
#include "components/prefs/pref_service.h"
@@ -15,6 +17,7 @@ namespace {
1517

1618
MetricsProvider* g_metrics_provider = nullptr;
1719

20+
uint64_t kBytesPerMb = 1024 * 1024;
1821
}
1922

2023
// static
@@ -65,6 +68,11 @@ MetricsProvider::MetricsProvider(PrefService* local_state)
6568
: local_state_(local_state) {
6669
DCHECK(!g_metrics_provider);
6770
g_metrics_provider = this;
71+
72+
available_memory_metrics_timer_.Start(
73+
FROM_HERE, base::Minutes(2),
74+
base::BindRepeating(&MetricsProvider::RecordAvailableMemoryMetrics,
75+
base::Unretained(this)));
6876
}
6977

7078
void MetricsProvider::OnBatterySaverModeChanged(bool is_active) {
@@ -114,4 +122,14 @@ MetricsProvider::EfficiencyMode MetricsProvider::ComputeCurrentMode() const {
114122
return EfficiencyMode::kNormal;
115123
}
116124

125+
void MetricsProvider::RecordAvailableMemoryMetrics() {
126+
auto available_bytes = base::SysInfo::AmountOfAvailablePhysicalMemory();
127+
auto total_bytes = base::SysInfo::AmountOfPhysicalMemory();
128+
129+
base::UmaHistogramMemoryLargeMB("Memory.Experimental.AvailableMemoryMB",
130+
available_bytes / kBytesPerMb);
131+
base::UmaHistogramPercentage("Memory.Experimental.AvailableMemoryPercent",
132+
available_bytes * 100 / total_bytes);
133+
}
134+
117135
} // namespace performance_manager

chrome/browser/performance_manager/metrics/metrics_provider.h

+4
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,17 @@ class MetricsProvider : public ::metrics::MetricsProvider,
6060
void OnTuningModesChanged();
6161
EfficiencyMode ComputeCurrentMode() const;
6262

63+
void RecordAvailableMemoryMetrics();
64+
6365
PrefChangeRegistrar pref_change_registrar_;
6466
const raw_ptr<PrefService> local_state_;
6567
EfficiencyMode current_mode_ = EfficiencyMode::kNormal;
6668

6769
bool battery_saver_enabled_ = false;
6870

6971
bool initialized_ = false;
72+
73+
base::RepeatingTimer available_memory_metrics_timer_;
7074
};
7175

7276
} // namespace performance_manager

tools/metrics/histograms/metadata/memory/histograms.xml

+25
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,31 @@ chromium-metrics-reviews@google.com.
524524
</summary>
525525
</histogram>
526526

527+
<histogram name="Memory.Experimental.AvailableMemoryMB" units="MB"
528+
expires_after="2023-09-22">
529+
<owner>anthonyvd@chromium.org</owner>
530+
<owner>catan-team@chromium.org</owner>
531+
<summary>
532+
The amount of available physical memory on the system as reported by
533+
base::SysInfo::AmountOfAvailablePhysicalMemory().
534+
535+
Recorded every 2 minutes.
536+
</summary>
537+
</histogram>
538+
539+
<histogram name="Memory.Experimental.AvailableMemoryPercent" units="%"
540+
expires_after="2023-09-22">
541+
<owner>anthonyvd@chromium.org</owner>
542+
<owner>catan-team@chromium.org</owner>
543+
<summary>
544+
The percentage of physical memory on the system considered
545+
&quot;available&quot; by base::SysInfo::AmountOfAvailablePhysicalMemory()
546+
and base::SysInfo::AmountOfPhysicalMemory().
547+
548+
Recorded every 2 minutes.
549+
</summary>
550+
</histogram>
551+
527552
<histogram base="true" name="Memory.Experimental.Browser2" units="MB"
528553
expires_after="2024-01-10">
529554
<!-- Name completed by histogram_suffixes name="ProcessMemoryAllocator2" -->

0 commit comments

Comments
 (0)