Edit report at https://bugs.php.net/bug.php?id=73265&edit=1
ID: 73265
Comment by: spam2 at rhsoft dot net
Reported by: spam2 at rhsoft dot net
Summary: PHP7 dramatically slower in some cases
Status: Open
Type: Bug
Package: Performance problem
Operating System: Linux
PHP Version: 7.0.14
Block user comment: N
Private report: N
New Comment:
since i have one instance with a normal memory usage maybe it depends on some specific part of my
php.ini and you could even reprodcue the behavior with it easily on your machine?
[root@testserver:~]$ cat /etc/php.ini
[PHP]
default_charset = "ISO-8859-1"
zend.enable_gc = 0
zend.detect_unicode = 0
register_argc_argv = 0
register_globals = 0
always_populate_raw_post_data = -1
upload_tmp_dir = "/var/www/uploadtemp"
open_basedir = ""
include_path =
".:/www/phpincludes:/usr/share/pear:/usr/share/php:/usr/share/php/php-reader"
error_log =
"/Volumes/dune/www-servers/_logs/php_error.log"
zlib.output_compression = 0
zlib.output_compression_level = 4
max_execution_time = 120
max_input_time = 120
max_input_nesting_level = 32
memory_limit = "-1"
post_max_size = "100M"
upload_max_filesize = "100M"
file_uploads = 1
max_file_uploads = 30
allow_url_fopen = 1
allow_url_include = 0
realpath_cache_size = 64K
realpath_cache_ttl = 300
error_reporting = E_ALL
docref_root = "http://at.php.net/manual/de/"
docref_ext = ".php"
disable_functions = ""
disable_classes = ""
engine = 1
short_open_tag = 1
asp_tags = 0
y2k_compliance = 1
output_buffering = 0
output_handler = ""
implicit_flush = 0
expose_php = 0
display_errors = 1
display_startup_errors = 1
log_errors = 1
log_errors_max_len = 2048
html_errors = 0
track_errors = 0
warn_plus_overloading = 1
enable_dl = 0
cgi.force_redirect = 0
cgi.rfc2616_headers = 0
fastcgi.impersonate = 1
ignore_repeated_errors = 0
ignore_repeated_source = 0
arg_separator.output = "&"
arg_separator.input = "&"
variables_order = "EGPCS"
default_mimetype = "text/html"
default_socket_timeout = 10
auto_detect_line_endings = 0
unserialize_callback_func = ""
precision = 14
serialize_precision = 17
user_agent = "PHP"
gd.jpeg_ignore_warning = 1
highlight.string = "#dd0000"
highlight.comment = "#ff8000"
highlight.keyword = "#007700"
highlight.bg = "#ffffff"
highlight.default = "#0000bb"
highlight.html = "#000000"
error_prepend_string = ""
error_append_string = ""
auto_prepend_file = ""
auto_append_file = ""
[Session]
session.save_path = "/var/www/sessiondata"
session.save_handler = "files"
session.use_cookies = 1
session.use_only_cookies = 1
session.use_strict_mode = 1
session.name = "LOUNGE_ID"
session.referer_check = ""
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = "/"
session.cookie_domain = ""
session.cookie_secure = 0
session.cookie_httponly = 1
session.serialize_handler = "php"
session.gc_probability = 0
session.entropy_file = "/dev/urandom"
session.entropy_length = 16
session.cache_limiter = "nocache"
session.cache_expire = 180
session.use_trans_sid = 0
session.bug_compat_42 = 0
session.bug_compat_warn = 0
session.hash_function = 1
session.hash_bits_per_character = 6
session.upload_progress.enabled = 1
session.lazy_write = 1
session.sid_bits_per_character = 5
session.sid_length = 40
url_rewriter.tags = "disabled"
[MySQLI]
mysqli.default_host = "localhost"
mysqli.default_port = 3306
mysqli.default_socket = "/var/lib/mysql/mysql.sock"
mysqli.default_user = ""
mysqli.default_password = ""
mysqli.reconnect = 1
mysqli.max_links = 300
[mysqlnd]
mysqlnd.collect_statistics = 0
mysqlnd.collect_memory_statistics = 0
mysqlnd.debug = 0
mysqlnd.net_read_timeout = 60
pdo_mysql.default_socket = /var/lib/mysql/mysql.sock
[Assertion]
assert.active = 0
assert.quiet_eval = 0
[Sockets]
sockets.use_system_read = 1
[bcmath]
bcmath.scale = 20
[soap]
soap.wsdl_cache_enabled = 1
soap.wsdl_cache_dir = "/var/www/uploadtemp"
soap.wsdl_cache_ttl = 5
[mbstring]
mbstring.language = "German"
mbstring.internal_encoding = "ISO-8859-1"
mbstring.http_input = "auto"
mbstring.encoding_translation = 0
mbstring.detect_order = "auto"
mbstring.func_overload = 0
[Date]
date.timezone = "Europe/Vienna"
[browscap]
browscap = "/etc/php/browscap.ini"
Previous Comments:
------------------------------------------------------------------------
[2016-12-15 11:34:22] spam2 at rhsoft dot net
yeah i saw the repeatet ini stuff too and though "WTF when the script is already running"
- the difference is 100 MB versus 10 MB memory usage
root 26262 0.0 0.1 44020 10256 pts/1 S<+ 12:30 0:00 /usr/bin/php -n
/usr/local/bin/check-dbmail-service.php 20143 dbmail-imapd
root 26267 5.2 1.7 277092 105008 pts/1 S<+ 12:30 0:00 /usr/bin/php
/usr/local/bin/check-dbmail-service.php 20143 dbmail-imapd
P.S: that's 7.1.0 since my testserver which is currently running 7.1 to test our software
against but the behavior auf 7.0.14 is pretty identical
------------------------------------------------------------------------
[2016-12-15 11:25:43] nikic@php.net
Unfortunately, the massif profile is missing lots of symbols. If possible, can you rerun this with
complete debug symbols?
Assuming this is not just an artifact of broken symbols, the profile does show that most of the
memory usage seems to come from zend_parse_ini_file(), which would be very unusual. (This could also
explain why you're seeing a difference in 7.0.14, because there were some changes to the ini
parser.)
Can you please check whether running PHP without ini (-n) changes the situation?
------------------------------------------------------------------------
[2016-12-15 10:20:42] spam2 at rhsoft dot net
extensions are also out of question - the tiny leeop-script from comment [2016-12-15 00:24 UTC]
consumes 90 MB resident memory sceonds after start with all loadablke modules disabled
[root@testserver:~]$ php -m
[PHP Modules]
bz2
Core
date
filter
libxml
mysqlnd
pcre
readline
Reflection
SPL
standard
xml
zlib
[root@testserver:~]$ ps aux | grep php
dbmail 13097 0.5 1.4 128576 91064 ? SNs 11:17 0:00 /usr/bin/php
/usr/local/bin/check-dbmail-service.php 20143 dbmail-imapd
------------------------------------------------------------------------
[2016-12-15 01:48:06] spam2 at rhsoft dot net
no it won't - the binary is already compiled with --disable-huge-code-pages and keep in mind
that this script is CLI, that setting affects opcode and as you can see in my previous comments for
CLI opcache is even not loaded at all since the webservers have their own "php.ini" with
PHPIniDir in the httpd.conf
you have the whole script in my comment from [2016-12-15 00:24 UTC] and there is no sane reason to
allocate 100 MB memory for that
with some luck the php.spec makes it to that comment
_________________
%global dist .fc%fedora.%(echo $(/usr/bin/date +%Y%m%d.%H%M)).rh
%global phpver 7
%global runselftest 1
%global pgo_build 1
%global lto_build 0
%global break_build 0
%global debug_build 0
%global extension_dir %{_libdir}/%{name}/modules
# macro 'php_debug_build' is global and re-used for pecl-builds linked against
# system updated with a php debug-build while 'debug_build' is local and
# allows to be combined with 'break_build' to generate temporary debug builds
# without installing them - both implicit disable 'pgo_build' and 'lto_build'
%if %php_debug_build
%global _include_minidebuginfo 1
%global RH_GCC_DEBUG_OPTION "-g3"
%global RH_CONFIGURE_DEBUG_OPTION "enable-debug"
%global RH_STRIP_BINARY 0
%global pgo_build 0
%global lto_build 0
%else
%if %debug_build
%global _include_minidebuginfo 1
%global RH_GCC_DEBUG_OPTION "-g3"
%global RH_CONFIGURE_DEBUG_OPTION "enable-debug"
%global RH_STRIP_BINARY 0
%global pgo_build 0
%global lto_build 0
%else
%global _include_minidebuginfo 0
%global RH_GCC_DEBUG_OPTION "-g0"
%global RH_CONFIGURE_DEBUG_OPTION "disable-debug"
%global RH_STRIP_BINARY 1
%endif
%endif
# link-time-optimization needs '--disable-gcc-global-regs' for configure
%if %lto_build
%global RH_LTO_CONFIGURE_OPTION "disable-gcc-global-regs"
%else
%global RH_LTO_CONFIGURE_OPTION "enable-gcc-global-regs"
%endif
Summary: PHP Scripting Language
Name: php
Version: 7.0.14
Release: 1%{?dist}
License: PHP/Zend/BSD
Group: Development/Languages
URL: http://www.php.net/
Source0: http://www.php.net/distributions/php-%{version}.tar.xz
Source1: opcache-zendoptimizer.php
Source2: php-httpd-dummy.conf
Source3: php-disabled-autotests.txt
Source4: php-test-dirs.txt
Source5: php-debug.ini
Patch1: %{name}-dlopen.patch
Patch2: %{name}-realpath-cache-openbasedir.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: binutils
BuildRequires: bison
BuildRequires: bzip2-devel
BuildRequires: curl-devel
BuildRequires: cyrus-sasl-devel
BuildRequires: freetype-devel
BuildRequires: gcc-c++
BuildRequires: gd-devel
BuildRequires: gettext-devel
BuildRequires: httpd-devel
BuildRequires: krb5-devel
BuildRequires: libc-client-devel
BuildRequires: libedit-devel
BuildRequires: libjpeg-turbo-devel
BuildRequires: libpng-devel
BuildRequires: libstdc++-devel
BuildRequires: libtidy-devel
BuildRequires: libtool-ltdl-devel
BuildRequires: libxml2-devel
BuildRequires: libzip-devel
BuildRequires: openssl-devel
BuildRequires: pam-devel
BuildRequires: pcre-devel
BuildRequires: perl
BuildRequires: postfix
BuildRequires: re2c
BuildRequires: zlib-devel
Provides: mod_%{name}
Requires: %{name}-common
%description
PHP Scripting Language
%package common
Summary: common files
%package cli
Summary: command-line interface for php
Requires: %{name}-common
Provides: %{name}-cgi, %{name}-readline
%package devel
Summary: files needed for building extensions
Requires: autoconf, automake, pcre-devel, re2c, %{name}-cli
%package bcmath
Summary: bcmath
%package calendar
Summary: calendar
%package ctype
Summary: ctype
%package curl
Summary: curl
%package dom
Summary: dom
%package exif
Summary: exif
%package fileinfo
Summary: fileinfo
%package gd
Summary: gd
%package gettext
Summary: gettext
%package hash
Summary: hash
%package iconv
Summary: iconv
%package imap
Summary: imap
%package json
Summary: json
%package mbstring
Summary: mbstring
%package mysqli
Summary: mysqli
%package opcache
Summary: opcache
%package openssl
Summary: openssl
%package pcntl
Summary: pcntl
%package pdo
Summary: pdo
%package phar
Summary: phar
%package posix
Summary: posix
%package session
Summary: session
%package simplexml
Summary: simplexml
%package soap
Summary: soap
%package sockets
Summary: socket
%package tidy
Summary: tidy
%package tokenizer
Summary: tokenizer
%package xmlreader
Summary: xmlreader
%package xmlwriter
Summary: xmlwriter
%package zip
Summary: zip
# https://bugzilla.redhat.com/show_bug.cgi?id=1371549
%description bcmath
%description calendar
%description cli
%description common
%description ctype
%description curl
%description devel
%description dom
%description exif
%description fileinfo
%description gd
%description gettext
%description hash
%description iconv
%description imap
%description json
%description mbstring
%description mysqli
%description opcache
%description openssl
%description pcntl
%description pdo
%description phar
%description posix
%description session
%description simplexml
%description soap
%description sockets
%description tidy
%description tokenizer
%description xmlreader
%description xmlwriter
%description zip
%prep
%setup -q -n php-%{version}
%patch1 -p1
%patch2 -p1
# drop windows specific headers and fix bogus permissions
rm -f TSRM/tsrm_win32.h TSRM/tsrm_config.w32.h Zend/zend_config.w32.h ext/mysqlnd/config-win.h
ext/standard/winver.h main/win32_internal_function_disabled.h main/win95nt.h
find . -name \*.[ch] -exec chmod 644 {} \;
# delete known failing or skipped tests
%if %runselftest
xargs rm -f < %{SOURCE3}
%else
xargs rm -rf < %{SOURCE4}
%endif
%build
# force use of system libtool and regenerate configure scripts
libtoolize --force --copy --quiet
cat aclocal --print-ac-dir/{libtool,ltoptions,ltsugar,ltversion,lt~obsolete}.m4 >
build/libtool.m4
touch configure.in
./buildconf --force
# compiler and linker flags
%if %lto_build
RH_LTO_FLAGS="-flto -fno-fat-lto-objects -fuse-ld=gold -fuse-linker-plugin"
%else
RH_LTO_FLAGS="-fno-lto -fuse-ld=gold -fuse-linker-plugin"
%endif
export LOCAL_CFLAGS="-O3 %{RH_GCC_DEBUG_OPTION} -fstack-protector-strong
--param=ssp-buffer-size=8 -fipa-pta -fira-loop-pressure -fivopts -fmerge-all-constants
-fsemantic-interposition -ftree-loop-distribution -ftree-loop-if-convert
-ftree-loop-if-convert-stores -ftree-loop-ivcanon -fvect-cost-model=unlimited -fwrapv
-minline-all-stringops -fno-align-labels -fno-exceptions -fno-gcse -fno-math-errno
-fno-strict-aliasing -Wno-pointer-sign -Wno-stack-protector $RH_LTO_FLAGS -Wa,--noexecstack"
export CFLAGS="%{optflags} $LOCAL_CFLAGS"
export CC="gcc $CFLAGS"
export CXXFLAGS="$CFLAGS"
export SH_LDFLAGS="-Wl,--as-needed -Wl,-z,now -Wl,-z,relro -Wl,-z,noexecstack -Wl,-z,nodump
$CFLAGS"
export LDFLAGS="$SH_LDFLAGS -pie -fPIE"
# define extension directory
export EXTENSION_DIR=%{extension_dir}
# configure build process
./configure --quiet \
--host=x86_64-redhat-linux \
--build=x86_64-redhat-linux \
--target=x86_64-redhat-linux \
--prefix=%{_prefix} \
--program-prefix= \
--libdir=%{_libdir}/%{name} \
--disable-all \
--enable-bcmath=shared \
--enable-calendar=shared \
--enable-cli \
--enable-ctype=shared \
--enable-dom=shared \
--enable-exif=shared \
--enable-fileinfo=shared \
--enable-filter \
--enable-gd-native-ttf \
--enable-hash=shared \
--enable-inline-optimization \
--enable-json=shared \
--enable-libxml \
--enable-mbregex \
--enable-mbstring=shared \
--enable-mysqlnd \
--enable-opcache=shared \
--enable-pcntl=shared \
--enable-pdo=shared \
--enable-phar=shared \
--enable-posix=shared \
--enable-re2c-cgoto \
--enable-session=shared \
--enable-shared \
--enable-simplexml=shared \
--enable-soap=shared \
--enable-sockets=shared \
--enable-tokenizer=shared \
--enable-xml \
--enable-xmlreader=shared \
--enable-xmlwriter=shared \
--enable-zip=shared \
--with-apxs2=%{_bindir}/apxs \
--with-bz2=%{_prefix} \
--with-config-file-path=%{_sysconfdir} \
--with-config-file-scan-dir=%{_sysconfdir}/%{name}.lounge.d \
--with-curl=shared,%{_prefix} \
--with-freetype-dir=%{_prefix} \
--with-gd=shared,%{_prefix} \
--with-gettext=shared,%{_prefix} \
--with-iconv=shared \
--with-imap-ssl=%{_prefix} \
--with-imap=shared,%{_prefix} \
--with-kerberos=%{_prefix} \
--with-layout=GNU \
--with-libdir=%{_lib} \
--with-libedit=%{_prefix} \
--with-libxml-dir=%{_prefix} \
--with-libzip=%{_prefix} \
--with-mysql-sock=%{_sharedstatedir}/mysql/mysql.sock \
--with-mysqli=shared,mysqlnd \
--with-openssl=shared,%{_prefix} \
--with-pcre-regex=%{_prefix} \
--with-pcre-jit \
--with-pdo-mysql=shared,mysqlnd \
--with-pic \
--with-system-ciphers \
--with-tidy=shared,%{_prefix} \
--with-zlib \
--with-zlib-dir=%{_prefix} \
--disable-cgi \
--disable-dmalloc \
--disable-dtrace \
--disable-gcov \
--disable-gd-jis-conv \
--disable-huge-code-pages \
--disable-ipv6 \
--disable-opcache-file \
--disable-phpdbg \
--disable-rpath \
--disable-short-tags \
--disable-static \
--%{RH_LTO_CONFIGURE_OPTION} \
--%{RH_CONFIGURE_DEBUG_OPTION}
if test $? != 0; then
tail -500 config.log
: configure failed
exit 1
fi
# build php with 'profile-guided-optimization' when enabled
%if %pgo_build
make %{?_smp_mflags} prof-gen
/usr/bin/bash /rpmbuild/PHP-PGO/profile.sh --php_build $PWD
make prof-clean
make %{?_smp_mflags} prof-use
%else
make %{?_smp_mflags}
%endif
# stop rpmbuild and output infos for usage of the temporary binaries
%if %break_build
cp %{SOURCE5} "$PWD/php-debug.ini" > /dev/null
EXTENSION_DIR="$PWD/modules"
sed -i "s@__EXTENSION_DIR__@$EXTENSION_DIR@" "$PWD/php-debug.ini"
echo -e "\n\n\e[1;31mBREAK-BUILD ENABLED\e[0m\n\n\e[1;32mPLEASE RUN:\e[0m export
PHP_INI_SCAN_DIR=$PWD\n\e[1;32mCLI-BINARY:\e[0m $PWD/sapi/cli/php\n\e[1;32mAPACHE-MODULE:\e[0m
$PWD/libs/libphp7.so\n\e[1;32mWEBSERVER: \e[0m http://localhost:9000\n"
/usr/bin/bash /rpmbuild/PHP-PGO/profile.sh --php_build $PWD --webserveronly 1
exit 1
%endif
# run test-suite when enabled
%if %runselftest
ulimit -s 32712
unset TZ LANG LC_ALL
export LANG="C" TEST_PHP_EXECUTABLE="$PWD/sapi/cli/php"
EXTENSION_DIR="$PWD/modules" PHP_INI_SCAN_DIR="$PWD/modules" NO_INTERACTION=1
MALLOC_CHECK_=2 MYSQL_TEST_HOST="localhost"
MYSQL_TEST_SOCKET="/var/lib/mysql/mysql.sock" MYSQL_TEST_PORT="3306"
MYSQL_TEST_USER="php_autotest" MYSQL_TEST_PASSWD="php_autotest"
MYSQL_TEST_DB="php_autotest"
PDO_MYSQL_TEST_DSN="mysql:host=localhost;dbname=php_autotest"
PDO_MYSQL_TEST_SOCKET="/var/lib/mysql/mysql.sock"
PDO_MYSQL_TEST_USER="php_autotest" PDO_MYSQL_TEST_PASS="php_autotest"
PDO_MYSQL_TEST_ENGINE="MyISAM"
cp %{SOURCE5} "$PWD/tmp-php.ini" > /dev/null
sed -i "s@__EXTENSION_DIR__@$EXTENSION_DIR@" "$PWD/tmp-php.ini"
$TEST_PHP_EXECUTABLE -n -c $PWD/tmp-php.ini $PWD/run-tests.php -n -c $PWD/tmp-php.ini
find /var/www/sessiondata -user builduser -delete
%endif
%install
install -m 0755 -d %{buildroot}%{_sysconfdir} %{buildroot}%{_sysconfdir}/httpd/conf
%{buildroot}%{_libdir}/httpd/modules %{buildroot}%{_datadir}/%{name}
install -m 0644 %{SOURCE1} %{buildroot}%{_datarootdir}/%{name}/zendoptimizer.php
install -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/httpd/conf/httpd.conf
INSTALL_ROOT=%{buildroot} make install
# remove unpackaged files
rm -rf %{buildroot}%{extension_dir}/*.a %{buildroot}%{_bindir}/{phptar} %{buildroot}%{_datadir}/pear
%{buildroot}%{_libdir}/libphp%{phpver}.la %{buildroot}%{_mandir} %{buildroot}%{_sysconfdir}/httpd
%{buildroot}%{_bindir}/phar %{buildroot}%{_bindir}/phar.phar
# strip binaries for non-debug builds
%if %RH_STRIP_BINARY
strip -s --strip-unneeded %{buildroot}%{_libdir}/httpd/modules/libphp%{phpver}.so
%{buildroot}%{extension_dir}/*.so %{buildroot}%{_bindir}/php
%endif
%files
%attr(755,root,root) %{_libdir}/httpd/modules/libphp%{phpver}.so
%files common
%dir %{_datadir}/%{name}
%dir %{_libdir}/%{name}
%dir %{extension_dir}
%files bcmath
%{extension_dir}/bcmath.so
%files calendar
%{extension_dir}/calendar.so
%files cli
%{_bindir}/php
%files ctype
%{extension_dir}/ctype.so
%files curl
%{extension_dir}/curl.so
%files devel
%{_bindir}/php-config
%{_bindir}/phpize
%{_includedir}/php
%{_libdir}/%{name}/build
%files dom
%{extension_dir}/dom.so
%files exif
%{extension_dir}/exif.so
%files fileinfo
%{extension_dir}/fileinfo.so
%files gd
%{extension_dir}/gd.so
%files gettext
%{extension_dir}/gettext.so
%files hash
%{extension_dir}/hash.so
%files iconv
%{extension_dir}/iconv.so
%files imap
%{extension_dir}/imap.so
%files json
%{extension_dir}/json.so
%files mbstring
%{extension_dir}/mbstring.so
%files mysqli
%{extension_dir}/mysqli.so
%files opcache
%{extension_dir}/opcache.so
%{_datarootdir}/%{name}/zendoptimizer.php
%files openssl
%{extension_dir}/openssl.so
%files pcntl
%{extension_dir}/pcntl.so
%files pdo
%{extension_dir}/pdo.so
%{extension_dir}/pdo_mysql.so
%files phar
%{extension_dir}/phar.so
%files posix
%{extension_dir}/posix.so
%files session
%{extension_dir}/session.so
%files simplexml
%{extension_dir}/simplexml.so
%files soap
%{extension_dir}/soap.so
%files sockets
%{extension_dir}/sockets.so
%files tidy
%{extension_dir}/tidy.so
%files tokenizer
%{extension_dir}/tokenizer.so
%files xmlreader
%{extension_dir}/xmlreader.so
%files xmlwriter
%{extension_dir}/xmlwriter.so
%files zip
%{extension_dir}/zip.so
%changelog
* Thu Dec 8 2016 Reindl Harald <h.reindl@thelounge.net>
- update to PHP 7.0.14
- add 'with-pcre-jit' for upcoming 7.1 to configure
* Sat Nov 26 2016 Reindl Harald <h.reindl@thelounge.net>
- make sure that 'selftest' is using the intermediate-binaries in every
case which became obvious on a machine running 7.1.0RC6 and building
7.0.14RC1 resulting in warnings about non-loadable extensions
* Thu Nov 10 2016 Reindl Harald <h.reindl@thelounge.net>
- update to PHP 7.0.13
* Sat Nov 5 2016 Reindl Harald <h.reindl@thelounge.net>
- added patch to enable 'realpath_cache' with enabled 'open_basedir'
we disable 'symlink' and 'link' for years and so CVE-2006-5178 has no point
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5178
* Sat Oct 15 2016 Reindl Harald <h.reindl@thelounge.net>
- macro 'lto_build' enables link-time-optimization which increases
build memory-usage combined with profile-guided-optimization dramatically
but may improve performance for production builds
- adds '--disable-gcc-global-regs' to configure-flags
- adds '-flto -fno-fat-lto-objects -fuse-ld=gold -fuse-linker-plugin' to compiler and
linker flags
* Tue Oct 4 2016 Reindl Harald <h.reindl@thelounge.net>
- add '--disable-huge-code-pages' to configure
- performance seems to be unpredictable and in doubt faster without
* Sat Oct 1 2016 Reindl Harald <h.reindl@thelounge.net>
- macro 'break_build' starts a webserver on port 9000 with the temporary mod_php
- script '/rpmbuild/PHP-PGO/profile.sh' supports as second param 'onlywebserver'
instead profiling and kill it afterwards so we can use it's generate-logic for
'httpd.conf' and 'php.ini' with current locations in the working directory
- remove '-funroll-loops' from compiler-flags - enabled for pgo-builds by
'-fprofile-use'
- add '-fno-exceptions -fvect-cost-model=unlimited -fipa-pta -fsemantic-interposition' to
compiler flags
- add '-fwrapv' to compiler flags to avoid https://bugs.php.net/bug.php?id=71201
- compiler-flags for documentation purpose: '-m64 -O3 -g0 -fopenmp -mfpmath=sse -pipe
-fomit-frame-pointer -finline-functions -fstack-protector-strong --param=ssp-buffer-size=8
-D_FORTIFY_SOURCE=2 -fipa-pta -fira-loop-pressure -fivopts -fmerge-all-constants
-fsemantic-interposition -ftree-loop-distribution -ftree-loop-if-convert
-ftree-loop-if-convert-stores -ftree-loop-ivcanon -fvect-cost-model=unlimited -fwrapv
-minline-all-stringops -fno-align-labels -fno-exceptions -fno-gcse -fno-math-errno
-fno-strict-aliasing -Wformat -Werror=format-security -Wno-pointer-sign -Wno-stack-protector'
* Thu Sep 29 2016 Reindl Harald <h.reindl@thelounge.net>
- change PGO sequence to use "make prof-gen; profile.sh; make prof-clean; make prof-use"
- remove "-Wno-coverage-mismatch" from compiler flags
- https://bugs.php.net/bug.php?id=73111
* Sun Sep 25 2016 Reindl Harald <h.reindl@thelounge.net>
- add '-fmerge-all-constants' to compiler flags
* Sat Sep 24 2016 Reindl Harald <h.reindl@thelounge.net>
- add '-fno-strict-aliasing -fno-align-labels -fno-gcse' to compiler flags
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
Note: When compiling a program using computed gotos, a GCC extension, you may get better
run-time performance if you disable the global common subexpression elimination pass by
adding -fno-gcse to the command line
* Fri Sep 23 2016 Reindl Harald <h.reindl@thelounge.net>
- remove 'ftp', 'xmlrpc' and 'xslt' from build
- rework call of test-suite to use default-settings instead cloned /etc/php.ini
- removed useless options from configure now that we build with system-gd instead bundeled
* Wed Sep 21 2016 Reindl Harald <h.reindl@thelounge.net>
- define 'break_build' and local 'debug_build' macros to stop before tests and
packaging
- ship a 'debug-ini.php' with extensions and 'extension_dir' in the working
directory
- now we can use the built binaries without installing them on the system
- usecase: temporary debug-builds or tests without running the whole build-process
- output tells the needed env-export and how to call the binary
export PHP_INI_SCAN_DIR=/home/builduser/rpmbuild/BUILD/php-7.0.11
CLI-BINARY: /home/builduser/rpmbuild/BUILD/php-7.0.11/sapi/cli/php
* Sun Sep 18 2016 Reindl Harald <h.reindl@thelounge.net>
- use 'profile-guided-optimization' instead of 'link-time-optimization' for
memory/optimize-balance
- define 'pgo_build' macro to disable 'profile-guided-optimization' temporary
- we run scripted requests from a temporary webserver between make-stages to profile our application
- benchmark our cms-system shows 7 percent higher performance for php7
- see: https://software.intel.com/en-us/blogs/2015/10/09/pgo-let-it-go-php
- link with 'nodump' for enhanced security
- remove 'mcrypt' from build
(if-you-are-typing-the-word-mcrypt-into-your-code-you-are-doing-it-wrong)
* Sat Sep 17 2016 Reindl Harald <h.reindl@thelounge.net>
- move all extensions to sub-packages for minimzed dependencies
* Tue Sep 6 2016 Reindl Harald <h.reindl@thelounge.net>
- add '-fivopts -ftree-loop-if-convert -ftree-loop-if-convert-stores -ftree-loop-ivcanon'
to compiler flags
- explicit export of 'CC' environment variable with CFLAGS for optimized builds
- cleanup ./configure params
- use system-gd and disable some autotests (now supported without patches)
- use system-libzip (now supported without patches)
- remove skipped and failing autotests to keep focus on new regressions
* Mon Aug 29 2016 Reindl Harald <h.reindl@thelounge.net>
- cleanup spec-file to build more or less 'vanilla' php with only own optimizations
- add 'php-httpd-dummy.conf' as temporary 'httpd.conf' at build-time for
'apxs' without hacks
* Sun Aug 28 2016 Reindl Harald <h.reindl@thelounge.net>
- add 're2c' to build-requires and '--enable-re2c-cgoto' to configure
* Sat Aug 27 2016 Reindl Harald <h.reindl@thelounge.net>
- build all extensions loadable to share them between httpd and cli
* Fri Aug 19 2016 Reindl Harald <h.reindl@thelounge.net>
- cleanup configure options
- start with '--disable-all' and enable used features
- build without unused modules - improves time for build and selftest
- add '--disable-opcache-file' for smaller builds since we use only the shm-cache
- add '-fno-math-errno -fira-loop-pressure -ftree-loop-distribution' to compiler flags
------------------------------------------------------------------------
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=73265
--
Edit this bug report at https://bugs.php.net/bug.php?id=73265&edit=1