comparison src/os/linux/vm/os_linux.cpp @ 12840:aa6f2ea19d8f

Merge
author jcoomes
date Fri, 11 Oct 2013 08:27:21 -0700
parents 899ecf76b570 263f2c796d6c
children e4f478e7781b
comparison
equal deleted inserted replaced
12829:c01f4910f5f5 12840:aa6f2ea19d8f
3359 3359
3360 bool os::Linux::setup_large_page_type(size_t page_size) { 3360 bool os::Linux::setup_large_page_type(size_t page_size) {
3361 if (FLAG_IS_DEFAULT(UseHugeTLBFS) && 3361 if (FLAG_IS_DEFAULT(UseHugeTLBFS) &&
3362 FLAG_IS_DEFAULT(UseSHM) && 3362 FLAG_IS_DEFAULT(UseSHM) &&
3363 FLAG_IS_DEFAULT(UseTransparentHugePages)) { 3363 FLAG_IS_DEFAULT(UseTransparentHugePages)) {
3364 // If UseLargePages is specified on the command line try all methods, 3364
3365 // if it's default, then try only UseTransparentHugePages. 3365 // The type of large pages has not been specified by the user.
3366 if (FLAG_IS_DEFAULT(UseLargePages)) { 3366
3367 UseTransparentHugePages = true; 3367 // Try UseHugeTLBFS and then UseSHM.
3368 } else { 3368 UseHugeTLBFS = UseSHM = true;
3369 UseHugeTLBFS = UseTransparentHugePages = UseSHM = true; 3369
3370 } 3370 // Don't try UseTransparentHugePages since there are known
3371 // performance issues with it turned on. This might change in the future.
3372 UseTransparentHugePages = false;
3371 } 3373 }
3372 3374
3373 if (UseTransparentHugePages) { 3375 if (UseTransparentHugePages) {
3374 bool warn_on_failure = !FLAG_IS_DEFAULT(UseTransparentHugePages); 3376 bool warn_on_failure = !FLAG_IS_DEFAULT(UseTransparentHugePages);
3375 if (transparent_huge_pages_sanity_check(warn_on_failure, page_size)) { 3377 if (transparent_huge_pages_sanity_check(warn_on_failure, page_size)) {
3391 3393
3392 return UseSHM; 3394 return UseSHM;
3393 } 3395 }
3394 3396
3395 void os::large_page_init() { 3397 void os::large_page_init() {
3396 if (!UseLargePages) { 3398 if (!UseLargePages &&
3399 !UseTransparentHugePages &&
3400 !UseHugeTLBFS &&
3401 !UseSHM) {
3402 // Not using large pages.
3403 return;
3404 }
3405
3406 if (!FLAG_IS_DEFAULT(UseLargePages) && !UseLargePages) {
3407 // The user explicitly turned off large pages.
3408 // Ignore the rest of the large pages flags.
3409 UseTransparentHugePages = false;
3397 UseHugeTLBFS = false; 3410 UseHugeTLBFS = false;
3398 UseTransparentHugePages = false;
3399 UseSHM = false; 3411 UseSHM = false;
3400 return; 3412 return;
3401 } 3413 }
3402 3414
3403 size_t large_page_size = Linux::setup_large_page_size(); 3415 size_t large_page_size = Linux::setup_large_page_size();