From a6eb65983db2982e787f7784e6d8f3fc342f536a Mon Sep 17 00:00:00 2001 From: "hpayer@chromium.org" Date: Wed, 2 Oct 2013 13:36:38 +0000 Subject: [PATCH] Tweak default max heap size constants for platforms with swap. Configure platforms with swap memory with larger heap size by default. Also introduce an additional "bucket" between 1GB-2GBs. BUG=None R=hpayer@chromium.org, jkummerow@chromium.org Review URL: https://codereview.chromium.org/24978006 Patch from Ross McIlroy . git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17081 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/defaults.cc | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/defaults.cc b/src/defaults.cc index 301155f..eb9e0de 100644 --- a/src/defaults.cc +++ b/src/defaults.cc @@ -33,6 +33,14 @@ namespace v8 { + +#if V8_OS_ANDROID +const bool kOsHasSwap = false; +#else +const bool kOsHasSwap = true; +#endif + + bool ConfigureResourceConstraintsForCurrentPlatform( ResourceConstraints* constraints) { if (constraints == NULL) { @@ -44,18 +52,22 @@ bool ConfigureResourceConstraintsForCurrentPlatform( // The young_space_size should be a power of 2 and old_generation_size should // be a multiple of Page::kPageSize. - if (physical_memory > 2ul * i::GB) { + if (physical_memory <= 512ul * i::MB) { + constraints->set_max_young_space_size(2 * lump_of_memory); + constraints->set_max_old_space_size(128 * lump_of_memory); + constraints->set_max_executable_size(96 * lump_of_memory); + } else if (physical_memory <= (kOsHasSwap ? 768ul * i::MB : 1ul * i::GB)) { + constraints->set_max_young_space_size(8 * lump_of_memory); + constraints->set_max_old_space_size(256 * lump_of_memory); + constraints->set_max_executable_size(192 * lump_of_memory); + } else if (physical_memory <= (kOsHasSwap ? 1ul * i::GB : 2ul * i::GB)) { + constraints->set_max_young_space_size(16 * lump_of_memory); + constraints->set_max_old_space_size(512 * lump_of_memory); + constraints->set_max_executable_size(256 * lump_of_memory); + } else { constraints->set_max_young_space_size(16 * lump_of_memory); constraints->set_max_old_space_size(700 * lump_of_memory); constraints->set_max_executable_size(256 * lump_of_memory); - } else if (physical_memory > 512ul * i::MB) { - constraints->set_max_young_space_size(8 * lump_of_memory); - constraints->set_max_old_space_size(192 * lump_of_memory); - constraints->set_max_executable_size(192 * lump_of_memory); - } else /* (physical_memory <= 512GB) */ { - constraints->set_max_young_space_size(2 * lump_of_memory); - constraints->set_max_old_space_size(96 * lump_of_memory); - constraints->set_max_executable_size(96 * lump_of_memory); } return true; } @@ -68,4 +80,4 @@ bool SetDefaultResourceConstraintsForCurrentPlatform() { return SetResourceConstraints(&constraints); } -} // namespace v8::internal +} // namespace v8 -- 2.7.4