Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8082819 | emb-9 | Erik Helin | P3 | Resolved | Fixed | team |
JDK-8086489 | 8u65 | Erik Helin | P3 | Resolved | Fixed | b01 |
JDK-8078170 | 8u60 | Erik Helin | P3 | Resolved | Fixed | b14 |
JDK-8137628 | emb-8u65 | Unassigned | P3 | Resolved | Fixed | b01 |
JDK-8079937 | emb-8u60 | Erik Helin | P3 | Resolved | Fixed | team |
In 'VirtualSpace::initialize' we use 'os::page_size_for_region' to determine the max_commit_granularity of the VirtualSpace. As a result we do not use large pages if the overall size is not large page aligned. However, we could still use large pages in the middle region by setting the size of the lower and upper region accordingly. For example, if we have a size of 241 MB we do not use large pages (4 MB)
Steps to reproduce on Solaris Sparc T4:
java -XX:+PrintCodeCache -XX:-SegmentedCodeCache Loop
CodeCache: size=245760Kb used=3470Kb max_used=3479Kb free=242289Kb
bounds [0xffffffff69000000, 0xffffffff69370000, 0xffffffff78000000]
total_blobs=316 nmethods=76 adapters=154
compilation: enabled
pmap -s [PID]
FFFFFFFF69000000 4096K 4M rwx-- [ anon ]
As we can see, large pages (4M) are used here. Now with a non large page aligned code cache size (241M):
java -XX:+PrintCodeCache -XX:ReservedCodeCacheSize=241M -XX:-SegmentedCodeCache Loop
CodeCache: size=246784Kb used=3467Kb max_used=3474Kb free=243316Kb
bounds [0xffffffff68c00000, 0xffffffff68f70000, 0xffffffff77d00000]
total_blobs=315 nmethods=75 adapters=154
compilation: enabled
pmap -s [PID]
FFFFFFFF68C00000 448K 64K rwx-- [ anon ]
FFFFFFFF68C70000 448K - rwx-- [ anon ]
FFFFFFFF68CE0000 128K 64K rwx-- [ anon ]
FFFFFFFF68D00000 448K - rwx-- [ anon ]
FFFFFFFF68D70000 128K 64K rwx-- [ anon ]
FFFFFFFF68D90000 448K - rwx-- [ anon ]
FFFFFFFF68E00000 64K 64K rwx-- [ anon ]
FFFFFFFF68E10000 448K - rwx-- [ anon ]
FFFFFFFF68E80000 192K 64K rwx-- [ anon ]
FFFFFFFF68EB0000 384K - rwx-- [ anon ]
FFFFFFFF68F10000 384K 64K rwx-- [ anon ]
Instead of large pages we use 64K pages.
Steps to reproduce on Solaris Sparc T4:
java -XX:+PrintCodeCache -XX:-SegmentedCodeCache Loop
CodeCache: size=245760Kb used=3470Kb max_used=3479Kb free=242289Kb
bounds [0xffffffff69000000, 0xffffffff69370000, 0xffffffff78000000]
total_blobs=316 nmethods=76 adapters=154
compilation: enabled
pmap -s [PID]
FFFFFFFF69000000 4096K 4M rwx-- [ anon ]
As we can see, large pages (4M) are used here. Now with a non large page aligned code cache size (241M):
java -XX:+PrintCodeCache -XX:ReservedCodeCacheSize=241M -XX:-SegmentedCodeCache Loop
CodeCache: size=246784Kb used=3467Kb max_used=3474Kb free=243316Kb
bounds [0xffffffff68c00000, 0xffffffff68f70000, 0xffffffff77d00000]
total_blobs=315 nmethods=75 adapters=154
compilation: enabled
pmap -s [PID]
FFFFFFFF68C00000 448K 64K rwx-- [ anon ]
FFFFFFFF68C70000 448K - rwx-- [ anon ]
FFFFFFFF68CE0000 128K 64K rwx-- [ anon ]
FFFFFFFF68D00000 448K - rwx-- [ anon ]
FFFFFFFF68D70000 128K 64K rwx-- [ anon ]
FFFFFFFF68D90000 448K - rwx-- [ anon ]
FFFFFFFF68E00000 64K 64K rwx-- [ anon ]
FFFFFFFF68E10000 448K - rwx-- [ anon ]
FFFFFFFF68E80000 192K 64K rwx-- [ anon ]
FFFFFFFF68EB0000 384K - rwx-- [ anon ]
FFFFFFFF68F10000 384K 64K rwx-- [ anon ]
Instead of large pages we use 64K pages.
- backported by
-
JDK-8078170 VirtualSpace does not use large pages
- Resolved
-
JDK-8079937 VirtualSpace does not use large pages
- Resolved
-
JDK-8082819 VirtualSpace does not use large pages
- Resolved
-
JDK-8086489 VirtualSpace does not use large pages
- Resolved
-
JDK-8137628 VirtualSpace does not use large pages
- Resolved
- blocks
-
JDK-8058354 SPECjvm2008-Derby -2.7% performance regression on Solaris-X64 starting with 9-b29
- Resolved
- relates to
-
JDK-8049864 TestParallelHeapSizeFlags fails with unexpected heap size
- Resolved
(1 blocks, 1 relates to)