From a964ac32d1d1ff73886f9725fc232c07bd440a21 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Tue, 10 Sep 2013 09:03:34 +0200 Subject: [PATCH] Bug 913953 - Part i: Remove unused ReduceWorkingSet and UnReduceWorkingSet functions; r=ehsan --- ipc/chromium/src/base/process.h | 14 ----- ipc/chromium/src/base/process_posix.cc | 10 --- ipc/chromium/src/base/process_win.cc | 63 ------------------- .../src/chrome/common/child_process_info.h | 1 - 4 files changed, 88 deletions(-) diff --git a/ipc/chromium/src/base/process.h b/ipc/chromium/src/base/process.h index 312f84cacf8..d6bfa64bc72 100644 --- a/ipc/chromium/src/base/process.h +++ b/ipc/chromium/src/base/process.h @@ -65,20 +65,6 @@ class Process { // Returns true if the priority was changed, false otherwise. bool SetProcessBackgrounded(bool value); - // Reduces the working set of memory used by the process. - // The algorithm used by this function is intentionally vague. Repeated calls - // to this function consider the process' previous required Working Set sizes - // to determine a reasonable reduction. This helps give memory back to the OS - // in increments without over releasing memory. - // When the WorkingSet is reduced, it is permanent, until the caller calls - // UnReduceWorkingSet. - // Returns true if successful, false otherwise. - bool ReduceWorkingSet(); - - // Undoes the effects of prior calls to ReduceWorkingSet(). - // Returns true if successful, false otherwise. - bool UnReduceWorkingSet(); - // Releases as much of the working set back to the OS as possible. // Returns true if successful, false otherwise. bool EmptyWorkingSet(); diff --git a/ipc/chromium/src/base/process_posix.cc b/ipc/chromium/src/base/process_posix.cc index c9a7dfcea0a..dd0ed31b3ff 100644 --- a/ipc/chromium/src/base/process_posix.cc +++ b/ipc/chromium/src/base/process_posix.cc @@ -36,16 +36,6 @@ bool Process::SetProcessBackgrounded(bool value) { return true; } -bool Process::ReduceWorkingSet() { - // http://code.google.com/p/chromium/issues/detail?id=8083 - return false; -} - -bool Process::UnReduceWorkingSet() { - // http://code.google.com/p/chromium/issues/detail?id=8083 - return false; -} - bool Process::EmptyWorkingSet() { // http://code.google.com/p/chromium/issues/detail?id=8083 return false; diff --git a/ipc/chromium/src/base/process_win.cc b/ipc/chromium/src/base/process_win.cc index 98a7f46c6d0..a7135cbdd9e 100644 --- a/ipc/chromium/src/base/process_win.cc +++ b/ipc/chromium/src/base/process_win.cc @@ -36,69 +36,6 @@ bool Process::SetProcessBackgrounded(bool value) { return (SetPriorityClass(process_, priority) != 0); } -// According to MSDN, these are the default values which XP -// uses to govern working set soft limits. -// http://msdn.microsoft.com/en-us/library/ms686234.aspx -static const int kWinDefaultMinSet = 50 * 4096; -static const int kWinDefaultMaxSet = 345 * 4096; -static const int kDampingFactor = 2; - -bool Process::ReduceWorkingSet() { - if (!process_) - return false; - // The idea here is that when we the process' working set has gone - // down, we want to release those pages to the OS quickly. However, - // when it is not going down, we want to be careful not to release - // too much back to the OS, as it could cause additional paging. - - // We use a damping function to lessen the working set over time. - // As the process grows/shrinks, this algorithm will lag with - // working set reduction. - // - // The intended algorithm is: - // TargetWorkingSetSize = (LastWorkingSet/2 + CurrentWorkingSet) /2 - - scoped_ptr metrics( - ProcessMetrics::CreateProcessMetrics(process_)); - WorkingSetKBytes working_set; - if (!metrics->GetWorkingSetKBytes(&working_set)) - return false; - - - // We want to compute the amount of working set that the process - // needs to keep in memory. Since other processes contain the - // pages which are shared, we don't need to reserve them in our - // process, the system already has them tagged. Keep in mind, we - // don't get to control *which* pages get released, but if we - // assume reasonable distribution of pages, this should generally - // be the right value. - size_t current_working_set_size = working_set.priv + - working_set.shareable; - - size_t max_size = current_working_set_size; - if (last_working_set_size_) - max_size = (max_size + last_working_set_size_) / 2; // Average. - max_size *= 1024; // Convert to KBytes. - last_working_set_size_ = current_working_set_size / kDampingFactor; - - BOOL rv = SetProcessWorkingSetSize(process_, kWinDefaultMinSet, max_size); - return rv == TRUE; -} - -bool Process::UnReduceWorkingSet() { - if (!process_) - return false; - - if (!last_working_set_size_) - return true; // There was nothing to undo. - - // We've had a reduced working set. Make sure we have lots of - // headroom now that we're active again. - size_t limit = last_working_set_size_ * kDampingFactor * 2 * 1024; - BOOL rv = SetProcessWorkingSetSize(process_, kWinDefaultMinSet, limit); - return rv == TRUE; -} - bool Process::EmptyWorkingSet() { if (!process_) return false; diff --git a/ipc/chromium/src/chrome/common/child_process_info.h b/ipc/chromium/src/chrome/common/child_process_info.h index 334d5b66fb9..1c4b07257b4 100644 --- a/ipc/chromium/src/chrome/common/child_process_info.h +++ b/ipc/chromium/src/chrome/common/child_process_info.h @@ -38,7 +38,6 @@ class ChildProcessInfo { return pid_; } void SetProcessBackgrounded() const { process_.SetProcessBackgrounded(true); } - void ReduceWorkingSet() const { process_.ReduceWorkingSet(); } // Returns an English name of the process type, should only be used for non // user-visible strings, or debugging pages like about:memory.