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