[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Performance regression with reverse merge

From: Stefan Fuhrmann <stefanfuhrmann_at_alice-dsl.de>
Date: Sun, 1 Mar 2009 20:52:36 +0100

On Sunday 01 March 2009 19:02:24 you wrote:
> Here is the 1.5.6 merge timing:
>
> $ time svn merge -r 15456:15455
> http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk ~/TSVN
> --- Reverse-merging r15456 into
> '/home/mphippard/TSVN/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp':
> U
> /home/mphippard/TSVN/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.cpp
> --- Reverse-merging r15456 into
> '/home/mphippard/TSVN/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.h':
> U /home/mphippard/TSVN/src/TortoiseProc/RevisionGraph/RevisionGraphDlg.h
>
> real 0m40.362s
> user 0m1.289s
> sys 0m0.946s
>
> As a reminder, this is what it was for 1.6 RC2:
>
> real 1m13.431s
> user 0m1.899s
> sys 0m1.507s
>
> So it is slower for sure. I'd guess the difference is even worse when
> the network is slower.
>
> Does the tree conflicts work possibly introduce some new checking and
> network turnarounds?

In both cases, 1.6 and 1.5, the client is constantly
talking to the server and vice versa: I see a constant
flow of 4kB/s in and 4kB/s out.

Your numbers are exceptionally good because you
are close to the server. My ping to tortoisesvn.tigris.org
is a pretty constant 187 ms.

And here my numbers again:

version user+sys real
1.4.6 0.060s 15.7s
1.5.6 2.784s 352.2s
1.6.0RC3 2.948s 351.2s

In 1.4.6, most of the runtime seems to be the in diff
routine (~12s). Because your numbers (~1s) are much
better, I assume that SVN needs already 50+ network
round-trips. That seems unnecessary.

Later versions just seem to make worse by a factor
of 20+. Since TSVN is a rather small project, other
projects may be hurt much more as soon as they are
globally dispersed.

It seems that the client sends merge info (or similar
data) for every item in the working copy (or larger
parts of it). When I restrict the merge to small sub-tree,
the results are:

$ time ./svn merge -r 15456:15455
http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/src/TortoiseProc/RevisionGraph
~/TSVN4
--- Reverse-merging r15456 into '/home/stefan/TSVN4/RevisionGraphDlg.cpp':
U /home/stefan/TSVN4/RevisionGraphDlg.cpp
--- Reverse-merging r15456 into '/home/stefan/TSVN4/RevisionGraphDlg.h':
U /home/stefan/TSVN4/RevisionGraphDlg.h

real 1m1.306s
user 0m0.180s
sys 0m0.144s

-- Stefan^2.
Received on 2009-03-01 20:51:02 CET

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.