summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordeanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-29 14:05:32 +0000
committerdeanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-29 14:05:32 +0000
commit9a48cbf9d3a95b322fc4af97df4b4a0368013523 (patch)
tree4d7e00cff8eb408644f0637e10374ec170169fcc
parent2423881b28e6944b3f61fe70af6222ef0a75d59e (diff)
downloadchromium_src-9a48cbf9d3a95b322fc4af97df4b4a0368013523.zip
chromium_src-9a48cbf9d3a95b322fc4af97df4b4a0368013523.tar.gz
chromium_src-9a48cbf9d3a95b322fc4af97df4b4a0368013523.tar.bz2
Scale backing store cache size.
The approach is borrowed from render_process_host's kMaxRenderersByRamTier. The values were chosen to keep a minimal number of DIBs in the extreme low RAM case, and scale up linearly from there to the previous (constant) value of 5. Patch by Joel Stanley. BUG=12028 Review URL: http://codereview.chromium.org/115452 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17183 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--AUTHORS1
-rw-r--r--chrome/browser/renderer_host/backing_store.cc19
2 files changed, 16 insertions, 4 deletions
diff --git a/AUTHORS b/AUTHORS
index 182aa64..f907400 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -39,3 +39,4 @@ Robert Sesek <rsesek@bluestatic.org>
Janwar Dinata <j.dinata@gmail.com>
Will Hirsch <chromium@willhirsch.co.uk>
Yoav Zilberberg <yoav.zilberberg@gmail.com>
+Joel Stanley <joel@jms.id.au>
diff --git a/chrome/browser/renderer_host/backing_store.cc b/chrome/browser/renderer_host/backing_store.cc
index 8f8a1c9..1516e8b 100644
--- a/chrome/browser/renderer_host/backing_store.cc
+++ b/chrome/browser/renderer_host/backing_store.cc
@@ -4,7 +4,9 @@
#include "chrome/browser/renderer_host/backing_store.h"
+#include "base/sys_info.h"
#include "chrome/browser/renderer_host/render_widget_host.h"
+#include "chrome/common/chrome_constants.h"
namespace {
@@ -12,11 +14,20 @@ typedef OwningMRUCache<RenderWidgetHost*, BackingStore*> BackingStoreCache;
static BackingStoreCache* cache = NULL;
// Returns the size of the backing store cache.
-// TODO(iyengar) Make this dynamic, i.e. based on the available resources
-// on the machine.
static int GetBackingStoreCacheSize() {
- const int kMaxSize = 5;
- return kMaxSize;
+ // This uses a similar approach to GetMaxRendererProcessCount. The goal
+ // is to reduce memory pressure and swapping on low-resource machines.
+ static const int kMaxDibCountByRamTier[] = {
+ 2, // less than 256MB
+ 3, // 256MB
+ 4, // 512MB
+ 5 // 768MB and above
+ };
+
+ static int max_size = kMaxDibCountByRamTier[
+ std::max(base::SysInfo::AmountOfPhysicalMemoryMB() / 256,
+ static_cast<int>(arraysize(kMaxDibCountByRamTier)) - 1)];
+ return max_size;
}
// Creates the backing store for the host based on the dimensions passed in.