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