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

svn list -R of medium-size repository takes 10 hours.

From: Carsten Koch <Carsten.Koch_at_icem.com>
Date: 2005-07-21 11:02:19 CEST

I have written a python script (using pysvn) that needs to know
all file/directory names under a certain URL.
The script works fine, but it takes ages to complete.
The underlying problem being that "svn list -R" is extremly slow.

Does anybody know a workaround against the performance problem
of "svn list -R"?

Our repository has been created just a few months ago, so it is
not really big yet, but an "svn list -R" already takes 9 hours,
53 minutes and 56 seconds if run over my 128 kbit/s ISDN line:

/usr/bin/time -v svn list -R http://svn/svn | wc -l
         Command being timed: "svn list -R http://svn/svn"
         User time (seconds): 757.42
         System time (seconds): 6.58
         Percent of CPU this job got: 2%
         Elapsed (wall clock) time (h:mm:ss or m:ss): 9:53:56
         Average shared text size (kbytes): 0
         Average unshared data size (kbytes): 0
         Average stack size (kbytes): 0
         Average total size (kbytes): 0
         Maximum resident set size (kbytes): 0
         Average resident set size (kbytes): 0
         Major (requiring I/O) page faults: 0
         Minor (reclaiming a frame) page faults: 99632
         Voluntary context switches: 206892
         Involuntary context switches: 613
         Swaps: 0
         File system inputs: 0
         File system outputs: 0
         Socket messages sent: 0
         Socket messages received: 0
         Signals delivered: 0
         Page size (bytes): 4096
         Exit status: 0
139529

(This test was run at night with no other load on the ISDN line
  and almost no other load on either machine)

Needless to say that this makes "svn list -R" completely useless for me. ;-)

Even when run directly on the svn server, the same "svn list -R"
command takes about 45 minutes:

/usr/bin/time -v svn list -R http://svn/svn | wc -l
         Command being timed: "svn list -R http://svn/svn"
         User time (seconds): 960.05
         System time (seconds): 32.64
         Percent of CPU this job got: 36%
         Elapsed (wall clock) time (h:mm:ss or m:ss): 44:58.62
         Average shared text size (kbytes): 0
         Average unshared data size (kbytes): 0
         Average stack size (kbytes): 0
         Average total size (kbytes): 0
         Maximum resident set size (kbytes): 0
         Average resident set size (kbytes): 0
         Major (requiring I/O) page faults: 6096
         Minor (reclaiming a frame) page faults: 115157
         Voluntary context switches: 0
         Involuntary context switches: 0
         Swaps: 0
         File system inputs: 0
         File system outputs: 0
         Socket messages sent: 0
         Socket messages received: 0
         Signals delivered: 0
         Page size (bytes): 4096
         Exit status: 0
133250

I know that this is going to be fixed by issue 1809, see
http://subversion.tigris.org/issues/show_bug.cgi?id=1809

Is there anything that I can do in the meantime?
Would a series of non-recursive lists be faster than the
recursive list?
Do I have to implement some kind of cache in the post-commit
hook?

Any hints will be appreciated.

Thanks and Cheers,

Carsten.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Thu Jul 21 11:04:45 2005

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