[darcs-devel] announcing darcs 2.0.0pre2

2007-12-16 Thread David Roundy
I am pleased to announce the availability of the second prerelease of darcs
two, darcs 2.0.0pre2.  This release fixes several severe performance bugs
that were present in the first prerelease.  These issues were identified
and fixed thanks to the helpful testing of Simon Marlow and Peter Rockai.
We also added support for compilation under ghc 6.4, so even more users
should be able to test this release.

As before, some information about the prerelease is available at:

http://wiki.darcs.net/index.html/DarcsTwo

You can either use darcs to grab the latest darcs, or you can download a
tarball at:

http://darcs.net/darcs2.0.0pre2.tar.gz

A few outstanding performance issues are:

1. darcs whatsnew performance has dropped for hashed repositories due to no
   longer tracking file-modification times.  We need to reenable this
   feature, but it's not quite clear how best to do so.

2. darcs get on a hashed repository is not as fast as the older darcs get
   --partial.  We could fix this by enabling the downloading of a single
   file _darcs/pristine.hashed.tar.gz.  This eliminates the potential
   benefits of caching file downloads on darcs get (currently a second
   "get" of the same remote repository is almost free if you've enabled a
   global cache), so we may want to make this behavior optional.

I hope we can get even more testing with this release, and look forward to
finding and fixing any remaining performance regressions (or bugs, of
course)!

David
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre2

2007-12-17 Thread Simon Marlow
David Roundy wrote:
> I am pleased to announce the availability of the second prerelease of darcs
> two, darcs 2.0.0pre2.

Thanks!

Continuing my performance tests, I tried unpulling and re-pulling a bunch 
of patches in a GHC tree.  I'm unpulling about 400 patches using 
--from-tag, and then pulling them again from a local repo.  Summary: darcs2 
is about 10x slower than darcs1 on unpull, and on pull it is 100x slower in 
user time but only 20x slower in elapsed time.

In both cases, the repository was on an NFS filesystem.  In the darcs2 
case, the repository I was pulling from was on the local disk, and I'm also 
using a cache (NFS-mounted).  The darcs2 repository has been optimized, but 
the darcs1 repository has not (at lesat, not recently).  I did all of these 
a couple of times to eliminate the effects of cache preloading etc., the 
times reported are from the second run.

--- darcs 1:

$ time darcs unpull --from-tag 2007-09-25 -a
Finished unpulling.
35.17s real   5.77s user   1.00s system   19% darcs unpull --from-tag 
2007-09-25 -a

$ time darcs pull ~/ghc-HEAD -a
Pulling from "/home/simonmar/ghc-HEAD"...
33.51s real   3.62s user   1.05s system   13% darcs pull ~/ghc-HEAD -a

--- darcs 2:

$ time darcs2 unpull --from-tag 2007-09-25 -a
Finished unpulling.
385.22s real   52.18s user   12.62s system   16% darcs2 unpull --from-tag 
2007-09-25 -a

$ time darcs2 pull /64playpen/simonmar/ghc-darcs2 -a
Finished pulling and applying.
668.75s real   290.74s user   15.03s system   45% darcs2 pull 
/64playpen/simonmar/ghc-darcs2 -a

Cheers,
Simon
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre2

2008-01-03 Thread Simon Marlow
David Roundy wrote:

> Anyhow, could you retry this test with the above change in methodology, and
> let me know if (a) the pull is still slow the first time and (b) if it's
> much faster the second time (after the reverse unpull/pull)?

I think I've done it in both directions now, and it got faster, but still 
much slower than darcs1:

$ time darcs2 unpull --from-tag 2007-09-25 -a
Finished unpulling.
58.68s real   50.64s user   6.36s system   97% darcs2 unpull --from-tag 
2007-09-25 -a
$ time darcs2 pull -a ../ghc-darcs2
Pulling from "../ghc-darcs2"...
Finished pulling and applying.
53.28s real   44.62s user   7.10s system   97% darcs2 pull -a ../ghc-darcs2

