Sorry about that. Does the attached PDFed screenshot work for you?

Andi

> -----Original Message-----
> From: Daniel Brown [mailto:[EMAIL PROTECTED]
> Sent: Monday, December 03, 2007 1:21 PM
> To: Andi Gutmans
> Cc: internals@lists.php.net
> Subject: Re: [PHP-DEV] Garbage collector patch
> 
> On Dec 3, 2007 4:01 PM, Andi Gutmans <[EMAIL PROTECTED]> wrote:
> > Hi all,
> >
> >
> >
> > Was hoping to send this off earlier but I was travelling for the
past
> > week and had very limited email access.
> >
> > As promised in the past few weeks we have spent a significant amount
> of
> > time in reviewing the garbage collector work and testing it in our
> > performance lab. Dmitry has been exchanging ideas and patches with
> David
> > Wang during this time. Suffice to say that as I've mentioned in the
> > past, memory management is an extremely sensitive piece of PHP,
which
> is
> > why it was important for us to review this work in great depth
before
> > committing it to the code base.
> >
> >
> >
> > The updated patch still retains the same algorithm as David's
> original
> > implementation however the data structures have been changed in
order
> to
> > work faster and use less memory.
> >
> >
> >
> > The revised patch has the following advantages:
> > - It fixes several crash bugs
> >
> > - Enhances performance by removing several unnecessary checks
> > - The memory overhead was reduced (from 12 to 4 bytes for each
> > heap-allocated zval)
> > - The speed of "clean" PHP code (code that doesn't create cycles)
was
> > improved
> >  - Additional test cases were created
> >
> > The end result is a more stable and faster GC patch. That said we
> have
> > yet to find real-life applications that create significant cycles
> which
> > would benefit from this patch. In fact as you'll see from the
results
> > our tests show an increase in maximum memory use and slower
execution
> > (to be fair they are marginal).
> >
> >
> >
> > We have tested both PHP_5_3 without any patches, the original patch
> and
> > the new patch.
> >
> >
> >
> > The following table shows execution time (seconds for N requests)
and
> > slowdown.
> >
> >
> >
> >         PHP_5_3
> >
> > Original GC patch
> >
> > Current GC patch
> >
> >
> >
> >
> >
> > slowdown
> >
> >
> >
> > slowdown
> >
> > bench
> >
> > 11,550
> >
> > 12,310
> >
> > 6,58%
> >
> > 12,170
> >
> > 5,37%
> >
> > hello
> >
> > 8,781
> >
> > 8,852
> >
> > 0,81%
> >
> > 8,813
> >
> > 0,36%
> >
> > xoops
> >
> > 128,500
> >
> > 135,100
> >
> > 5,14%
> >
> > 130,200
> >
> > 1,32%
> >
> > static
> >
> > 18,540
> >
> > 20,840
> >
> > 12,41%
> >
> > 18,920
> >
> > 2,05%
> >
> > qdig
> >
> > 29,320
> >
> > 30,270
> >
> > 3,24%
> >
> > 29,610
> >
> > 0,99%
> >
> > qdig2
> >
> > 13,960
> >
> > 14,100
> >
> > 1,00%
> >
> > 14,090
> >
> > 0,93%
> >
> > The next table shows memory usage in MB and overhead
> >
> >
> >
> >         PHP_5_3
> >
> > Original GC patch
> >
> > Current GC patch
> >
> >
> >
> >
> >
> > overhead
> >
> >
> >
> > overhead
> >
> > hello
> >
> > 13,750
> >
> > 13,945
> >
> > 1,42%
> >
> > 13,765
> >
> > 0,11%
> >
> > xoops
> >
> > 18,036
> >
> > 18,636
> >
> > 3,33%
> >
> > 18,568
> >
> > 2,95%
> >
> > static
> >
> > 15,300
> >
> > 16,000
> >
> > 4,58%
> >
> > 15,308
> >
> > 0,05%
> >
> > qdig
> >
> > 14,820
> >
> > 15,008
> >
> > 1,27%
> >
> > 14,828
> >
> > 0,05%
> >
> > qdig2
> >
> > 14,824
> >
> > 15,012
> >
> > 1,27%
> >
> > 14,838
> >
> > 0,09%
> >
> >
> >
> > To summarize the patch lead to approx. 5% slowdown and 3% memory
> > overhead for typical applications (as always, you mileage may vary
> > depending on your system's architecture and OS although my
> guesstimate
> > is that you will see even worse results in a 64bit environment). We
> also
> > tested SugarCRM to get another sanity for these results and we got
> > similar results.
> >
> >
> >
> > I am not quite sure where this leaves us with this patch. On one
hand
> I
> > think now the effort has been made it's a good thing to offer it as
> part
> > of PHP. The downside is of course some performance degradation and
> > possible instabilities as this patch continues to stabilize (it took
> > about two releases for us to stabilize the Zend Memory Manager even
> > after in-depth testing due to edge cases in allocation patterns and
> > various extensions, etc...).I'd be surprised if our team has found
> all
> > possible bugs.
> >
> >
> >
> > Personally I think the decision should be either in or out. Adding
> this
> > as a compile option is not a good idea as it would create binary
> > compatibility issues and would be a pain for the community. I think
> my
> > inclination is to commit the patch, not have it #ifdef'ed but always
> > compiled but to have the garbage collection itself turned off by
> default
> > (mainly for stability reasons. Note: the increased memory footprint
> and
> > performance loss also exists with the collection itself turned off).
> We
> > can turn it on when we're in dev for snapshots so that we iron out
> bugs.
> > That said, as you can see from the results most people and real-life
> > applications will be worse off than today.
> >
> >
> >
> > Thanks to David & Dmitry for working hard on this (and everyone else
> who
> > contributed).
> >
> >
> >
> > The stage is open for ideas/thoughts/suggestions J
> >
> >
> > Andi
> >
> >
> 
>     Andi,
> 
>     I don't know about how it worked for anyone else, but the tables
> didn't display properly on Gmail, so I had a hard time keeping up with
> the performance differences.  If you have this in a separate file,
> could you send it to me as an attachment?  I have a few real-world
> benchmarks I'd like to try from the angle of the shared-webhost
> industry (lots of users with horrible code running simultaneously, et
> cetera) which I'd like to compare to your notes.
> 
>     Thanks.
> 
> --
> Daniel P. Brown
> [office] (570-) 587-7080 Ext. 272
> [mobile] (570-) 766-8107
> 
> If at first you don't succeed, stick to what you know best so that you
> can make enough money to pay someone else to do it for you.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to