That looks great, Andi.

    Thanks.

On Dec 3, 2007 4:38 PM, Andi Gutmans <[EMAIL PROTECTED]> wrote:
> 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.
>



-- 
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