Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1041)

Unified Diff: chrome/browser/memory/oom_priority_manager_chromeos.cc

Issue 1188823002: [MemoryPressure] Move chrome/browser/chromeos/* to chrome/browser/memory/*. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/memory/oom_priority_manager_chromeos.cc
diff --git a/chrome/browser/chromeos/memory/oom_priority_manager.cc b/chrome/browser/memory/oom_priority_manager_chromeos.cc
similarity index 86%
rename from chrome/browser/chromeos/memory/oom_priority_manager.cc
rename to chrome/browser/memory/oom_priority_manager_chromeos.cc
index 093cec3c358e7fc17becf391940ac6f983440117..8d266a52301a8b26d209808d1ebaadc22cd1b866 100644
--- a/chrome/browser/chromeos/memory/oom_priority_manager.cc
+++ b/chrome/browser/memory/oom_priority_manager_chromeos.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/chromeos/memory/oom_priority_manager.h"
+#include "chrome/browser/memory/oom_priority_manager.h"
#include <algorithm>
#include <set>
@@ -26,10 +26,8 @@
#include "base/threading/thread.h"
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/browser_process_platform_part_chromeos.h"
-#include "chrome/browser/chromeos/memory/low_memory_observer.h"
-#include "chrome/browser/chromeos/memory/oom_memory_details.h"
-#include "chrome/browser/chromeos/memory/system_memory_stats_recorder.h"
+#include "chrome/browser/memory/oom_memory_details.h"
+#include "chrome/browser/memory/system_memory_stats_recorder.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_iterator.h"
#include "chrome/browser/ui/browser_list.h"
@@ -39,7 +37,6 @@
#include "chrome/browser/ui/tabs/tab_utils.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/url_constants.h"
-#include "chromeos/chromeos_switches.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_types.h"
@@ -48,13 +45,18 @@
#include "content/public/browser/web_contents.h"
#include "content/public/browser/zygote_host_linux.h"
+#ifdef OS_CHROMEOS
James Cook 2015/06/17 21:20:23 #if defined(OS_CHROMEOS)
Georges Khalil 2015/06/18 16:43:01 Done.
+#include "chrome/browser/browser_process_platform_part_chromeos.h"
+#include "chrome/browser/memory/low_memory_observer_chromeos.h"
+#include "chromeos/chromeos_switches.h"
+#endif
+
using base::TimeDelta;
using base::TimeTicks;
using content::BrowserThread;
using content::WebContents;
-namespace chromeos {
-
+namespace memory {
namespace {
// The default interval in seconds after which to adjust the oom_score_adj
@@ -88,14 +90,14 @@ int64 IdFromWebContents(WebContents* web_contents) {
// OomPriorityManager
OomPriorityManager::TabStats::TabStats()
- : is_app(false),
- is_reloadable_ui(false),
- is_playing_audio(false),
- is_pinned(false),
- is_selected(false),
- is_discarded(false),
- renderer_handle(0),
- tab_contents_id(0) {
+ : is_app(false),
+ is_reloadable_ui(false),
+ is_playing_audio(false),
+ is_pinned(false),
+ is_selected(false),
+ is_discarded(false),
+ renderer_handle(0),
+ tab_contents_id(0) {
}
OomPriorityManager::TabStats::~TabStats() {
@@ -109,15 +111,12 @@ OomPriorityManager::OomPriorityManager()
if (!base::MemoryPressureMonitor::Get())
low_memory_observer_.reset(new LowMemoryObserver);
- registrar_.Add(this,
- content::NOTIFICATION_RENDERER_PROCESS_CLOSED,
- content::NotificationService::AllBrowserContextsAndSources());
- registrar_.Add(this,
- content::NOTIFICATION_RENDERER_PROCESS_TERMINATED,
- content::NotificationService::AllBrowserContextsAndSources());
- registrar_.Add(this,
- content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED,
- content::NotificationService::AllBrowserContextsAndSources());
+ registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED,
+ content::NotificationService::AllBrowserContextsAndSources());
+ registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_TERMINATED,
+ content::NotificationService::AllBrowserContextsAndSources());
+ registrar_.Add(this, content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED,
+ content::NotificationService::AllBrowserContextsAndSources());
}
OomPriorityManager::~OomPriorityManager() {
@@ -126,17 +125,13 @@ OomPriorityManager::~OomPriorityManager() {
void OomPriorityManager::Start() {
if (!timer_.IsRunning()) {
- timer_.Start(FROM_HERE,
- TimeDelta::FromSeconds(kAdjustmentIntervalSeconds),
- this,
- &OomPriorityManager::AdjustOomPriorities);
+ timer_.Start(FROM_HERE, TimeDelta::FromSeconds(kAdjustmentIntervalSeconds),
+ this, &OomPriorityManager::AdjustOomPriorities);
}
if (!recent_tab_discard_timer_.IsRunning()) {
recent_tab_discard_timer_.Start(
- FROM_HERE,
- TimeDelta::FromSeconds(kRecentTabDiscardIntervalSeconds),
- this,
- &OomPriorityManager::RecordRecentTabDiscard);
+ FROM_HERE, TimeDelta::FromSeconds(kRecentTabDiscardIntervalSeconds),
+ this, &OomPriorityManager::RecordRecentTabDiscard);
}
start_time_ = TimeTicks::Now();
// If a |LowMemoryObserver| exists we use the old system, otherwise we create
@@ -146,9 +141,9 @@ void OomPriorityManager::Start() {
} else {
base::MemoryPressureMonitor* monitor = base::MemoryPressureMonitor::Get();
if (monitor) {
- memory_pressure_listener_.reset(new base::MemoryPressureListener(
- base::Bind(&OomPriorityManager::OnMemoryPressure,
- base::Unretained(this))));
+ memory_pressure_listener_.reset(
+ new base::MemoryPressureListener(base::Bind(
+ &OomPriorityManager::OnMemoryPressure, base::Unretained(this))));
base::MemoryPressureListener::MemoryPressureLevel level =
monitor->GetCurrentPressureLevel();
if (level ==
@@ -174,7 +169,7 @@ std::vector<base::string16> OomPriorityManager::GetTabTitles() {
std::vector<base::string16> titles;
titles.reserve(stats.size());
TabStatsList::iterator it = stats.begin();
- for ( ; it != stats.end(); ++it) {
+ for (; it != stats.end(); ++it) {
base::string16 str;
str.reserve(4096);
int score = oom_score_map_[it->child_process_host_id];
@@ -201,8 +196,7 @@ bool OomPriorityManager::DiscardTab() {
return false;
// Loop until we find a non-discarded tab to kill.
for (TabStatsList::const_reverse_iterator stats_rit = stats.rbegin();
- stats_rit != stats.rend();
- ++stats_rit) {
+ stats_rit != stats.rend(); ++stats_rit) {
int64 least_important_tab_id = stats_rit->tab_contents_id;
if (DiscardTabById(least_important_tab_id))
return true;
@@ -248,8 +242,7 @@ bool OomPriorityManager::IsReloadableUI(const GURL& url) {
// Prefix-match against the table above. Use strncmp to avoid allocating
// memory to convert the URL prefix constants into std::strings.
for (size_t i = 0; i < arraysize(kReloadableUrlPrefixes); ++i) {
- if (!strncmp(url.spec().c_str(),
- kReloadableUrlPrefixes[i],
+ if (!strncmp(url.spec().c_str(), kReloadableUrlPrefixes[i],
strlen(kReloadableUrlPrefixes[i])))
return true;
}
@@ -267,8 +260,8 @@ bool OomPriorityManager::DiscardTabById(int64 target_web_contents_id) {
WebContents* web_contents = model->GetWebContentsAt(idx);
int64 web_contents_id = IdFromWebContents(web_contents);
if (web_contents_id == target_web_contents_id) {
- LOG(WARNING) << "Discarding tab " << idx
- << " id " << target_web_contents_id;
+ LOG(WARNING) << "Discarding tab " << idx << " id "
+ << target_web_contents_id;
// Record statistics before discarding because we want to capture the
// memory state that lead to the discard.
RecordDiscardStatistics();
@@ -284,17 +277,17 @@ bool OomPriorityManager::DiscardTabById(int64 target_web_contents_id) {
void OomPriorityManager::RecordDiscardStatistics() {
// Record a raw count so we can compare to discard reloads.
discard_count_++;
- UMA_HISTOGRAM_CUSTOM_COUNTS(
- "Tabs.Discard.DiscardCount", discard_count_, 1, 1000, 50);
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Tabs.Discard.DiscardCount", discard_count_, 1,
+ 1000, 50);
// TODO(jamescook): Maybe incorporate extension count?
- UMA_HISTOGRAM_CUSTOM_COUNTS(
- "Tabs.Discard.TabCount", GetTabCount(), 1, 100, 50);
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Tabs.Discard.TabCount", GetTabCount(), 1, 100,
+ 50);
// Record the discarded tab in relation to the amount of simultaneously
// logged in users.
- ash::MultiProfileUMA::RecordDiscardedTab(
- ash::Shell::GetInstance()->session_state_delegate()->
- NumberOfLoggedInUsers());
+ ash::MultiProfileUMA::RecordDiscardedTab(ash::Shell::GetInstance()
+ ->session_state_delegate()
+ ->NumberOfLoggedInUsers());
// TODO(jamescook): If the time stats prove too noisy, then divide up users
// based on how heavily they use Chrome using tab count as a proxy.
@@ -304,16 +297,16 @@ void OomPriorityManager::RecordDiscardStatistics() {
TimeDelta interval = TimeTicks::Now() - start_time_;
int interval_seconds = static_cast<int>(interval.InSeconds());
// Record time in seconds over an interval of approximately 1 day.
- UMA_HISTOGRAM_CUSTOM_COUNTS(
- "Tabs.Discard.InitialTime2", interval_seconds, 1, 100000, 50);
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Tabs.Discard.InitialTime2", interval_seconds,
+ 1, 100000, 50);
} else {
// Not the first discard, so compute time since last discard.
TimeDelta interval = TimeTicks::Now() - last_discard_time_;
int interval_ms = static_cast<int>(interval.InMilliseconds());
// Record time in milliseconds over an interval of approximately 1 day.
// Start at 100 ms to get extra resolution in the target 750 ms range.
- UMA_HISTOGRAM_CUSTOM_COUNTS(
- "Tabs.Discard.IntervalTime2", interval_ms, 100, 100000 * 1000, 50);
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Tabs.Discard.IntervalTime2", interval_ms, 100,
+ 100000 * 1000, 50);
}
// Record chromeos's concept of system memory usage at the time of the
// discard.
@@ -356,8 +349,7 @@ int OomPriorityManager::GetTabCount() const {
// Returns true if |first| is considered less desirable to be killed
// than |second|.
-bool OomPriorityManager::CompareTabStats(TabStats first,
- TabStats second) {
+bool OomPriorityManager::CompareTabStats(TabStats first, TabStats second) {
// Being currently selected is most important to protect.
if (first.is_selected != second.is_selected)
return first.is_selected;
@@ -439,27 +431,29 @@ void OomPriorityManager::Observe(int type,
bool visible = *content::Details<bool>(details).ptr();
if (visible) {
content::RenderProcessHost* render_host =
- content::Source<content::RenderWidgetHost>(source).ptr()->
- GetProcess();
- focused_tab_process_info_ = std::make_pair(render_host->GetID(),
- render_host->GetHandle());
+ content::Source<content::RenderWidgetHost>(source)
+ .ptr()
+ ->GetProcess();
+ focused_tab_process_info_ =
+ std::make_pair(render_host->GetID(), render_host->GetHandle());
// If the currently focused tab already has a lower score, do not
// set it. This can happen in case the newly focused tab is script
// connected to the previous tab.
ProcessScoreMap::iterator it;
it = oom_score_map_.find(focused_tab_process_info_.first);
- if (it == oom_score_map_.end()
- || it->second != chrome::kLowestRendererOomScore) {
+ if (it == oom_score_map_.end() ||
+ it->second != chrome::kLowestRendererOomScore) {
// By starting a timer we guarantee that the tab is focused for
// certain amount of time. Secondly, it also does not add overhead
// to the tab switching time.
if (focus_tab_score_adjust_timer_.IsRunning())
focus_tab_score_adjust_timer_.Reset();
else
- focus_tab_score_adjust_timer_.Start(FROM_HERE,
- TimeDelta::FromMilliseconds(kFocusedTabScoreAdjustIntervalMs),
- this, &OomPriorityManager::OnFocusTabScoreAdjustmentTimeout);
+ focus_tab_score_adjust_timer_.Start(
+ FROM_HERE,
+ TimeDelta::FromMilliseconds(kFocusedTabScoreAdjustIntervalMs),
+ this, &OomPriorityManager::OnFocusTabScoreAdjustmentTimeout);
}
}
break;
@@ -547,8 +541,7 @@ OomPriorityManager::TabStatsList OomPriorityManager::GetTabStatsOnUIThread() {
// static
std::vector<OomPriorityManager::ProcessInfo>
- OomPriorityManager::GetChildProcessInfos(
- const TabStatsList& stats_list) {
+OomPriorityManager::GetChildProcessInfos(const TabStatsList& stats_list) {
std::vector<ProcessInfo> process_infos;
std::set<base::ProcessHandle> already_seen;
for (TabStatsList::const_iterator iterator = stats_list.begin();
@@ -564,8 +557,8 @@ std::vector<OomPriorityManager::ProcessInfo>
continue;
}
- process_infos.push_back(std::make_pair(
- iterator->child_process_host_id, iterator->renderer_handle));
+ process_infos.push_back(std::make_pair(iterator->child_process_host_id,
+ iterator->renderer_handle));
}
return process_infos;
}
@@ -591,14 +584,13 @@ void OomPriorityManager::AdjustOomPrioritiesOnFileThread(
// the end, however, it's a pretty arbitrary range to use. Higher
// values are more likely to be killed by the OOM killer.
float priority = chrome::kLowestRendererOomScore;
- const int kPriorityRange = chrome::kHighestRendererOomScore -
- chrome::kLowestRendererOomScore;
+ const int kPriorityRange =
+ chrome::kHighestRendererOomScore - chrome::kLowestRendererOomScore;
float priority_increment =
static_cast<float>(kPriorityRange) / process_infos.size();
for (const auto& process_info : process_infos) {
int score = static_cast<int>(priority + 0.5f);
- ProcessScoreMap::iterator it =
- oom_score_map_.find(process_info.first);
+ ProcessScoreMap::iterator it = oom_score_map_.find(process_info.first);
// If a process has the same score as the newly calculated value,
// do not set it.
if (it == oom_score_map_.end() || it->second != score) {
@@ -621,4 +613,4 @@ void OomPriorityManager::OnMemoryPressure(
// consider to call PurgeBrowserMemory() before CRITICAL is reached.
}
-} // namespace chromeos
+} // namespace memory

Powered by Google App Engine
This is Rietveld 408576698