Skip to content

Commit f014495

Browse files
committed
Don't use mmap
1 parent 86c06d9 commit f014495

File tree

1 file changed

+6
-16
lines changed

1 file changed

+6
-16
lines changed

cp-algo/util/big_alloc.hpp

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,18 @@ namespace cp_algo {
2626

2727
#if CP_ALGO_USE_MMAP
2828
[[nodiscard]] T* allocate(std::size_t n) {
29-
if(n * sizeof(T) < 4 * 1024 * 1024) {
30-
return base::allocate(n);
29+
auto *raw = base::allocate(n);
30+
if(n * sizeof(T) >= (1 << 20)) {
31+
madvise(raw, n, MADV_HUGEPAGE);
32+
madvise(raw, n, MADV_POPULATE_WRITE);
3133
}
32-
n *= sizeof(T);
33-
void* raw = mmap(nullptr, n,
34-
PROT_READ | PROT_WRITE,
35-
MAP_PRIVATE | MAP_ANONYMOUS,
36-
-1, 0);
37-
madvise(raw, n, MADV_HUGEPAGE);
38-
madvise(raw, n, MADV_POPULATE_WRITE);
39-
return static_cast<T*>(raw);
34+
return raw;
4035
}
4136
#endif
4237

4338
#if CP_ALGO_USE_MMAP
4439
void deallocate(T* p, std::size_t n) noexcept {
45-
if(n * sizeof(T) < 4 * 1024 * 1024) {
46-
return base::deallocate(p, n);
47-
}
48-
if(p) {
49-
munmap(p, n * sizeof(T));
50-
}
40+
return base::deallocate(p, n);
5141
}
5242
#endif
5343
};

0 commit comments

Comments
 (0)