RFR: 8315923: pretouch_memory by atomic-add-0 fragments huge pages unexpectedly
Liming Liu
duke at openjdk.org
Wed Sep 27 12:04:46 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>
-------------
Commit messages:
- Add a comment about the selection of GC and move the changing argument ahead
- Rename pretouch_memory_fallback to pretouch_memory_common
- Take the logic of inclusive ranges back for pretouch to avoid overflow
- Replace tab with space
- 8315923: pretouch_memory by atomic-add-0 fragments huge page unexpectedly
Changes: https://git.openjdk.org/jdk/pull/15781/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=15781&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8315923
Stats: 117 lines in 8 files changed: 105 ins; 6 del; 6 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