From: uazo 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 @@ -143,6 +143,7 @@ BASE_FEATURE(kUrgentPageDiscarding, BASE_FEATURE(kCPUMeasurementInFreezingPolicy, "CPUMeasurementInFreezingPolicy", base::FEATURE_DISABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_ENABLED(kCPUMeasurementInFreezingPolicy); // Note: This param is associated with `kCPUMeasurementInFreezingPolicy` instead // of `kFreezingOnBatterySaver`, to allow retrieving the value without @@ -159,9 +160,14 @@ BASE_FEATURE(kFreezingOnBatterySaverForTesting, "FreezingOnBatterySaverForTesting", base::FEATURE_DISABLED_BY_DEFAULT); +CROMITE_FEATURE(kFreezingWithoutBatterySaver, + "FreezingWithoutBatterySaver", + base::FEATURE_ENABLED_BY_DEFAULT); + BASE_FEATURE(kResourceAttributionIncludeOrigins, "ResourceAttributionIncludeOrigins", base::FEATURE_DISABLED_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 @@ -193,11 +193,11 @@ void FreezingPolicy::UpdateFrozenState( const BrowsingInstanceState& browsing_instance_state = it->second; if (browsing_instance_state.cpu_intensive_in_background && - 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 @@ -157,6 +157,9 @@ BASE_DECLARE_FEATURE(kFreezingOnBatterySaver); // - Pretend that all tabs have high CPU usage in background. BASE_DECLARE_FEATURE(kFreezingOnBatterySaverForTesting); +// 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 @@ -21,18 +21,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(MemorySaverModeState::kDisabled)); + kMemorySaverModeState, static_cast(MemorySaverModeState::kEnabled)); registry->RegisterIntegerPref( kMemorySaverModeAggressiveness, static_cast(MemorySaverModeAggressiveness::kMedium)); registry->RegisterIntegerPref( kBatterySaverModeState, - static_cast(BatterySaverModeState::kEnabledBelowThreshold)); + static_cast(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 --