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 | 2 +- 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, 21 insertions(+), 4 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 @@ -174,6 +174,7 @@ BASE_FEATURE(kPMLoadingPageVoter, base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kUrgentPageDiscarding, base::FEATURE_ENABLED_BY_DEFAULT); BASE_FEATURE(kCPUMeasurementInFreezingPolicy, base::FEATURE_ENABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_ENABLED(kCPUMeasurementInFreezingPolicy); BASE_FEATURE(kMemoryMeasurementInFreezingPolicy, base::FEATURE_ENABLED_BY_DEFAULT); @@ -253,8 +254,13 @@ BASE_FEATURE_PARAM(int, "min_available_percent", 10); +CROMITE_FEATURE(kFreezingWithoutBatterySaver, + "FreezingWithoutBatterySaver", + base::FEATURE_ENABLED_BY_DEFAULT); + BASE_FEATURE(kResourceAttributionIncludeOrigins, base::FEATURE_ENABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_ENABLED(kResourceAttributionIncludeOrigins); BASE_FEATURE(kSeamlessRenderFrameSwap, base::FEATURE_ENABLED_BY_DEFAULT); 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 @@ -443,7 +443,7 @@ 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_)) { 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 @@ -205,6 +205,9 @@ BASE_DECLARE_FEATURE(kDiscardOnCommitLimit); // enabled. BASE_DECLARE_FEATURE_PARAM(int, kDiscardOnCommitLimit_MinAvailablePercent); +// 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 @@ -19,18 +19,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 --