RFR: 8256155: Allow multiple large page sizes to be used on Linux [v32]
Thomas Stuefe
stuefe at openjdk.java.net
Tue May 11 11:23:07 UTC 2021
On Tue, 11 May 2021 08:41:01 GMT, Stefan Johansson <sjohanss at openjdk.org> wrote:
>> Marcus G K Williams has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 53 commits:
>>
>> - Remove reserve_memory_special_huge_tlbfs mods except assert
>>
>> Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
>> - Merge branch 'master' into update_hlp
>> - Merge branch 'master' into update_hlp
>> - Remove extranous vm_page_size check
>>
>> Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
>> - kstefanj review
>>
>> Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
>> - Set LargePageSizeInBytes to largepage upper limit
>>
>> Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
>> - Merge branch 'master' into update_hlp
>> - Fix merge
>>
>> Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
>> - Merge branch 'master' into update_hlp
>> - Merge branch 'master' into update_hlp
>> - ... and 43 more: https://git.openjdk.java.net/jdk/compare/0790e601...7368e7d4
>
> src/hotspot/os/linux/os_linux.cpp line 3752:
>
>> 3750: } else {
>> 3751: _large_page_size = default_large_page_size;
>> 3752: }
>
> I would prefer turning this around a bit. Currently this will trigger an assert in all_large_pages.contains() if you set `LargePageSizeInBytes=0`. What do you think of instead first checking for the "default" case. Something like:
> Suggestion:
>
> if (FLAG_IS_DEFAULT(LargePageSizeInBytes) ||
> LargePageSizeInBytes == 0 ||
> LargePageSizeInBytes == default_large_page_size) {
> _large_page_size = default_large_page_size;
> log_info(pagesize)("Using the default large page size: " SIZE_FORMAT "%s",
> byte_size_in_exact_unit(_large_page_size),
> exact_unit_for_byte_size(_large_page_size));
> } else {
> if (all_large_pages.contains(LargePageSizeInBytes)) {
> _large_page_size = LargePageSizeInBytes;
> log_info(pagesize)("Overriding default large page size (" SIZE_FORMAT "%s) "
> "using LargePageSizeInBytes: " SIZE_FORMAT "%s",
> byte_size_in_exact_unit(default_large_page_size),
> exact_unit_for_byte_size(default_large_page_size),
> byte_size_in_exact_unit(_large_page_size),
> exact_unit_for_byte_size(_large_page_size));
> } else {
> _large_page_size = default_large_page_size;
> log_info(pagesize)("LargePageSizeInBytes is not a valid large page size (" SIZE_FORMAT "%s) "
> "using the default large page size: " SIZE_FORMAT "%s",
> byte_size_in_exact_unit(LargePageSizeInBytes),
> exact_unit_for_byte_size(LargePageSizeInBytes),
> byte_size_in_exact_unit(_large_page_size),
> exact_unit_for_byte_size(_large_page_size));
> }
> }
>
>
> I also added some additional logging for the three different cases.
+1 for the added warning if the page size given was invalid/not available.
-------------
PR: https://git.openjdk.java.net/jdk/pull/1153
More information about the hotspot-gc-dev
mailing list