This is still an order of magnitude slower than darcs1 for the same 
operation.  (these times are now on the local filesystem, BTW)

Cheers,
Simon
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre2

2008-01-03 Thread David Roundy
On Thu, Jan 03, 2008 at 11:11:40AM +, Simon Marlow wrote:
> David Roundy wrote:
> > Anyhow, could you retry this test with the above change in methodology, and
> > let me know if (a) the pull is still slow the first time and (b) if it's
> > much faster the second time (after the reverse unpull/pull)?
> 
> I think I've done it in both directions now, and it got faster, but still 
> much slower than darcs1:
> 
> $ time darcs2 unpull --from-tag 2007-09-25 -a
> Finished unpulling.
> 58.68s real   50.64s user   6.36s system   97% darcs2 unpull --from-tag 
> 2007-09-25 -a
> $ time darcs2 pull -a ../ghc-darcs2
> Pulling from "../ghc-darcs2"...
> Finished pulling and applying.
> 53.28s real   44.62s user   7.10s system   97% darcs2 pull -a ../ghc-darcs2
> 
> This is still an order of magnitude slower than darcs1 for the same 
> operation.  (these times are now on the local filesystem, BTW)

Is this with the latest darcs-unstable? I made some improvements shortly
before Christmas (or was it after Christmas?) that ought to improve the
speed of pulls dramatically.  We were doing O(N^2) operations in our
handling of "pending" changes, which I fixed (I think).  So I'll wait on
investigating this until you've confirmed which version this was tested
with.  And thanks for the testing!
-- 
David Roundy
Department of Physics
Oregon State University
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre2

2008-01-04 Thread Simon Marlow
David Roundy wrote:
> On Thu, Jan 03, 2008 at 11:11:40AM +, Simon Marlow wrote:
>> David Roundy wrote:
>>> Anyhow, could you retry this test with the above change in methodology, and
>>> let me know if (a) the pull is still slow the first time and (b) if it's
>>> much faster the second time (after the reverse unpull/pull)?
>> I think I've done it in both directions now, and it got faster, but still 
>> much slower than darcs1:
>>
>> $ time darcs2 unpull --from-tag 2007-09-25 -a
>> Finished unpulling.
>> 58.68s real   50.64s user   6.36s system   97% darcs2 unpull --from-tag 
>> 2007-09-25 -a
>> $ time darcs2 pull -a ../ghc-darcs2
>> Pulling from "../ghc-darcs2"...
>> Finished pulling and applying.
>> 53.28s real   44.62s user   7.10s system   97% darcs2 pull -a ../ghc-darcs2
>>
>> This is still an order of magnitude slower than darcs1 for the same 
>> operation.  (these times are now on the local filesystem, BTW)
> 
> Is this with the latest darcs-unstable? I made some improvements shortly
> before Christmas (or was it after Christmas?) that ought to improve the
> speed of pulls dramatically.  We were doing O(N^2) operations in our
> handling of "pending" changes, which I fixed (I think).  So I'll wait on
> investigating this until you've confirmed which version this was tested
> with.  And thanks for the testing!

This is using a binary I compiled up from the latest sources yesterday, so 
it should have those improvements.

Cheers,
Simon


___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre2

2008-01-16 Thread David Roundy
On Thu, Jan 03, 2008 at 11:11:40AM +, Simon Marlow wrote:
> > Anyhow, could you retry this test with the above change in methodology,
> > and let me know if (a) the pull is still slow the first time and (b) if
> > it's much faster the second time (after the reverse unpull/pull)?
> 
> I think I've done it in both directions now, and it got faster, but still 
> much slower than darcs1:
> 
> $ time darcs2 unpull --from-tag 2007-09-25 -a
> Finished unpulling.
> 58.68s real   50.64s user   6.36s system   97% darcs2 unpull --from-tag 
> 2007-09-25 -a
> $ time darcs2 pull -a ../ghc-darcs2
> Pulling from "../ghc-darcs2"...
> Finished pulling and applying.
> 53.28s real   44.62s user   7.10s system   97% darcs2 pull -a ../ghc-darcs2
> 
> This is still an order of magnitude slower than darcs1 for the same 
> operation.  (these times are now on the local filesystem, BTW)

