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

Re: merge very slow

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: Sun, 15 Jun 2008 18:55:50 +0200

On Sun, Jun 15, 2008 at 17:19, Stefan Küng <tortoisesvn_at_gmail.com> wrote:
> While doing some tests with the VS2005 build I rememberd that the
> devpartner community edition profiler works with VS2005 (it does not
> with VS2008). So I installed it and ran the test merge with profiling
> enabled:
> 84% of the time, the svn.exe spends in raw_poll() in file ne_socket
> (neon). And in that function, the most time is spent with
> ret = select(fdno + 1, &rdfds, &wrfds, NULL, tvp);
> The time spent there is around 4 minutes 17 seconds. Considering the
> whole merge takes about a minute more, I'd say that this is the
> problem.
> Now does anyone know why a select call would take so much time? Does
> that mean the data does not arrive as fast as expected? Or that it
> waits for more data (e.g., to fill a buffer) and then times out and
> returns with the data it already has? Or could it mean that the *send*
> of the data does not immediately send if some buffer is not full yet?
> I'm currently rebuilding everything with VS2008 and I'll do some more
> tests once that's done.

As it turned out, it was a problem with sending.
In neon, ne_socket.c, line 1229 is an
#if defined
statement which would set the TCP_NODELAY option for send sockets. But
for some reason I still haven't figured out completely, that code is
not compiled in. Even though all three conditions are set.
I guess when building with VC6, the old windows headers are used which
have those defined differently. I don't have those headers available
to compare though. One thing I noticed is that IPPROTO_TCP is not a
define but an enum in my windows headers.

So I removed the
#if defined
line from ne_socket.c and compiled again. The fact that simply
removing those lines and not getting any compiler errors clearly shows
that all conditions for the ifdef are met.

The time for my test merge went from more than five minutes to around
2 and a half minute, so I'm not at the same (still very slow) speed as
the RC9 from open.collab.net.

Seems I have to patch neon in my build to get the speed up to par with
a VC6 build.


 oo // \\ "De Chelonian Mobile"
 (_,\/ \_/ \ TortoiseSVN
 \ \_/_\_/> The coolest Interface to (Sub)Version Control
 /_/ \_\ http://tortoisesvn.net
Received on 2008-06-15 18:56:11 CEST

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.