Skip to content

Commit

Permalink
Merge branch 'PHP-7.0'
Browse files Browse the repository at this point in the history
* PHP-7.0:
  Added ability to disable huge pages in Zend Memeory Manager through the environment variable USE_ZEND_ALLOC_HUGE_PAGES=0.
  • Loading branch information
dstogov committed Mar 17, 2016
2 parents 681de72 + 945a661 commit 48e3459
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion Zend/zend_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit 48e3459

Please sign in to comment.