-
Bug
-
Resolution: Unresolved
-
P4
-
11, 17, 21, 24, 25
In `ParallelArguments::initialize_heap_flags_and_sizes`, we use the following to calculate the value of the (large) page size to use:
```
const size_t min_pages = 4; // 1 for eden + 1 for each survivor + 1 for old
const size_t page_sz = os::page_size_for_region_aligned(MinHeapSize, min_pages);
```
As we can see, the value of `MinHeapSize` (often derived ergonomically) is critical.
JDK-8345323 is an example where an incorrect large page size is picked. Even after reverting to the original OldSize value in that change, the underlying problem of selecting an incorrect large page size still persists—either due to changes in MinHeapSize or the available large page sizes.
For example: `-XX:+UseParallelGC -XX:+UseLargePages -XX:LargePageSizeInBytes=1g -XX:+UseNUMA -Xmx1g --version`. Here, `UseNUMA` is included to observe the effects of choosing an incorrect page size.
```
const size_t min_pages = 4; // 1 for eden + 1 for each survivor + 1 for old
const size_t page_sz = os::page_size_for_region_aligned(MinHeapSize, min_pages);
```
As we can see, the value of `MinHeapSize` (often derived ergonomically) is critical.
For example: `-XX:+UseParallelGC -XX:+UseLargePages -XX:LargePageSizeInBytes=1g -XX:+UseNUMA -Xmx1g --version`. Here, `UseNUMA` is included to observe the effects of choosing an incorrect page size.
- relates to
-
JDK-8345323 Parallel GC does not handle UseLargePages and UseNUMA gracefully
-
- Resolved
-