Re: [PHP4BETA] PHP4b3 RC3 Memory usage
| From: | Stig Bakken | Date: | Thu, 11 Nov 1999 11:18:23 +0000 |
| Subject: | Re: [PHP4BETA] PHP4b3 RC3 Memory usage | ||
| References: | 1 | Groups: | php.version4 |
| Request: | Send a blank email to php-version4+get-6133@lists.php.net to get a copy of this message | ||
The second parameter to shutdown_memory_manager sounds to me like a very
good candidate for an .ini setting. :-)
- Stig
On Thu, 11 Nov 1999, Andi Gutmans wrote:
| In main.c line 771 (php_request_shutdown function) change the second
| parameter 0 to a 1. What happens is, we made a change so that memory is
| cached also between requests and not only for the current request, this
| change will make it clean the cache each request. This is better for
| performance but eventually requires more memory. It would change each
| individuals requests' memory usage though. You can also play around with
| MAX_CACHED_MEMORY and MAX_CACHED_ENTRIES in zend_alloc.h if you want which
| control what the maximum size of cached memory is and how many blocks of
| each size to save.
|
| Andi
|
| At 12:37 AM 11/11/99 +0100, Chris Chabot wrote:
| >Ok made the modification as requested, results are:
| >(apache 1.3.9/php4b3 rc4 as described below)
| >
| >start reviewboard scripts (after 20000 requests)
| >1764 7180
| >
| >
| >
| >So it helped a little bit, but not enough to make a huge difference to the
| >problem
| >as described below.. which makes sence since only one of the global
| >variables is
| >an array .. The thing that freaks me out is that its also not a memory leak
| >either ... the memory used stabalises after about 500 hits and doesnt grow
| >after
| >that (tried this upto 5,000,000 hits during a couple of hours :P). So there's
| >something about either the size of the code base (its a rather large
| >project base,
| >eg 340Kb of php script, 8000 lines of code +), or some other unforseen
| >thing i do
| >in these scripts that freak it out, that worked fine under the 3.x series....
| >
| >again my offer is open for people (that i can trust) to play around w/ the
| >code
| >base on this box. But since it is a product of the reviewboard magazine,
| >and fully
| >tm'd and C'd, i couldnt send it to ya'll...
| >
| >
| >Anyways hope im able to help out a bit and that we can get this problem solved
| >before php4 final would hit the shelves :)
| >
| > -- Chris Chabot
| >
| >
| >Andi Gutmans wrote:
| >
| > > Try and edit zend_compile.h and change #define INITIAL_OP_ARRAY_SIZE 64 to
| > > 8. It might help a little bit. Let us know of the results.
| > >
| > > Andi
| > >
| > > At 01:13 PM 11/10/99 +0100, Chris Chabot wrote:
| > > >Ok ive finaly come around to setting up some test cases.
| > > >
| > > > These are the 2 different configurations:
| > > >
| > > > apache 1.3.9 / php 3.0.12
| > > >
| > > > php conf:
| > > >./configure --disable-inline --disable-debug --enable-sysvsem
| > > >--enable-sysvshm \
| > > >--enable-track-vars --with-zlib
| > > >--with-mysql=/usr/local --with-gettext --with-gd \
| > > >--with-ttf --with-apache=../apache_1.3.9
| > > >
| > > > CFLAGS=-O2
| > > >
| > > >And
| > > > Apache 1.3.9 / php 4b3 RC4
| > > >
| > > > php conf:
| > > >
| > > >./configure --disable-inline --disable-debug --enable-sysvsem \
| > > > --enable-sysvshm --enable-track-vars --with-zlib
| > --with-mysql=/usr/local \
| > > > --with-gettext --with-gd --with-ttf --with-apache=../apache_1.3.9 \
| > > > --with-readline --with-ftp --with-mcrypt --with-mhash
| > > >
| > > > CFLAGS=-O2
| > > >
| > > >
| > > >Recorded are 3 states. eg startup mem size, mem size after hitting the <?
| > > >phpinfo(); ?> page a few times (50k times), and after doing a simple mysql
| > > >query script (that basicly
| > > >does a count(*) from table, fetches result in a list($count) =
| > > >mysql_fetch_row($res) statement, and echo's $count.
| > > >
| > > >I also included apache bench's requests a second result, to give some
| > > >insight into php4's normal performance. given the nature of the scripts,
| > > >they shouldnt differ /to/ much since
| > > >there both very small scripts where I/O gives more overhead then the
| > > >scripting envirioment.
| > > >
| > > >
| > > > Start info
| > query
| > > >
| > > >php3 1500 1868 (no leaks) 1948 (no
| > leaks)
| > > >reqs/sec 361.41 349.14
| > > >
| > > >php4 1776 2128 (no leaks) 2208
| > > >reqs/sec 225.99 343.11
| > > >
| > > >
| > > >As you can see php4 is performing a little slower on real simple scripts.
| > > >but its memory usage on the info.html and simplequery.html pages is very
| > > >respectable. A little higher,
| > > >ok, but nothing to be upset about.
| > > >
| > > >What strikes me weird here is that the info page is so much slower, but i
| > > >gues php4 just has a lot more cool modules to dump in the info page.
| > > >
| > > >Now to do this on the reviewboard code (quite complex, more then 100
| > > >variables , and 243 functions in global scope.
| > > >(20k requests)
| > > >
| > > >php3 5088 (no leaks)
| > > >
| > > >php4 starts at 6208 then grows to around 7340 ... keeps hanging
| > > >around that number.
| > > >
| > > >As u can see, there's no memory footprint problem with the basic
| > > >configuration, or basic scripts. But as soon as i unleash some real life
| > > >big scripts @ it (i tried this w/ other
| > > >script bases to, same results) the memory usage is substancialy higher
| > > >then w/ php 3 ... 3 1/3 megs per process extra is a killer for a box with
| > > >100 httpd's open ... thats 300
| > > >megs of memory dude! :) this would definatly scare me away from an
| > upgrade....
| > > >
| > > >if there's any other things i can try, or even give Sascha or rasmus
| > > >access to one of my test boxes to they can play with it (cable modem or t1
| > > >connects, dont wurry) let me know.
| > > >
| > > > -- Chris Chabot
| > > >
| > > > CTO Reviewboard Magazine
| > > >
| > > >
| > > >Sascha Schumann wrote:
| > > >
| > > > > On Tue, Nov 09, 1999 at 09:57:42AM -0500, Rasmus Lerdorf wrote:
| > > > > > This memory usage issue is definitely something we need to
| > address. The
| > > > > > Zend parser should be much more efficient with its memory usage
| > > > because of
| > > > > > the reference counting, and the various extensions should at worst be
| > > > > > using as much memory as PHP 3, so going from 3M to 7M per httpd is a
| > > > > > mystery to me. I think we need to do a bit of scientific testing
| > > > > > here. Have a simple little script that just does a "Hello
World" to
| > > > start
| > > > > > with and bang at it with ab or http_load with both PHP 3 and 4.
| > > > > >
| > > > > > Then make the script do a simple MySQL query and compare the numbers.
| > > > > >
| > > > > > I'll try to find some time today to do a check on my box to see
| > if I can
| > > > > > verify your numbers.
| > > > >
| > > > > I've just sent the attached email to Chris. The page I
| > > > > accessed contained only <?phpinfo()?>, so there is a chance
| > > > > that the leak appears only in complex scripts.
| > > > >
| > > > > --
| > > > >
| > > > > Regards,
| > > > >
| > > > > Sascha Schumann
| > > > > Consultant
| > > > >
| > > > >
| > ------------------------------------------------------------------------
| > > > >
| > > > > Subject: Re: [PHP4BETA] PHP 4.0b3, second try
| > > > > Date: Tue, 9 Nov 1999 16:10:48 +0100
| > > > > From: Sascha Schumann <sascha@schumann.cx>
| > > > > To: Chris Chabot <chabotc@reviewboard.com>
| > > > > References: <Pine.LNX.4.04.9911091245580.22365-100000@tjafs.fast.no>
| > > > <38282CB8.CBE01F77@reviewboard.com> <19991109151912.A16464@schumann.cx>
| > > > <382832A7.43210EA0@reviewboard.com>
| > > > >
| > > > > > ps testing tool i use to test these releases is http_load
| > > > > > (http://www.acme.com/software/http_load/)
| > > > > > i strongly sugest this program to anyone who wants to do some serious
| > > > load
| > > > > > testing.
| > > > >
| > > > > How large is the process at startup time? If it grows
| > > > > drastically during http_load, you probably have found a
| > > > > memory leak.
| > > > >
| > > > > I've compiled 4.0b3-RC3 with
| > > > >
| > > > > CFLAGS="-O2 -march=pentiumpro" \
| > > > > ./configure \
| > > > > --disable-debug \
| > > > > --disable-inline \
| > > > > --with-apache=../apache_1.3.9 \
| > > > > --with-mysql=/local/mysql
| > > > >
| > > > > Apache was compiled then with
| > > > >
| > > > > CFLAGS="-O2 -march=pentiumpro" \
| > > > > ./configure \
| > > > > --prefix=/some/where \
| > > > > --activate-module=src/modules/php4/libphp4.a
| > > > >
| > > > > Now, on startup the process is a little bit larger than 2MB.
| > > > > That includes the complete PHP module. After running 70
| > > > > parallel HTTP queries against a PHP-generated page, the
| > > > > server process hardly grew in size (+70KB).
| > > > >
| > > > > What does your demo page(s) do? Is the effect similar, if the
| > > > > only page you access is "<?phpinfo()?>" ?
| > > > >
| > > > > --
| > > > >
| > > > > Regards,
| > > > >
| > > > > Sascha Schumann
| > > > > Consultant
| > > > >
| > > > >
| > ------------------------------------------------------------------------
| > > > > --
| > > > > PHP 4.0 Beta Mailing List <http://www.php.net/version4/>
| > > > > To unsubscribe, e-mail: php4beta-unsubscribe@lists.php.net
| > > > > For additional commands, e-mail: php4beta-help@lists.php.net
| > > > > To contact the list administrators, e-mail:
| > php4beta-admin@lists.php.net
| > > >
| > > >
| > > >--
| > > >PHP 4.0 Beta Mailing List <http://www.php.net/version4/>
| > > >To unsubscribe, e-mail: php4beta-unsubscribe@lists.php.net
| > > >For additional commands, e-mail: php4beta-help@lists.php.net
| > > >To contact the list administrators, e-mail: php4beta-admin@lists.php.net
| > >
| > > ---
| > > Andi Gutmans <andi@zend.com>
| > > http://www.zend.com/
| > >
| > > --
| > > PHP 4.0 Beta Mailing List <http://www.php.net/version4/>
| > > To unsubscribe, e-mail: php4beta-unsubscribe@lists.php.net
| > > For additional commands, e-mail: php4beta-help@lists.php.net
| > > To contact the list administrators, e-mail: php4beta-admin@lists.php.net
|
| ---
| Andi Gutmans <andi@zend.com>
| http://www.zend.com/
|
|