RFR: 8256155: Allow multiple large page sizes to be used on Linux [v34]
Marcus G K Williams
mgkwill at openjdk.java.net
Wed May 12 20:25:10 UTC 2021
On Wed, 12 May 2021 16:16:01 GMT, Marcus G K Williams <mgkwill at openjdk.org> wrote:
>> Marcus G K Williams has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Check large pages =< _large_page_size
>>
>> Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
>
> src/hotspot/os/linux/os_linux.cpp line 3789:
>
>> 3787: break;
>> 3788: }
>> 3789: }
>
>> While doing some manual testing I found a problem when setting `LargePageSizeInBytes=1g`, but without having any 1g pages configured. In that case, we will turn off `UseLargePages` even if there are 2m pages configured.
>>
>> Not sure if we should address this as part of this change or as a follow up, but I think the `hugetlbfs_sanity_check(...)` should check that at least one of the supported large pages are configured, not just the one set as the maximum large page size.
>
> @kstefanj How about this as a solution?
Or perhaps we could do the following, if passing in each large_page size will affect shm etc.
(os_linux.cpp at 3674):
if (UseHugeTLBFS) {
bool warn_on_failure = !FLAG_IS_DEFAULT(UseHugeTLBFS);
for (size_t large_page_size = page_size; large_page_size != (size_t)os::vm_page_size();
large_page_size = _page_sizes.next_smaller(large_page_size)) {
if (hugetlbfs_sanity_check(warn_on_failure, large_page_size)) {
UseSHM = false;
return true;
}
}
UseHugeTLBFS = false;
}
instead of:
```
if (UseHugeTLBFS) {
bool warn_on_failure = !FLAG_IS_DEFAULT(UseHugeTLBFS);
if (hugetlbfs_sanity_check(warn_on_failure, page_size)) {
UseSHM = false;
return true;
}
UseHugeTLBFS = false;
}
-------------
PR: https://git.openjdk.java.net/jdk/pull/1153
More information about the hotspot-gc-dev
mailing list