116 lines
5.8 KiB
Diff
116 lines
5.8 KiB
Diff
From: uazo <uazo@users.noreply.github.com>
|
|
Date: Wed, 28 Dec 2022 15:47:58 +0000
|
|
Subject: Enable HighEfficiencyMode by default
|
|
|
|
Only valid for desktop platform: activation of auto freeze in
|
|
background tabs with high CPU consumption, which is not visible from
|
|
the ui and therefore not user controllable.
|
|
The feature is controlled by the "freezing-without-battery-saver" flag
|
|
active by default.
|
|
|
|
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
|
---
|
|
components/performance_manager/features.cc | 6 ++++++
|
|
.../performance_manager/freezing/freezing_policy.cc | 4 ++--
|
|
components/performance_manager/public/features.h | 3 +++
|
|
components/performance_manager/user_tuning/prefs.cc | 6 +++---
|
|
.../Enable-freeze-high-cpu-background-usage.inc | 8 ++++++++
|
|
5 files changed, 22 insertions(+), 5 deletions(-)
|
|
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Enable-freeze-high-cpu-background-usage.inc
|
|
|
|
diff --git a/components/performance_manager/features.cc b/components/performance_manager/features.cc
|
|
--- a/components/performance_manager/features.cc
|
|
+++ b/components/performance_manager/features.cc
|
|
@@ -195,6 +195,7 @@ BASE_FEATURE(kUrgentPageDiscarding,
|
|
BASE_FEATURE(kCPUMeasurementInFreezingPolicy,
|
|
"CPUMeasurementInFreezingPolicy",
|
|
base::FEATURE_ENABLED_BY_DEFAULT);
|
|
+SET_CROMITE_FEATURE_ENABLED(kCPUMeasurementInFreezingPolicy);
|
|
|
|
BASE_FEATURE(kMemoryMeasurementInFreezingPolicy,
|
|
"MemoryMeasurementInFreezingPolicy",
|
|
@@ -268,9 +269,14 @@ BASE_FEATURE_PARAM(base::TimeDelta,
|
|
"unfreeze_duration",
|
|
base::Seconds(5));
|
|
|
|
+CROMITE_FEATURE(kFreezingWithoutBatterySaver,
|
|
+ "FreezingWithoutBatterySaver",
|
|
+ base::FEATURE_ENABLED_BY_DEFAULT);
|
|
+
|
|
BASE_FEATURE(kResourceAttributionIncludeOrigins,
|
|
"ResourceAttributionIncludeOrigins",
|
|
base::FEATURE_ENABLED_BY_DEFAULT);
|
|
+SET_CROMITE_FEATURE_ENABLED(kResourceAttributionIncludeOrigins);
|
|
|
|
BASE_FEATURE(kSeamlessRenderFrameSwap,
|
|
"SeamlessRenderFrameSwap",
|
|
diff --git a/components/performance_manager/freezing/freezing_policy.cc b/components/performance_manager/freezing/freezing_policy.cc
|
|
--- a/components/performance_manager/freezing/freezing_policy.cc
|
|
+++ b/components/performance_manager/freezing/freezing_policy.cc
|
|
@@ -442,11 +442,11 @@ void FreezingPolicy::UpdateFrozenState(
|
|
if (browsing_instance_state
|
|
.highest_cpu_without_battery_saver_cannot_freeze >=
|
|
high_cpu_proportion &&
|
|
- is_battery_saver_active_ &&
|
|
+ (base::FeatureList::IsEnabled(features::kFreezingWithoutBatterySaver) || (is_battery_saver_active_ &&
|
|
// Note: Feature state is checked last so that only clients that
|
|
// have a browsing instance that is CPU intensive in background
|
|
// while Battery Saver is active are enrolled in the experiment.
|
|
- base::FeatureList::IsEnabled(features::kFreezingOnBatterySaver)) {
|
|
+ base::FeatureList::IsEnabled(features::kFreezingOnBatterySaver))) ) {
|
|
eligible_for_freezing_on_battery_saver = true;
|
|
}
|
|
|
|
diff --git a/components/performance_manager/public/features.h b/components/performance_manager/public/features.h
|
|
--- a/components/performance_manager/public/features.h
|
|
+++ b/components/performance_manager/public/features.h
|
|
@@ -208,6 +208,9 @@ BASE_DECLARE_FEATURE_PARAM(base::TimeDelta,
|
|
BASE_DECLARE_FEATURE_PARAM(base::TimeDelta,
|
|
kInfiniteTabsFreezing_UnfreezeDuration);
|
|
|
|
+// activates freezing of tabs with high background cpu usage
|
|
+BASE_DECLARE_FEATURE(kFreezingWithoutBatterySaver);
|
|
+
|
|
// When enabled, Resource Attribution measurements will include contexts for
|
|
// individual origins.
|
|
BASE_DECLARE_FEATURE(kResourceAttributionIncludeOrigins);
|
|
diff --git a/components/performance_manager/user_tuning/prefs.cc b/components/performance_manager/user_tuning/prefs.cc
|
|
--- a/components/performance_manager/user_tuning/prefs.cc
|
|
+++ b/components/performance_manager/user_tuning/prefs.cc
|
|
@@ -20,18 +20,18 @@
|
|
namespace performance_manager::user_tuning::prefs {
|
|
|
|
void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
|
|
- registry->RegisterBooleanPref(kMemorySaverModeEnabled, false);
|
|
+ registry->RegisterBooleanPref(kMemorySaverModeEnabled, true);
|
|
registry->RegisterIntegerPref(
|
|
kMemorySaverModeTimeBeforeDiscardInMinutes,
|
|
kDefaultMemorySaverModeTimeBeforeDiscardInMinutes);
|
|
registry->RegisterIntegerPref(
|
|
- kMemorySaverModeState, static_cast<int>(MemorySaverModeState::kDisabled));
|
|
+ kMemorySaverModeState, static_cast<int>(MemorySaverModeState::kEnabled));
|
|
registry->RegisterIntegerPref(
|
|
kMemorySaverModeAggressiveness,
|
|
static_cast<int>(MemorySaverModeAggressiveness::kMedium));
|
|
registry->RegisterIntegerPref(
|
|
kBatterySaverModeState,
|
|
- static_cast<int>(BatterySaverModeState::kEnabledBelowThreshold));
|
|
+ static_cast<int>(BatterySaverModeState::kDisabled));
|
|
registry->RegisterTimePref(kLastBatteryUseTimestamp, base::Time());
|
|
registry->RegisterBooleanPref(kDiscardRingTreatmentEnabled, true);
|
|
registry->RegisterBooleanPref(kPerformanceInterventionNotificationEnabled,
|
|
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Enable-freeze-high-cpu-background-usage.inc b/cromite_flags/chrome/browser/about_flags_cc/Enable-freeze-high-cpu-background-usage.inc
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/cromite_flags/chrome/browser/about_flags_cc/Enable-freeze-high-cpu-background-usage.inc
|
|
@@ -0,0 +1,8 @@
|
|
+#ifdef FLAG_SECTION
|
|
+
|
|
+ {"freezing-without-battery-saver",
|
|
+ "Freeze Tab Without Battery Saver enabled",
|
|
+ "Activates freezing of tabs with high background cpu usage.", kOsDesktop,
|
|
+ FEATURE_VALUE_TYPE(performance_manager::features::kFreezingWithoutBatterySaver)},
|
|
+
|
|
+#endif
|
|
--
|