RFR: JDK-8313319: [linux] mmap should use MAP_FIXED_NOREPLACE if available [v3]
David Holmes
dholmes at openjdk.org
Wed Aug 23 22:26:45 UTC 2023
On Wed, 23 Aug 2023 09:13:13 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:
>> os::attempt_reserve_memory_at() is used to map memory at a specific address that we fancy. It is not used to replace an existing mapping (hence we omit MAP_FIXED).
>>
>> But it may result in the kernel creating a mapping at a different address if our wish address is blocked; we then have to unmap again. That mmap-munmap cycle is unnecessary.
>>
>> MAP_FIXED_NOREPLACE exists since Linux 4.17 and prevents that unnecessary cycle . We should use that if available. We need to tiptoe around a bit to deal with building on old machines/running on old kernels, though.
>
> Thomas Stuefe 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 four additional commits since the last revision:
>
> - feedback david
> - Merge branch 'master' into JDK-8313319-MAP_FIXED_NOREPLACE
> - Merge branch 'openjdk:master' into JDK-8313319-MAP_FIXED_NOREPLACE
> - DK-8313319-MAP_FIXED_NOREPLACE
Testing was okay.
One typo left but otherwise seems fine to me.
Thanks
src/hotspot/os/linux/os_linux.cpp line 3494:
> 3492: // Since Linux 4.17, the kernel offers MAP_FIXED_NOREPLACE. With this flag, if a pre-
> 3493: // existing mapping exists, the kernel will not map at an alternative point but instead
> 3494: // return an error. We can therefore save that unnecassary mmap-munmap cycle.
unnecessary is still mis-spelt.
-------------
Marked as reviewed by dholmes (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/15170#pullrequestreview-1592493650
PR Review Comment: https://git.openjdk.org/jdk/pull/15170#discussion_r1303598053
More information about the hotspot-runtime-dev
mailing list