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 <rmcilroy@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17081 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
hpayer@chromium.org 2013-10-02 13:36:38 +00:00
parent 81e4550796
commit a6eb65983d

View File

@ -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