Re: cvs2git profile data

Alex Bennee <[email protected]> Tue, 14 Dec 2010 17:01:34 +0000
Newsgroups gmane.comp.version-control.subversion.cvs2svn.devel
Message-ID <[email protected]>
On 14 December 2010 05:59, Michael Haggerty <[email protected]> wrote:
> On 12/13/2010 05:42 PM, Alex Bennee wrote:
>> Our repository currently takes around 6 hours to do a full import (not
>> including the actual fast-import into git). It is very much a CPU
>> bound problem with the server showing plenty of spare RAM and not
>> overly stretched in terms of IO.
>>
> <snip>
>
> Thanks for the data.
>
> I suppose that there are two classes of CVS repository--those with few
> tags (e.g., tags only set manually) and those with a huge number of tags
> (e.g., tags set by nightly scripts), and that these two classes will
> have very different performance profiles.  I suspect that yours is one
> of the latter :-)

We don't have any automatic tags but there are a fair number of
branches and releases. The repository itself is fairly huge anyway
totalling around 94093 files on a checkout (helped by at least 3
copies of the Linux kernel).

> The expensive thing about tags is tabulating the possible parents for
> each tag.  This is expensive for many-tag repositories because the
> number of possible parent combinations scales something like
>
>    number_of_files * number_of_revisions_per_file *
> average(number_of_tags_per_revision^2)
>
> It is the average of the square that is fatal.

So if I aggressively exclude some branches and tags will that have a
positive impact?

> In case anybody is interested, here are the top 50 functions by "time"
> (time executing, not including time spent in subroutines), with a few notes:

> <snip>
>>   7610543 1295.604    0.000 1295.604    0.000 {posix.read}
>>  18460594 1285.036    0.000 3576.792    0.000 cvs_file_items.py:937(_adjust_tag_parent)
>>    172135 1245.699    0.007 1245.699    0.007 {posix.fork}
>
> The fork calls come from
> abstract_rcs_revision_manager.py:52(get_content), which suggests that
> you are not using the internal code for extracting content from the CVS
> repository.  The internal code should be much faster; I suggest you give
> it a try.

I used the default options and didn't specify --use-cvs or --use-rcs
so I'm not sure why it did that.

-- 
Alex, homepage: http://www.bennee.com/~alex/
http://www.half-llama.co.uk

------------------------------------------------------
http://cvs2svn.tigris.org/ds/viewMessage.do?dsForumId=1667&dsMessageId=2690709

To unsubscribe from this discussion, e-mail: [[email protected]].