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

Re: Extremely slow checkout on a large repository

From: Andy Levy <andy.levy_at_gmail.com>
Date: Fri, 12 Oct 2012 11:27:51 -0400

On Fri, Oct 12, 2012 at 11:06 AM, Wei Bai <baiwei.cn_at_gmail.com> wrote:
> Hi, Thanks for replying.
>
>
>
> I'm using svnserve 1.7.5 on a Dell R610 server ( Xeon E5620*2/16GB)
>
> The server is running CentOS 5.5, SSD disk is used to increase IO
> performance.
>
> The repository is very large: 100K+ files, 100K+ revisions, total size of
> the work copy is about 1.5G.
>
>
>
> When I what to check out a new work copy on another linux machine, I found
> it's painfully
>
> slow, it takes about 2 hours. Can anybody tell me if this speed is normal?
>
> I noticed when the svn checkout command is running on client side, there is
> a svnserve process with 100% CPU usage on server side,
>
> does this means the concurrent performance of svn is very bad for checkout
> command?

Not necessarily. In my environment, I typically hit I/O constraints
limiting my checkout performance long before I hit CPU constraints.

If you're performing a checkout and seeing 100% CPU utilization on the
server, you're CPU-bound. With a faster processor, you may see
improved checkout performance. With an SSD (assuming the repository is
on the SSD), you're probably not I/O bound.

How's your memory utilization while checking out? Is it possible that
you're memory constrained and swapping out to disk?

Because of how Subversion stores revisions, it must look at past
revisions to construct the revision you're requesting. Depending upon
a number of factors, this may become CPU and/or memory bound. It's a
trade-off of performance vs. storage efficiency, and there is no one
optimal setting for everyone's repository. The developers have
selected a value which works well enough for most people.

> And this svnserve process will not disappear immediately if I kill the
> client side svn process, it will run for a long time with 100% CPU usage,
> this might be a problem?

It depends on how you're killing the client. If the server doesn't
realize that the client has terminated, it'll keep trying to perform
the checkout.

> Could anyone give some advice on how to optimize the performance of svn on a
> large repository?

First you need to determine your limiting factor. In this case, it
looks like CPU (or memory, once you look into that).
Received on 2012-10-12 17:29:05 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.