I've recently found the problem leading to this slowdown (I believe) and
get about an order-of-magnitude improvement in the speed of a pull of 400
patches in the ghc repository.  It turned out to be an issue that scaled
with the size (width) of the repository, not with the number of patches
(which had been the obvious suspect), which was causing trouble when
applying to the pristine cache.

At this point, darcs-2 outperforms darcs-1 on most tests that I've tried,
so it'd be a good time to find some more performance problems, if you
can... and I don't doubt that there are more out there.
-- 
David Roundy
Department of Physics
Oregon State University
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel


Re: [darcs-devel] announcing darcs 2.0.0pre2

2008-01-17 Thread Simon Marlow
David Roundy wrote:
> On Thu, Jan 03, 2008 at 11:11:40AM +, Simon Marlow wrote:
>>> Anyhow, could you retry this test with the above change in methodology,
>>> and let me know if (a) the pull is still slow the first time and (b) if
>>> it's much faster the second time (after the reverse unpull/pull)?
>> I think I've done it in both directions now, and it got faster, but still 
>> much slower than darcs1:
>>
>> $ time darcs2 unpull --from-tag 2007-09-25 -a
>> Finished unpulling.
>> 58.68s real   50.64s user   6.36s system   97% darcs2 unpull --from-tag 
>> 2007-09-25 -a
>> $ time darcs2 pull -a ../ghc-darcs2
>> Pulling from "../ghc-darcs2"...
>> Finished pulling and applying.
>> 53.28s real   44.62s user   7.10s system   97% darcs2 pull -a ../ghc-darcs2
>>
>> This is still an order of magnitude slower than darcs1 for the same 
>> operation.  (these times are now on the local filesystem, BTW)
> 
> I've recently found the problem leading to this slowdown (I believe) and
> get about an order-of-magnitude improvement in the speed of a pull of 400
> patches in the ghc repository.  It turned out to be an issue that scaled
> with the size (width) of the repository, not with the number of patches
> (which had been the obvious suspect), which was causing trouble when
> applying to the pristine cache.
> 
> At this point, darcs-2 outperforms darcs-1 on most tests that I've tried,
> so it'd be a good time to find some more performance problems, if you
> can... and I don't doubt that there are more out there.

Certainly a lot faster, nice work!  Though it's still not as fast as 
darcs-1 here.  New figures:

$ time darcs2 unpull --from-tag 2007-09-25 -a
Finished unpulling.
18.83s real   15.27s user   1.53s system   89% darcs2 unpull --from-tag 
2007-09-25 -a
$ time darcs2 pull ../ghc-darcs2-other -a
Finished pulling and applying.
10.38s real   7.69s user   1.50s system   88% darcs2 pull ../ghc-darcs2-other -

I repeated the darcs-1 timings for comparison:

$ time darcs unpull --from-tag 2007-09-25 -a
Finished unpulling.
8.04s real   7.14s user   0.90s system   99% darcs unpull --from-tag 
2007-09-25 -a
$ time darcs pull ~/ghc-HEAD -a
Finished pulling and applying.
7.90s real   4.90s user   0.98s system   74% darcs pull ~/ghc-HEAD -a

In this case darcs-1 is pulling more patches (530 vs. 400), because I'm 
using the latest GHC HEAD repo.  Also the darcs-1 repository being pulled 
from is on a different, NFS mounted, filesystem, whereas the darcs-2 
timings were made using repos on the same local filesystem.  In all cases I 
tried things a few times to let caches etc. fill up.

Can you repeat these?

Cheers,
Simon
___
darcs-devel mailing list
darcs-devel@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-devel