Bug #70984 [Ana->Fbk]: Script extreme slow compared to 5.6, MAP_HUGETLB problem?

From: Date: Tue, 22 Mar 2016 12:21:41 +0000
Subject: Bug #70984 [Ana->Fbk]: Script extreme slow compared to 5.6, MAP_HUGETLB problem?
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-200031@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=70984&edit=1

 ID:                 70984
 Updated by:         jpauli@php.net
 Reported by:        arjen at react dot com
 Summary:            Script extreme slow compared to 5.6, MAP_HUGETLB
                     problem?
-Status:             Analyzed
+Status:             Feedback
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   Linux
 PHP Version:        7.0.0RC8
 Block user comment: N
 Private report:     N

 New Comment:

Please try using this snapshot:

  http://snaps.php.net/php-trunk-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/

The commit has been merged to 7.0 and should be part of PHP 7.0.5


Previous Comments:
------------------------------------------------------------------------
[2016-03-18 08:41:27] arjen at react dot com

Added ability to disable huge pages in Zend Memeory Manager through t…
…he environment variable USE_ZEND_ALLOC_HUGE_PAGES=0.

https://github.com/php/php-src/commit/945a661912612cdecd221cd126feda7d4335c33c


So like I said, it's not optional. At least it can be disabled now. But only on trunk, not 7.0?

------------------------------------------------------------------------
[2015-12-08 15:29:10] arjen at react dot com

Optional feature?

It's optional for the opcache (see http://git.php.net/?p=php-src.git;a=commitdiff;h=669f0b39b184593e01e677360fd79b2b63058ca0
can be enabled with --enable-huge-code-pages "PHP should be configured and built with
--enable-huge-code-pages, OS should be configured to provide huge pages.")

However, the MAP_HUGETLB usage in https://github.com/php/php-src/commit/6848cb3f6301db11e1925f4457c0b58c2d169ccf#diff-a87834df314cdb8a36e48f69764933b0L462
cannot be disabled. And if the OS isn't configured to provide huge pages (but MAP_HUGETBL is
stil defined), every mmap call with MAP_HUGETBL apparantly fails.

------------------------------------------------------------------------
[2015-12-08 14:49:06] rasmus@php.net

But why compile in this optional feature if you are not going to use it?
I would assume that general-purpose distro builds are not going to compile in this option.

------------------------------------------------------------------------
[2015-12-08 09:40:43] sjon at hortensius dot net

Yes, this is all obvious. This behavior is caused by https://github.com/php/php-src/commit/6848cb3f6301db11e1925f4457c0b58c2d169ccf
which I think might be a good change as hugepages CAN result in a performance increase; however it
seems to cause more issues that it's worth currently (as misses are too costly).

Documenting nr_hugepages isn't going to fix the significant slowdowns that this feature
currently causes

------------------------------------------------------------------------
[2015-12-08 09:39:49] yohgaki@php.net

@sjon

Your guess seems right. I rebooted my system with 1 huge page and I only get slower PHP 7.0
execution only at the first time.

I should have gotten strace output when my system was performing poorly.

Anyway, PHP may handle mmap error more gracefully.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=70984


--
Edit this bug report at https://bugs.php.net/bug.php?id=70984&edit=1


Thread (16 messages)

« previous php.bugs (#200031) next »