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

delta combiner sloooooooowwwwww

From: Daniel Berlin <dberlin_at_dberlin.org>
Date: 2005-02-09 22:57:01 CET

So i went to determine where most of the time on gcc blames were being
spent.

Out of 300 seconds taken on one file, roughly 65% of the time is being
spent composing deltas:

 43.71 115.64 115.64 95953710 0.00 0.00
search_offset_index
 13.34 150.93 35.29 3119295 0.00 0.00 copy_source_ops
  8.17 204.50 21.62 4746 0.00 0.04
svn_txdelta__compose_windows

Notice that it only composed 4746 delta windows (this file had 555
revisions with changes that it was getting fulltexts for), but it called
copy_source_ops over 3 million times, which results in over 95 million
calls to search_offset_index.

That seems wrong :)

On another file, where it takes 9 minutes to run blame:

 58.97 1191.25 1191.25 894014688 0.00 0.00
search_offset_index
 14.79 1490.09 298.84 12389033 0.00 0.00 copy_source_ops
  2.55 1757.91 51.44 19359 0.00 0.00
svn_txdelta__compose_windows
  2.15 1801.29 43.38 197575410 0.00 0.00
svn_txdelta__insert_op

This also seems excessive.

This is at -O2.

If delta combination takes longer than not, it's not a win :). I tried
doing this without delta combining, but it seems that codepath will no
longer work (src_state never gets set anywhere, at least by the fsfs
get_contents handler, because the delta combiner never produces windows
with src_ops in them. If you change it so that the windows have
src_ops, the code blows up because src_state isn't valid)

This is not on the receiving side, it's on the server side that this is
so slow.

In fact, composing the delta windows for one revision seems to take
almost half a second per revision.

This is true of our other files with many revisions as well.
On some files, it seems to take almost half a second per revision to
compose the delta windows.

There must be a way to make this code faster, but for the life of me, i
can't understand the code in question.

If someone could kindly make the delta combiner run at a reasonable
speed (or let it be disabled at least for blame) :P, i believe i'll be
able to move us gcc'ers over to svn :)

I can happily provide shell access to this machine and the repo, for
debugging/profilig/whatever.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Feb 9 22:58:23 2005

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.