RFR: JDK-8256155: os::Linux Populate all large_page_sizes, select smallest page size in reserve_memory_special_huge_tlbfs* [v9]
Ivan Walulya
iwalulya at openjdk.java.net
Tue Dec 8 16:25:27 UTC 2020
On Mon, 7 Dec 2020 23:35:28 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 incrementally with one additional commit since the last revision:
>
> Fix space format, use Linux:: for local func.
>
> Signed-off-by: Marcus G K Williams <marcus.williams at intel.com>
Changes requested by iwalulya (Committer).
src/hotspot/os/linux/os_linux.cpp line 3726:
> 3724: }
> 3725:
> 3726: void os::Linux::register_large_page_sizes() {
Please refactor to remove duplicated code with` find_large_page_size`, probably use `register_large_page_sizes` to eliminate the need for `find_large_page_size`
src/hotspot/os/linux/os_linux.cpp line 4221:
> 4219: }
> 4220:
> 4221: size_t os::Linux::select_large_page_size(size_t bytes) {
As mentioned by @tstuefe , this is duplicating `size_t os::page_size_for_region(size_t region_size, size_t min_pages, bool must_be_aligned) `
-------------
PR: https://git.openjdk.java.net/jdk/pull/1153
More information about the hotspot-dev
mailing list