[K/N] custom alloc: pre-fault OS pages ^KT-55364
On linux, some memory access patterns cause a cascade of page faults. By asking mmap for MAP_POPULATE on linux, the page faults happen up front in a much more efficient manner. Co-authored-by: Troels Lund <troels@google.com> Merge-request: KOTLIN-MR-697 Merged-by: Alexander Shabalin <alexander.shabalin@jetbrains.com>
This commit is contained in:
committed by
Space Cloud
parent
0ac02be534
commit
1ef3561caa
@@ -82,6 +82,9 @@ void* SafeAlloc(uint64_t size) noexcept {
|
||||
} else {
|
||||
#if KONAN_WINDOWS
|
||||
RuntimeFail("mmap is not available on mingw");
|
||||
#elif KONAN_LINUX
|
||||
memory = mmap(nullptr, size, PROT_WRITE | PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE | MAP_NORESERVE | MAP_POPULATE, -1, 0);
|
||||
error = memory == MAP_FAILED;
|
||||
#else
|
||||
memory = mmap(nullptr, size, PROT_WRITE | PROT_READ, MAP_ANONYMOUS | MAP_PRIVATE | MAP_NORESERVE, -1, 0);
|
||||
error = memory == MAP_FAILED;
|
||||
|
||||
Reference in New Issue
Block a user