-
Bug
-
Resolution: Cannot Reproduce
-
P4
-
17
When trying to use 1g pages without any 2m large pages (using numbers for x64 linux, other archs should be the same) available, the request to do so fails. Only if you have reserved enough 2m pages to cover the entire heap the VM uses 1g pages. E.g.
set
/sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages = 30
/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages = 0
Running G1 with:
$ java -Xmx20g -Xms20g -XX:+UseLargePages -XX:LargePageSizeInBytes=1g -XX:+PrintFlagsFinal -XX:+AlwaysPreTouch -XX:+UseG1GC Hello
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 1) <----- !!
[0.058s][warning][gc] Pretouch size 21474836480 chunk size 4194304 page size 4096 <----- !!
[0.403s][warning][gc] Pretouch size 335544320 chunk size 4194304 page size 4096
[0.411s][warning][gc] Pretouch size 335544320 chunk size 4194304 page size 4096
[0.418s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
[0.420s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
[0.427s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
<waits for input>
(and in another console look:
$ cat hugepages-1048576kB/free_hugepages
30
$ cat hugepages-2048kb/free_hugepages
0
Set /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages to 13000 (covering the 20gb too):
[0.001s][warning][gc] LargePageSizeInBytes=1073741824 large_page_size 1073741824
[0.056s][warning][gc] Pretouch size 21474836480 chunk size 1073741824 page size 1073741824 <---- !!
[0.999s][warning][gc] Pretouch size 335544320 chunk size 4194304 page size 4096
[1.009s][warning][gc] Pretouch size 335544320 chunk size 4194304 page size 4096
[1.017s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
[1.020s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
[1.030s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
$ cat hugepages-1048576kB/free_hugepages 10 (i.e. 20 allocated)
$ cat hugepages-2048kb/free_hugepages 13000
Maybe an OS specific issue, i.e. maybe this is how it's supposed to work, that you have to provide both 2M and 1g large pages in such cases. If so, this issue can be closed.
set
/sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages = 30
/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages = 0
Running G1 with:
$ java -Xmx20g -Xms20g -XX:+UseLargePages -XX:LargePageSizeInBytes=1g -XX:+PrintFlagsFinal -XX:+AlwaysPreTouch -XX:+UseG1GC Hello
OpenJDK 64-Bit Server VM warning: Failed to reserve shared memory. (error = 1) <----- !!
[0.058s][warning][gc] Pretouch size 21474836480 chunk size 4194304 page size 4096 <----- !!
[0.403s][warning][gc] Pretouch size 335544320 chunk size 4194304 page size 4096
[0.411s][warning][gc] Pretouch size 335544320 chunk size 4194304 page size 4096
[0.418s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
[0.420s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
[0.427s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
<waits for input>
(and in another console look:
$ cat hugepages-1048576kB/free_hugepages
30
$ cat hugepages-2048kb/free_hugepages
0
Set /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages to 13000 (covering the 20gb too):
[0.001s][warning][gc] LargePageSizeInBytes=1073741824 large_page_size 1073741824
[0.056s][warning][gc] Pretouch size 21474836480 chunk size 1073741824 page size 1073741824 <---- !!
[0.999s][warning][gc] Pretouch size 335544320 chunk size 4194304 page size 4096
[1.009s][warning][gc] Pretouch size 335544320 chunk size 4194304 page size 4096
[1.017s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
[1.020s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
[1.030s][warning][gc] Pretouch size 41943040 chunk size 4194304 page size 4096
$ cat hugepages-1048576kB/free_hugepages 10 (i.e. 20 allocated)
$ cat hugepages-2048kb/free_hugepages 13000
Maybe an OS specific issue, i.e. maybe this is how it's supposed to work, that you have to provide both 2M and 1g large pages in such cases. If so, this issue can be closed.
- relates to
-
JDK-8259496 Parallel GC insists on using large pages although it failed to use them
-
- Closed
-