diff options
author | deanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-29 14:05:32 +0000 |
---|---|---|
committer | deanm@chromium.org <deanm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-29 14:05:32 +0000 |
commit | 9a48cbf9d3a95b322fc4af97df4b4a0368013523 (patch) | |
tree | 4d7e00cff8eb408644f0637e10374ec170169fcc | |
parent | 2423881b28e6944b3f61fe70af6222ef0a75d59e (diff) | |
download | chromium_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-- | AUTHORS | 1 | ||||
-rw-r--r-- | chrome/browser/renderer_host/backing_store.cc | 19 |
2 files changed, 16 insertions, 4 deletions
@@ -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. |