diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c index e040400..05bbdf6 100644 --- a/src/backend/port/sysv_shmem.c +++ b/src/backend/port/sysv_shmem.c @@ -54,7 +54,7 @@ typedef int IpcMemoryId; /* shared memory ID returned by shmget(2) */ #define MAP_HASSEMAPHORE 0 #endif -#define PG_MMAP_FLAGS (MAP_SHARED|MAP_ANONYMOUS|MAP_HASSEMAPHORE) +#define PG_MMAP_FLAGS (MAP_SHARED|MAP_ANONYMOUS|MAP_HASSEMAPHORE|MAP_HUGETLB) /* Some really old systems don't define MAP_FAILED. */ #ifndef MAP_FAILED @@ -407,6 +407,10 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port) { long pagesize = sysconf(_SC_PAGE_SIZE); + /* round up to hugetlb size on x86-64 linux */ + if(pagesize < (1024*2048)) + pagesize = 1024*2048; + /* * Ensure request size is a multiple of pagesize. *