Brice, This looks great and it's great to see some real(ish) numbers that indicate real performance gains. I'm curious as to how they would look on mongrel.
+100 Rein Henrichs http://puppetlabs.com On Sat, Apr 10, 2010 at 8:32 AM, Brice Figureau < brice-pup...@daysofwonder.com> wrote: > On 04/04/10 22:55, Luke Kanies wrote: > > On Apr 3, 2010, at 9:22 AM, Brice Figureau wrote: > >> I'm proud to post here two patches forming the Puppet Streaming patch. > >> It's rather different and more leightweight than my previous attempt at > >> solving this issue. But it doesn't cover streaming the catalog, it only > >> involves streaming file content, either server side or client side. > >> > >> [snipped myself] > > > > Very nice - I'm really excited you got this done. I'd love to see some > > test results for memory and performance differences. > > I performed a couple of benchmarks. > My test is to run a master and a puppetd on the same machine (with > plenty of RAM). The puppetd requests a manifests that consists of > sourcing a 100MiB file, while both process are sampled every 1s to > capture VSZ and RES. > > The master is runnin > > This bench ran with ruby 1.8.7 on osx 10.5. > > VSZ and RES are in KiB. > > Here are the results: > > without the patch: > time: 27.47s > > VSZmin VSZmax VSZdiff RESmin RESmax RESdiff > master 632096 1052040 419944 31992 349676 317684 > puppetd 612860 879732 266872 13012 227012 214000 > > > with the patch: > time: 28.80s > > VSZmin VSZmax VSZdiff RESmin RESmax RESdiff > master 632096 642496 10400 31976 42432 10456 > puppetd 612860 630060 17200 13020 28580 15560 > > Conclusion: > The patch did great in terms of memory consumption increase (17MiB > compared to 266MiB on the client, and 10Mib compared to 420MiB on the > server). > > Unfortunately it also has an impact on catalog application time (an > increase of 1.4s, 5%). > > I did a couple of research and found that the culprit was Webrick buffer > handling while sending file. On ruby 1.8.7 it uses a buffer of 4 KiB. > Increasing this buffer to 1MiB drastically reduced the catalog > application time to less than 16s. > > This buffer is used only when streaming content in webrick. When sending > whole content as a string, this one is directly sent to the OS which > uses much larger buffers able to sustain the bandwitdh of localhost. > > So, I think we can keep the streaming patch, it adds more advantages > than drawbacks :-) > -- > Brice Figureau > My Blog: http://www.masterzen.fr/ > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Developers" group. > To post to this group, send email to puppet-...@googlegroups.com. > To unsubscribe from this group, send email to > puppet-dev+unsubscr...@googlegroups.com<puppet-dev%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/puppet-dev?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to puppet-...@googlegroups.com. To unsubscribe from this group, send email to puppet-dev+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.