Index: content/browser/memory/memory_condition_observer.cc |
diff --git a/content/browser/memory/memory_condition_observer.cc b/content/browser/memory/memory_condition_observer.cc |
index 075beab4ceb377d9ecc2ddea062631898e38d884..a1ae7adc6633fefc52ab66e807556b0d4f067b6b 100644 |
--- a/content/browser/memory/memory_condition_observer.cc |
+++ b/content/browser/memory/memory_condition_observer.cc |
@@ -16,48 +16,17 @@ namespace { |
// An expected renderer size. These values come from the median of appropriate |
// UMA stats. |
#if defined(OS_ANDROID) || defined(OS_IOS) |
-const int kDefaultExpectedRendererSizeMB = 40; |
+const int kExpectedRendererSizeMB = 40; |
#elif defined(OS_WIN) |
-const int kDefaultExpectedRendererSizeMB = 70; |
+const int kExpectedRendererSizeMB = 70; |
#else // Mac, Linux, and ChromeOS |
-const int kDefaultExpectedRendererSizeMB = 120; |
+const int kExpectedRendererSizeMB = 120; |
#endif |
-// Default values for parameters to determine the global state. |
-const int kDefaultNewRenderersUntilWarning = 4; |
-const int kDefaultNewRenderersUntilCritical = 2; |
-const int kDefaultNewRenderersBackToNormal = 5; |
-const int kDefaultNewRenderersBackToWarning = 3; |
+const int kNewRenderersUntilCritical = 2; |
const int kDefaultMonitoringIntervalSeconds = 1; |
const int kMonitoringIntervalBackgroundedSeconds = 120; |
-void SetIntVariationParameter(const std::map<std::string, std::string>& params, |
- const char* name, |
- int* target) { |
- const auto& iter = params.find(name); |
- if (iter == params.end()) |
- return; |
- int value; |
- if (!iter->second.empty() && base::StringToInt(iter->second, &value)) { |
- DCHECK(value > 0); |
- *target = value; |
- } |
-} |
- |
-void SetSecondsVariationParameter( |
- const std::map<std::string, std::string>& params, |
- const char* name, |
- base::TimeDelta* target) { |
- const auto& iter = params.find(name); |
- if (iter == params.end()) |
- return; |
- int value; |
- if (!iter->second.empty() && base::StringToInt(iter->second, &value)) { |
- DCHECK(value > 0); |
- *target = base::TimeDelta::FromSeconds(value); |
- } |
-} |
- |
} // namespace |
MemoryConditionObserver::MemoryConditionObserver( |
@@ -65,8 +34,12 @@ MemoryConditionObserver::MemoryConditionObserver( |
scoped_refptr<base::SingleThreadTaskRunner> task_runner) |
: coordinator_(coordinator), task_runner_(task_runner) { |
DCHECK(coordinator_); |
- InitializeParameters(); |
- DCHECK(ValidateParameters()); |
+ monitoring_interval_ = |
+ base::TimeDelta::FromSeconds(kDefaultMonitoringIntervalSeconds); |
+ monitoring_interval_foregrounded_ = |
+ base::TimeDelta::FromSeconds(kDefaultMonitoringIntervalSeconds); |
+ monitoring_interval_backgrounded_ = |
+ base::TimeDelta::FromSeconds(kMonitoringIntervalBackgroundedSeconds); |
} |
MemoryConditionObserver::~MemoryConditionObserver() {} |
@@ -103,33 +76,9 @@ MemoryCondition MemoryConditionObserver::CalculateNextCondition() { |
UMA_HISTOGRAM_MEMORY_LARGE_MB("Memory.Coordinator.FreeMemoryUntilCritical", |
available); |
- if (available <= 0) |
+ int expected_renderer_count = available / kExpectedRendererSizeMB; |
+ if (available <= 0 || expected_renderer_count < kNewRenderersUntilCritical) |
return MemoryCondition::CRITICAL; |
- |
- auto current = coordinator_->GetMemoryCondition(); |
- int expected_renderer_count = available / expected_renderer_size_; |
- |
- switch (current) { |
- case MemoryCondition::NORMAL: |
- if (expected_renderer_count <= new_renderers_until_critical_) |
- return MemoryCondition::CRITICAL; |
- if (expected_renderer_count <= new_renderers_until_warning_) |
- return MemoryCondition::WARNING; |
- return MemoryCondition::NORMAL; |
- case MemoryCondition::WARNING: |
- if (expected_renderer_count <= new_renderers_until_critical_) |
- return MemoryCondition::CRITICAL; |
- if (expected_renderer_count >= new_renderers_back_to_normal_) |
- return MemoryCondition::NORMAL; |
- return MemoryCondition::WARNING; |
- case MemoryCondition::CRITICAL: |
- if (expected_renderer_count >= new_renderers_back_to_normal_) |
- return MemoryCondition::NORMAL; |
- if (expected_renderer_count >= new_renderers_back_to_warning_) |
- return MemoryCondition::WARNING; |
- return MemoryCondition::CRITICAL; |
- } |
- NOTREACHED(); |
return MemoryCondition::NORMAL; |
} |
@@ -139,46 +88,5 @@ void MemoryConditionObserver::UpdateCondition() { |
ScheduleUpdateCondition(monitoring_interval_); |
} |
-void MemoryConditionObserver::InitializeParameters() { |
- expected_renderer_size_ = kDefaultExpectedRendererSizeMB; |
- new_renderers_until_warning_ = kDefaultNewRenderersUntilWarning; |
- new_renderers_until_critical_ = kDefaultNewRenderersUntilCritical; |
- new_renderers_back_to_normal_ = kDefaultNewRenderersBackToNormal; |
- new_renderers_back_to_warning_ = kDefaultNewRenderersBackToWarning; |
- monitoring_interval_ = |
- base::TimeDelta::FromSeconds(kDefaultMonitoringIntervalSeconds); |
- monitoring_interval_foregrounded_ = |
- base::TimeDelta::FromSeconds(kDefaultMonitoringIntervalSeconds); |
- monitoring_interval_backgrounded_ = |
- base::TimeDelta::FromSeconds(kMonitoringIntervalBackgroundedSeconds); |
- |
- // Override default parameters with variations. |
- static constexpr char kMemoryCoordinatorV0Trial[] = "MemoryCoordinatorV0"; |
- std::map<std::string, std::string> params; |
- variations::GetVariationParams(kMemoryCoordinatorV0Trial, ¶ms); |
- SetIntVariationParameter(params, "expected_renderer_size", |
- &expected_renderer_size_); |
- SetIntVariationParameter(params, "new_renderers_until_warning", |
- &new_renderers_until_warning_); |
- SetIntVariationParameter(params, "new_renderers_until_critical", |
- &new_renderers_until_critical_); |
- SetIntVariationParameter(params, "new_renderers_back_to_normal", |
- &new_renderers_back_to_normal_); |
- SetIntVariationParameter(params, "new_renderers_back_to_warning", |
- &new_renderers_back_to_warning_); |
- SetSecondsVariationParameter(params, "monitoring_interval", |
- &monitoring_interval_); |
- SetSecondsVariationParameter(params, "monitoring_interval_foregrounded", |
- &monitoring_interval_foregrounded_); |
- SetSecondsVariationParameter(params, "monitoring_interval_backgrounded", |
- &monitoring_interval_backgrounded_); |
-} |
- |
-bool MemoryConditionObserver::ValidateParameters() { |
- return (new_renderers_until_warning_ > new_renderers_until_critical_) && |
- (new_renderers_back_to_normal_ > new_renderers_back_to_warning_) && |
- (new_renderers_back_to_normal_ > new_renderers_until_warning_) && |
- (new_renderers_back_to_warning_ > new_renderers_until_critical_); |
-} |
} // namespace content |