darcs

Issue 666 performance regression: darcs-1 vs. darcs-2-hashedformat on getting the darcs-unstable repository

Title performance regression: darcs-1 vs. darcs-2-hashedformat on getting the darcs-unstable repository
Priority bug Status resolved
Milestone Resolved in
Superseder Nosy List darcs-devel, dmitry.kurochkin, kowey, markstos, thorkilnaur, tommy, zooko
Assigned To
Topics Darcs2, Performance

Created on 2008-02-08.22:56:58 by zooko, last changed 2009-08-27.13:58:16 by admin.

Messages
msg3251 (view) Author: zooko Date: 2008-02-08.22:56:57
time darcs-1.0.9 get http://darcs.net/repos/unstable
real    20m55.913s

time darcs-2pre get --hashed http://darcs.net/repos/unstable-hashed
real    39m5.057s

again:
time darcs-2pre get --hashed http://darcs.net/repos/unstable-hashed
real    38m46.288s
msg3254 (view) Author: droundy Date: 2008-02-08.23:07:10
I see the opposite effect, but with a faster connection, and compiling
darcs 2 with libwww.  Have you tried libwww? I could try again at home...

$ time darcs get http://darcs.net/repos/unstable-hashed
Directory '/tmp/unstable-hashed' already exists, creating repository as '/tmp/unstable-hashed_1'
Copying patches, to get lazy repository hit ctrl-C...
Finished getting.

real    0m19.956s
user    0m7.420s
sys     0m8.105s
$ time /usr/bin/darcs get http://darcs.net/repos/unstable
Copying patch 5261 of 5261... done!
Applying patch 5261 of 5261... done.
Finished getting.

real    0m44.843s
user    0m13.973s
sys     0m6.880s
msg3512 (view) Author: markstos Date: 2008-02-16.22:47:19
I tested this myself, with darcs 1.0.9 and a recent darcs-2, compiled with the
default options. Darcs-2 won by a long shot, completing the task in 30 seconds,
while I canceled the darcs-1 process after it had been running for about 3 and
half minutes and was only about halfway done.
msg3541 (view) Author: zooko Date: 2008-02-18.15:59:00
machine: old Pentium M
OS: linux (Ubuntu Hardy prerelease)

darcs-2pre is from http://darcs.net/repos/unstable-hashed just now.

darcs-1.0.9p is from http://darcs.net/repos/stable, tag "1.0.9", plus  
3 patches that Heffalump said would make it possible to compile  
darcs-1.0.9 with ghc 6.8.2.

time darcs-2pre get --verbose --debug-verbose http://darcs.net/repos/ 
unstable-hashed

18m36s

time darcs-2pre get http://darcs.net/repos/unstable-hashed

17m46s

time darcs-2pre get --hashed --verbose --debug-verbose http:// 
darcs.net/repos/unstable-hashed

19m41s

time darcs-1.0.9p get -v -v -v http://darcs.net/repos/unstable

9m29s

time darcs-1.0.9p get http://darsc.net/repos/unstable

9m22s

So for me, darcs-2 is still much worse than darcs-1, which is already  
terrible at this important task.

Regards,

Zooko
msg3544 (view) Author: markstos Date: 2008-02-18.16:05:26
Zooko,

For darcs-2 tests, did you have the global case enabled? I did.

I wonder if that could account in part for the vastly differently 
results. My processor was only about 1 Ghz, which seems comparable to 
yours.

    Mark
msg3549 (view) Author: zooko Date: 2008-02-18.16:08:00
What's "the global case"?

I've been trying to use darcs without any special configuration, because I
assume that what most people experience will be the default settings.

So I just got the source code, ran autoconf, ran ./configure, ran make.

Regards,

Zooko
msg3552 (view) Author: droundy Date: 2008-02-18.16:11:20
On Mon, Feb 18, 2008 at 04:08:01PM -0000, Zooko wrote:
> What's "the global case"?

He meant "global cache", but made a typo.  I think it's a wishlist bug to
offer to create a global cache if it's not present (and if the offer hasn't
previously been made).
-- 
David Roundy
Department of Physics
Oregon State University
msg3553 (view) Author: markstos Date: 2008-02-18.16:12:03
Zooko wrote:
> 
> What's "the global case"?

Sorry, it's not the best day for me today. I meant "Global cache", as 
described on this page:

http://wiki.darcs.net/DarcsWiki/DarcsTwo

> I've been trying to use darcs without any special configuration, because I
> assume that what most people experience will be the default settings.
> 
> So I just got the source code, ran autoconf, ran ./configure, ran make.

Ok, then you weren't using it. I'd be curious if two consecutive runs 
with Darcs 2 cause the second one to show a marked improvement with the 
cache enabled.

I agree with you that good performance with default settings matters, 
though.

    Mark
msg3574 (view) Author: zooko Date: 2008-02-18.18:58:03
> Ok, then you weren't using it. I'd be curious if two consecutive runs
> with Darcs 2 cause the second one to show a marked improvement with  
> the
> cache enabled.

Okay, I configured a global cache.  The first time was:

darcs-2 get http://darcs.net/repos/unstable-hashed

19m5s

the second:

darcs-2 get http://darcs.net/repos/unstable-hashed

18m10s
msg3576 (view) Author: markstos Date: 2008-02-18.19:13:22
zooko wrote:
>> Ok, then you weren't using it. I'd be curious if two consecutive runs
>> with Darcs 2 cause the second one to show a marked improvement with the
>> cache enabled.
> 
> Okay, I configured a global cache.  The first time was:
> 
> darcs-2 get http://darcs.net/repos/unstable-hashed
> 
> 19m5s
> 
> the second:
> 
> darcs-2 get http://darcs.net/repos/unstable-hashed
> 
> 18m10s

