RFR: 8346005: Parallel: Incorrect page size calculation with UseLargePages [v6]
Albert Mingkun Yang
ayang at openjdk.org
Thu Oct 2 10:10:30 UTC 2025
On Thu, 25 Sep 2025 11:14:46 GMT, Albert Mingkun Yang <ayang at openjdk.org> wrote:
>> Refactor the heap-space and OS memory interface code to clearly separate two related but distinct concepts: `alignment` and `os-page-size`. These are now represented as two fields in `PSVirtualSpace`.
>>
>> The parallel heap consists of four spaces: old, eden, from, and to. The first belongs to the old generation, while the latter three belong to the young generation.
>>
>> The size of any space is always aligned to `alignment`, which also determines the unit for resizing. To keep the implementation simple while allowing flexible per-space commit and uncommit operations, each space must contain at least one OS page. As a result, `alignment` is always greater than or equal to `os-page-size`.
>>
>> When using explicit large pages -- which require pre-allocating large pages before the VM starts -- the actual OS page size is not known until the heap has been reserved. The additional logic in `ParallelScavengeHeap::initialize` detects the OS page size in use and adjusts `alignment` if necessary.
>>
>> Test: tier1–8
>
> Albert Mingkun Yang 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:
>
> - Merge branch 'master' into pgc-largepage
> - Merge branch 'master' into pgc-largepage
> - page-size
> - Merge branch 'master' into pgc-largepage
> - Merge branch 'master' into pgc-largepage
> - Merge branch 'master' into pgc-largepage
> - pgc-largepage
> Why do we need the dance with Parallel being able to set a specific desired_page_size in Universe::reserve_heap()?
Because heap contains subspaces (eden,from,to,old) which needs to be larger than a OS-page in Parallel. Maybe this doesn't have to be this way, but that's what Parallel NUMA relies on currently. It would be much more invasive to change that.
-------------
PR Review: https://git.openjdk.org/jdk/pull/26700#pullrequestreview-3293684851
More information about the hotspot-gc-dev
mailing list