diff --git a/util/arena.cc b/util/arena.cc index 094266a73..96738f8b5 100644 --- a/util/arena.cc +++ b/util/arena.cc @@ -83,8 +83,14 @@ char* Arena::AllocateAligned(size_t bytes, size_t huge_page_tlb_size, size_t reserved_size = ((bytes - 1U) / huge_page_tlb_size + 1U) * huge_page_tlb_size; assert(reserved_size >= bytes); + void* addr = mmap(nullptr, reserved_size, (PROT_READ | PROT_WRITE), - (MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB), 0, 0); + (MAP_PRIVATE | MAP_ANONYMOUS), 0, 0); + + // only supported in kernel's 2.6.34 and above + // void* addr = mmap(nullptr, reserved_size, (PROT_READ | PROT_WRITE), + // (MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB), 0, 0); + if (addr == MAP_FAILED) { Warn(logger, "AllocateAligned fail to allocate huge TLB pages: %s", strerror(errno));