Your times are so much slower than David's and mine, I'm curious about 
your bandwidth. What is the "download" result, when you choose the 
Seattle location in this test? (which I presume is near where Darcs.net 
is hosted)

http://www.speakeasy.net/speedtest/

At work I get 6567 kbps, but I should re-test from home where I ran my 
test. (And I work instead of a hosting facility, with much more 
bandwidth that I expect most people to have!)

    Mark
msg3578 (view) Author: zooko Date: 2008-02-19.13:25:54
> http://www.speakeasy.net/speedtest/

I had to reboot to Windows to use the flash plugin (since I don't  
want to install flash on my Linux system), and I got 1326 kbps up,  
852 kbps down.

However, if darcs is still doing many serialized round trips then  
latency might be more important than throughput.  I ran this similar  
service:

http://www.speedtest.net/

chose Seattle (but a different host, I assume), got 1325 kb/s down  
and 781 kb/s up and 96 ms ping.  I ran it again and got 1327 kb/s  
down, 856 kb/s up, and 84 ms ping.

Hm...  Here's a clue -- the machine I'm testing with is connected via  
wireless (802.11g), and it experiences occasional packet loss.  That  
could have a big impact on a multiple-round-trip protocol, too.

--Z
msg3605 (view) Author: zooko Date: 2008-02-20.16:18:38
By the way, even if my internet connection is partially at fault (which hasn't
been proved), this is still a performance regression, since darcs-1 goes twice
as fast as darcs-2 does.
msg3616 (view) Author: droundy Date: 2008-02-21.15:07:40
Zooko:

Just to be clear, darcs-2 doesn't get any more slowly from
http://darcs.net/repos/unstable, does it?

So you're claiming a repository format regression, rather than a simple
performance regression?
msg3622 (view) Author: zooko Date: 2008-02-21.15:45:12
> Just to be clear, darcs-2 doesn't get any more slowly from
> http://darcs.net/repos/unstable, does it?

darcs-2 takes infinite time to get http://darcs.net/repos/unstable,  
since it ends with

darcs failed:  binary patch to ./logo.png couldn't apply

This is issue687.

I can't try any darcs on Windows newer than the 2008-02-06 build,  
because when I run "make" on my Windows machine, it says:

ld.exe: cannot find -lz

and I haven't figured out how to query or set which directories it  
searches so that I can tell it to look in the directory where libz is  
found.

Regards,

Zooko
msg4502 (view) Author: zooko Date: 2008-05-02.22:57:33
Okay, here's the update on this ticket using darcs 2.0.0 + 19 patches.

It takes 25 minutes to do "darcs get http://darcs.net" on this Windows box.  I
happen to know that this build doesn't have libcurl, so it is invoking a
separate "wget" or "curl" executable.  (issue834 -- windows executable doesn't
come with libcurl functionality)

With global cache on, the second and third gets took 1m42s and 1m12s
respectively.  After rm'ing the cache, then another darcs get took 26m15s minutes.

darcs get --lazy http://darcs.net

took 1m52s with no pre-populated cache, and 0m15s, and 0m4s, and 0m9s with a
pre-populated cache.

So we can close this issue thanks to the performance of lazy and of caching. 
(Also, further performance improvements are probably re issue834.)
History
Date User Action Args
2008-02-08 22:56:58zookocreate
2008-02-08 23:07:11droundysetstatus: unread -> unknown
nosy: droundy, tommy, beschmi, kowey, zooko
messages: + msg3254
2008-02-08 23:08:52droundysetpriority: bug
nosy: droundy, tommy, beschmi, kowey, zooko
2008-02-09 04:55:20markstossettopic: + Performance, Darcs2
nosy: droundy, tommy, beschmi, kowey, zooko
2008-02-16 22:47:20markstossetstatus: unknown -> resolved-in-unstable
nosy: + markstos
messages: + msg3512
2008-02-18 15:59:01zookosetnosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3541
2008-02-18 16:02:00markstossetstatus: resolved-in-unstable -> unknown
nosy: droundy, tommy, beschmi, kowey, markstos, zooko
2008-02-18 16:05:27markstossetnosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3544
2008-02-18 16:08:01zookosetstatus: unknown -> resolved-in-unstable
nosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3549
2008-02-18 16:11:22droundysetnosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3552
2008-02-18 16:12:04markstossetnosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3553
2008-02-18 16:17:01markstossetstatus: resolved-in-unstable -> unknown
nosy: droundy, tommy, beschmi, kowey, markstos, zooko
2008-02-18 18:58:04zookosetnosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3574
2008-02-18 19:13:25markstossetnosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3576
2008-02-19 13:25:55zookosetnosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3578
2008-02-20 16:18:39zookosetnosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3605
2008-02-21 15:07:41droundysetnosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3616
2008-02-21 15:45:13zookosetnosy: droundy, tommy, beschmi, kowey, markstos, zooko
messages: + msg3622
2008-05-02 22:57:37zookosetstatus: unknown -> resolved
nosy: + dagit
messages: + msg4502
2009-08-06 17:53:55adminsetnosy: + jast, Serware, dmitry.kurochkin, darcs-devel, mornfall, simon, thorkilnaur, - droundy
2009-08-06 20:57:21adminsetnosy: - beschmi
2009-08-10 22:14:18adminsetnosy: - darcs-devel, jast, Serware, mornfall
2009-08-11 00:06:36adminsetnosy: - dagit
2009-08-25 18:05:17adminsetnosy: + darcs-devel, - simon
2009-08-27 13:58:16adminsetnosy: tommy, kowey, markstos, darcs-devel, zooko, thorkilnaur, dmitry.kurochkin