From: Dmitry Stogov Date: Thu, 17 Mar 2016 19:43:42 +0000 (+0300) Subject: Added ability to disable huge pages in Zend Memeory Manager through the environment... X-Git-Tag: php-7.0.5~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=75dd4a7a502c271cd2e69fe46b085614beb771b2;p=php Added ability to disable huge pages in Zend Memeory Manager through the environment variable USE_ZEND_ALLOC_HUGE_PAGES=0. --- diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 6f0542e169..4cf1178c57 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -200,6 +200,10 @@ typedef struct _zend_mm_huge_list zend_mm_huge_list; # define PTR_FMT "0x%0.8lx" #endif +#ifdef MAP_HUGETLB +int zend_mm_use_huge_pages = 1; +#endif + /* * Memory is retrived from OS by chunks of fixed size 2MB. * Inside chunk it's managed by pages of fixed size 4096B. @@ -462,7 +466,7 @@ static void *zend_mm_mmap(size_t size) void *ptr; #ifdef MAP_HUGETLB - if (size == ZEND_MM_CHUNK_SIZE) { + if (zend_mm_use_huge_pages && size == ZEND_MM_CHUNK_SIZE) { ptr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON | MAP_HUGETLB, -1, 0); if (ptr != MAP_FAILED) { return ptr; @@ -2647,6 +2651,12 @@ static void alloc_globals_ctor(zend_alloc_globals *alloc_globals) alloc_globals->mm_heap->custom_heap.std._realloc = realloc; return; } +#endif +#ifdef MAP_HUGETLB + tmp = getenv("USE_ZEND_ALLOC_HUGE_PAGES"); + if (tmp && !zend_atoi(tmp, 0)) { + zend_mm_use_huge_pages = 0; + } #endif ZEND_TSRMLS_CACHE_UPDATE(); alloc_globals->mm_heap = zend_mm_init();