RFR: 8315923: pretouch_memory by atomic-add-0 fragments huge pages unexpectedly [v11]
Liming Liu
duke at openjdk.org
Mon Oct 30 03:35:12 UTC 2023
> As described at [JDK-8315923](https://bugs.openjdk.org/browse/JDK-8315923), this patch uses madvise with MADV_POPULATE_WRITE to pretouch memory when supported (since kernel 5.14).
>
> Ran the newly added jtreg test on 64c Neoverse-N1 machines with kernel 4.18, 5.13 and 6.1, and observed that transparent huge pages formed right after pretouch on kernel 6.1. Recorded the time spent on the test in *seconds* with `VERBOSE=time` as the table below, and got that the patch takes improvements when the system call is supported, while does not hurt if not supported:
>
> <table>
> <tr>
> <th>Kernel</th>
> <th colspan="2"><tt>-XX:-TransparentHugePages</tt></th>
> <th colspan="2"><tt>-XX:+TransparentHugePages</tt></th>
> </tr>
> <tr><td></td><td>Unpatched</td><td>Patched</td><td>Unpatched</td><td>Patched</td></tr>
> <tr><td>4.18</td><td>11.30</td><td>11.30</td><td>0.25</td><td>0.25</td></tr>
> <tr><td>5.13</td><td>0.22</td><td>0.22</td><td>3.42</td><td>3.42</td></tr>
> <tr><td>6.1</td><td>0.27</td><td>0.33</td><td>3.54</td><td>0.33</td></tr>
> </table>
Liming Liu 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 19 additional commits since the last revision:
- Merge branch 'openjdk:master' into populate
- Remove the unneccessary class
- Use address to find the mapping of the heap
- Make the test use a smaller heap and exit properly
- Make the jtreg test check the usage of THP
- Untabify
- Improve the use of madvise for pretouching:
1. use madvise when THP is actually used;
2. remove the need of modifing page_size;
3. log the failure of madvise rather than warn.
- Cuddle ptr-operators in pretouch_memory_common
- Use pointer_delta to calculate the distance
- Add a sanity check for MADV_POPULATE_WRITE
- ... and 9 more: https://git.openjdk.org/jdk/compare/ee5dd8f6...f3503519
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/15781/files
- new: https://git.openjdk.org/jdk/pull/15781/files/b33edafd..f3503519
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=15781&range=10
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=15781&range=09-10
Stats: 83846 lines in 2680 files changed: 49990 ins; 19444 del; 14412 mod
Patch: https://git.openjdk.org/jdk/pull/15781.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/15781/head:pull/15781
PR: https://git.openjdk.org/jdk/pull/15781
More information about the hotspot-runtime-dev
mailing list