I was trying to think of a decent way to automate some testing of the HTTPv2 improvements. I reasoned that 'svnsync' would provide a decent way to test the "push" improvements (syncing local -> remote) as well as the primary "pull" improvement (hitting URLs directly rather than enjoying a VCC discovery PROPFIND dance).
So I hopped onto the CollabNet corporate VPN, installed a trunk Subversion Apache server on a machine inside CollabNet's firewall there in California, and then made a repository 'svn' which had the first 100 revisions of our old Subversion repository. I wrote a CGI script on that box which would delete a second repository (if it existed), recreate it, and enable revprop-changes on it. Then on my local box, I wrote a script which did a similar repos delete/recreate step on a local repos, hit the CGI script on the remote server to delete/recreate the second remote repos (the first is my baseline data), sync from the first remote repos to the my local repos, and then sync from my local repos back to the second remote repos (while timing both of those syncs). Here are the timings: Neon remote->local Serf remote->local V2 V1 V2 V1 48.14 60.92 29.65 27.06 48.63 62.02 29.83 28.65 48.50 60.75 30.09 29.2 51.45 59.28 31.86 30.23 49.18 60.74 80.96% 30.36 28.79 105.46% Neon local->remote Serf local->remote V2 V1 V2 V1 529.86 542.49 461.00 597.18 522.55 572.29 461.79 602.27 527.19 559.07 463.61 611.26 524.08 559.31 466.23 613.41 525.92 558.29 94.20% 463.16 606.03 76.42% I must point out that this wasn't a completely controlled test. My home network and ISP link aren't guaranteed to be operating at any particular rate at any particular time. Now some commentary about the cases. Neon remote->local I expected decent improvement here, as libsvn_ra_neon -- while not upgraded to fully support HTTPv2 -- did get the don't-do-as-many- PROPFINDs changes. I didn't think I'd see this much of a change, though. Neon local->remote I expected very little improvement here because libsvn_ra_neon didn't get any of the commit HTTPv2 improvements. I'm guessing the little bit of improvement we see here was the result of fewer VCC discoveries. Serf remote->local I didn't expect much by way of improvements here because libsvn_ra_serf is already pretty optimized in the PROPFIND space. But ... uh... it got worse? I've got no explanation for this. Serf local->remote Next to Neon remote->local, this is where I would have expected second-best results. Instead, it looks like things went better than anticipated. Can commits in Subversion 1.7 really be that much faster with libsvn_ra_serf? -- C. Michael Pilato <cmpil...@collab.net> CollabNet <> www.collab.net <> Distributed Development On Demand
signature.asc
Description: OpenPGP digital signature