2506 // See the OldPLABSize comment below, but replace 'after promotion' 2507 // with 'after copying'. YoungPLABSize is the size of the survivor 2508 // space per-gc-thread buffers. The default is 4kw. 2509 FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256*K); // Note: this is in words 2510 2511 // OldPLABSize is the size of the buffers in the old gen that 2512 // UseParallelGC uses to promote live data that doesn't fit in the 2513 // survivor spaces. At any given time, there's one for each gc thread. 2514 // The default size is 1kw. These buffers are rarely used, since the 2515 // survivor spaces are usually big enough. For specjbb, however, there 2516 // are occasions when there's lots of live data in the young gen 2517 // and we end up promoting some of it. We don't have a definite 2518 // explanation for why bumping OldPLABSize helps, but the theory 2519 // is that a bigger PLAB results in retaining something like the 2520 // original allocation order after promotion, which improves mutator 2521 // locality. A minor effect may be that larger PLABs reduce the 2522 // number of PLAB allocation events during gc. The value of 8kw 2523 // was arrived at by experimenting with specjbb. 2524 FLAG_SET_CMDLINE(uintx, OldPLABSize, 8*K); // Note: this is in words 2525 2526 // CompilationPolicyChoice=0 causes the server compiler to adopt 2527 // a more conservative which-method-do-I-compile policy when one 2528 // of the counters maintained by the interpreter trips. The 2529 // result is reduced startup time and improved specjbb and 2530 // alacrity performance. Zero is the default, but we set it 2531 // explicitly here in case the default changes. 2532 // See runtime/compilationPolicy.*. 2533 FLAG_SET_CMDLINE(intx, CompilationPolicyChoice, 0); 2534 2535 // Enable parallel GC and adaptive generation sizing 2536 FLAG_SET_CMDLINE(bool, UseParallelGC, true); 2537 FLAG_SET_DEFAULT(ParallelGCThreads, 2538 Abstract_VM_Version::parallel_worker_threads()); 2539 2540 // Encourage steady state memory management 2541 FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100); 2542 2543 // This appears to improve mutator locality 2544 FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false); 2545 2546 // Get around early Solaris scheduling bug 2547 // (affinity vs other jobs on system) 2548 // but disallow DR and offlining (5008695). 2549 FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true); 2550 2551 } else if (match_option(option, "-XX:+NeverTenure", &tail)) { 2552 // The last option must always win. 2553 FLAG_SET_CMDLINE(bool, AlwaysTenure, false); 2554 FLAG_SET_CMDLINE(bool, NeverTenure, true); | 2506 // See the OldPLABSize comment below, but replace 'after promotion' 2507 // with 'after copying'. YoungPLABSize is the size of the survivor 2508 // space per-gc-thread buffers. The default is 4kw. 2509 FLAG_SET_CMDLINE(uintx, YoungPLABSize, 256*K); // Note: this is in words 2510 2511 // OldPLABSize is the size of the buffers in the old gen that 2512 // UseParallelGC uses to promote live data that doesn't fit in the 2513 // survivor spaces. At any given time, there's one for each gc thread. 2514 // The default size is 1kw. These buffers are rarely used, since the 2515 // survivor spaces are usually big enough. For specjbb, however, there 2516 // are occasions when there's lots of live data in the young gen 2517 // and we end up promoting some of it. We don't have a definite 2518 // explanation for why bumping OldPLABSize helps, but the theory 2519 // is that a bigger PLAB results in retaining something like the 2520 // original allocation order after promotion, which improves mutator 2521 // locality. A minor effect may be that larger PLABs reduce the 2522 // number of PLAB allocation events during gc. The value of 8kw 2523 // was arrived at by experimenting with specjbb. 2524 FLAG_SET_CMDLINE(uintx, OldPLABSize, 8*K); // Note: this is in words 2525 2526 // Enable parallel GC and adaptive generation sizing 2527 FLAG_SET_CMDLINE(bool, UseParallelGC, true); 2528 FLAG_SET_DEFAULT(ParallelGCThreads, 2529 Abstract_VM_Version::parallel_worker_threads()); 2530 2531 // Encourage steady state memory management 2532 FLAG_SET_CMDLINE(uintx, ThresholdTolerance, 100); 2533 2534 // This appears to improve mutator locality 2535 FLAG_SET_CMDLINE(bool, ScavengeBeforeFullGC, false); 2536 2537 // Get around early Solaris scheduling bug 2538 // (affinity vs other jobs on system) 2539 // but disallow DR and offlining (5008695). 2540 FLAG_SET_CMDLINE(bool, BindGCTaskThreadsToCPUs, true); 2541 2542 } else if (match_option(option, "-XX:+NeverTenure", &tail)) { 2543 // The last option must always win. 2544 FLAG_SET_CMDLINE(bool, AlwaysTenure, false); 2545 FLAG_SET_CMDLINE(bool, NeverTenure, true); |