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 @@ -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(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 --