On Fri, 2009-06-26 at 01:42 +0200, Johan Corveleyn wrote:
> - Why are the rev files read (multiple times over -> see below), although the log info is contained in the reprops files (which are also read)? These reads must be very costly. Is it because that's the only way for the server to reconstruct the line of history (find out which revision to look up next)? Note that we didn't run "svn log -v", so no need to look up related paths.
Because you are running log on a particular path, the rev files must be
consulted to figure out which revisions should be present in the log
output.
FSFS is pretty liberal about opening and seeking around in rev files.
It was designed for deployability and rough scalability, not so much for
raw performance. (I'll put that last point another way: FSFS shouldn't
slow down too much as repositories get bigger in various ways, with some
exceptions, but it's easy to conceive of other designs which would be,
say, 50% faster at any given size.)
That said, sometimes in the past we've found gross inefficiencies in the
higher-level algorithms for repository operations like "log". It's
possible that analysis would find one here. Unfortunately, most of the
tools people have available to do automated analysis (like rwsnoop)
focus on the low-level behavior; to find higher-level algorithmic
inefficiences there is no substitute for understanding the code
involved.
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2365730
Received on 2009-06-26 17:07:52 CEST