RFR: JDK-8256155: os::Linux Populate all large_page_sizes, select smallest page size in reserve_memory_special_huge_tlbfs* [v4]

Marcus G K Williams github.com+168222+mgkwill at openjdk.java.net
Fri Dec 4 00:01:02 UTC 2020


On Thu, 3 Dec 2020 23:48:15 GMT, Marcus G K Williams <github.com+168222+mgkwill at openjdk.org> wrote:

>> When using LargePageSizeInBytes=1G, os::Linux::reserve_memory_special_huge_tlbfs* cannot select large pages smaller than 1G. Code heap usually uses less than 1G, so currently the code precludes code heap from using
>> Large pages in this circumstance and when os::Linux::reserve_memory_special_huge_tlbfs* is called page sizes fall back to Linux::page_size() (usually 4k).
>> 
>> This change allows the above use case by populating all large_page_sizes present in /sys/kernel/mm/hugepages in _page_sizes upon calling os::Linux::setup_large_page_size().
>> 
>> In os::Linux::reserve_memory_special_huge_tlbfs* we then select the largest large page size available in _page_sizes that is smaller than bytes being reserved.
>
> Marcus G K Williams has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains seven additional commits since the last revision:
> 
>  - Adress Comments, Rework changes for PagesizeSet
>    
>    Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
>  - JDK-8257588: Make os::_page_sizes a bitmask #1522
>  - Merge branch 'master' into update_hlp
>  - Merge branch 'update_hlp' of github.com:mgkwill/jdk into update_hlp
>  - Add 2M LargePages to _page_sizes
>    
>    Use 2m pages for large page requests
>    less than 1g on linux when 1G are default
>    pages
>    
>    - Add os::Linux::large_page_size_2m() that
>    returns 2m as size
>    - Add os::Linux::select_large_page_size() to return
>    correct large page size for size_t bytes
>    - Add 2m size to _page_sizes array
>    - Update reserve_memory_special methods
>    to set/use large_page_size based on bytes reserved
>    - Update large page not reserved warnings
>    to include large_page_size attempted
>    - Update TestLargePageUseForAuxMemory.java
>    to expect 2m large pages in some instances
>    
>    Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
>  - Merge remote-tracking branch 'upstream/master' into update_hlp
>  - Add 2M LargePages to _page_sizes
>    
>    Use 2m pages for large page requests
>    less than 1g on linux when 1G are default
>    pages
>    
>    - Add os::Linux::large_page_size_2m() that
>    returns 2m as size
>    - Add os::Linux::select_large_page_size() to return
>    correct large page size for size_t bytes
>    - Add 2m size to _page_sizes array
>    - Update reserve_memory_special methods
>    to set/use large_page_size based on bytes reserved
>    - Update large page not reserved warnings
>    to include large_page_size attempted
>    - Update TestLargePageUseForAuxMemory.java
>    to expect 2m large pages in some instances
>    
>    Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>

src/hotspot/os/linux/os_linux.cpp line 3900:

> 3898:     err);                                               \
> 3899:   } while (0)
> 3900: 

Remove this remnant of UseSHM changes.

-------------

PR: https://git.openjdk.java.net/jdk/pull/1153



More information about the hotspot-gc-dev mailing list