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

Marcus G K Williams github.com+168222+mgkwill at openjdk.java.net
Mon Dec 7 19:48:22 UTC 2020


> 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 pull request now contains 10 commits:

 - Thomas S. Feedback
   
   Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
 - Merge branch 'master' into update_hlp
 - Remove remnant UseSHM change
   
   Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
 - 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>

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

Changes: https://git.openjdk.java.net/jdk/pull/1153/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1153&range=05
  Stats: 71 lines in 4 files changed: 53 ins; 0 del; 18 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1153.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1153/head:pull/1153

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


More information about the hotspot-dev mailing list