On Sat, Apr 10, 2010 at 11: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/
I like the idea of trading 5% runtime performance for such a large memory savings. This was done with puppettest, yes? I'm thinking of spending some time adding things to it. If you're using something else or have additional performance testing ideas, let me know. It's hard to gauge the "how many of X can we run against a puppetmaster", but I'd love to have more data on relatively comparing releases, OSes, and implementations. Both time and resources. --Michael -- 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.