mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 06:14:49 +02:00
8024838: Significant slowdown due to transparent huge pages
Don't turn on transparent huge pages (-XX:+UseTransparentHugePages) unless explicitly specified on the command line. This has the effect that large pages are never turned on Linux unless the user has explicitly enabled any of the large pages flags: -XX:+UseLargePages, -XX:+UseTransparentHugePages, -XX:+UseHugeTLBFS, and -XX:+UseSHM. Reviewed-by: jwilhelm, tschatzl, brutisso
This commit is contained in:
parent
582aa55e4d
commit
3b34e78d20
3 changed files with 411 additions and 10 deletions
|
@ -3361,13 +3361,15 @@ bool os::Linux::setup_large_page_type(size_t page_size) {
|
|||
if (FLAG_IS_DEFAULT(UseHugeTLBFS) &&
|
||||
FLAG_IS_DEFAULT(UseSHM) &&
|
||||
FLAG_IS_DEFAULT(UseTransparentHugePages)) {
|
||||
// If UseLargePages is specified on the command line try all methods,
|
||||
// if it's default, then try only UseTransparentHugePages.
|
||||
if (FLAG_IS_DEFAULT(UseLargePages)) {
|
||||
UseTransparentHugePages = true;
|
||||
} else {
|
||||
UseHugeTLBFS = UseTransparentHugePages = UseSHM = true;
|
||||
}
|
||||
|
||||
// The type of large pages has not been specified by the user.
|
||||
|
||||
// Try UseHugeTLBFS and then UseSHM.
|
||||
UseHugeTLBFS = UseSHM = true;
|
||||
|
||||
// Don't try UseTransparentHugePages since there are known
|
||||
// performance issues with it turned on. This might change in the future.
|
||||
UseTransparentHugePages = false;
|
||||
}
|
||||
|
||||
if (UseTransparentHugePages) {
|
||||
|
@ -3393,9 +3395,19 @@ bool os::Linux::setup_large_page_type(size_t page_size) {
|
|||
}
|
||||
|
||||
void os::large_page_init() {
|
||||
if (!UseLargePages) {
|
||||
UseHugeTLBFS = false;
|
||||
if (!UseLargePages &&
|
||||
!UseTransparentHugePages &&
|
||||
!UseHugeTLBFS &&
|
||||
!UseSHM) {
|
||||
// Not using large pages.
|
||||
return;
|
||||
}
|
||||
|
||||
if (!FLAG_IS_DEFAULT(UseLargePages) && !UseLargePages) {
|
||||
// The user explicitly turned off large pages.
|
||||
// Ignore the rest of the large pages flags.
|
||||
UseTransparentHugePages = false;
|
||||
UseHugeTLBFS = false;
|
||||
UseSHM = false;
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue