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 <cmpilato_at_collab.net>
CollabNet <> www.collab.net <> Distributed Development On Demand
Received on 2010-05-07 05:41:37 CEST