[darcs-users] strace of darcs whatsnew on a biggish repo

Gwern Branwen gwern0 at gmail.com
Fri Apr 25 01:56:18 UTC 2008


On 2008.04.24 16:35:30 -0600, zooko <zooko at zooko.com> scribbled 1.1K characters:
> Folks:
>
> A new user started to convert his company to darcs, but then had to
> back out and go back to using SVN when it turned out that "darcs
> whatsnew" took 17 seconds and his co-workers couldn't stand that.
> (The equivalent call, "svn diff" takes around 1.7 seconds -- about
> 10x as fast.)
>
> He gave me this count of files:
>
> find . -type f |grep -v \.svn|wc
>      4762    4763  229874
>
> He gave me an strace of "darcs whatsnew" with -t (print relative
> timestamp) and -T (print time spent in each syscall).  The whole
> thing is interesting reading.  For example:
>
> grep 'stat64("/home/darcs-cache//pristine.hashed"' log2 | wc -l
>      3578
>
> It looks like there is probably quite a bit of room for optimization
> in darcs-2's use of the filesystem.
>
> Regards,
>
> Zooko
>
> Here is the log.bz2 file.  Sorry for the long URL:
>
> http://tahoebs1.allmydata.com:8123/uri/URI%3ACHK%
> 3Ahzdsgztpvd5uip4tb7uaude4ua%
> 3Acgwu6vnrspq2hxpb4gugs6yprn2iyuz7tpk7k7yesqvnkffksh4q%3A3%3A10%
> 3A807696?filename=log2.bz2

Yeah. Some of those stats are quite redundant; here's an early section, sorted:

     0.000042 stat64("/root/.darcs/defaults", 0x47ed48) = -1 ENOENT (No such file or directory) <0.000006>
     0.000039 stat64("/root/.darcs/defaults", 0x465898) = -1 ENOENT (No such file or directory) <0.000006>
     0.000039 stat64("/root/.darcs/defaults", 0x465d60) = -1 ENOENT (No such file or directory) <0.000006>
     0.000039 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000005>
     0.000039 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000005>
     0.000039 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000005>
     0.000039 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000006>
     0.000039 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000006>
     0.000039 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000006>
     0.000040 stat64("/root/.darcs/defaults", 0x4640a0) = -1 ENOENT (No such file or directory) <0.000006>
     0.000040 stat64("/root/.darcs/defaults", 0x464238) = -1 ENOENT (No such file or directory) <0.000006>
     0.000040 stat64("/root/.darcs/defaults", 0x465238) = -1 ENOENT (No such file or directory) <0.000005>
     0.000040 stat64("/root/.darcs/defaults", 0x4653d0) = -1 ENOENT (No such file or directory) <0.000006>
     0.000040 stat64("/root/.darcs/defaults", 0x465568) = -1 ENOENT (No such file or directory) <0.000006>
     0.000040 stat64("/root/.darcs/defaults", 0x465a30) = -1 ENOENT (No such file or directory) <0.000006>
     0.000040 stat64("/root/.darcs/defaults", 0x465bc8) = -1 ENOENT (No such file or directory) <0.000006>
     0.000040 stat64("/root/.darcs/defaults", 0x465ef8) = -1 ENOENT (No such file or directory) <0.000006>
     0.000040 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000005>
     0.000040 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000006>
     0.000040 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000006>
     0.000041 stat64("/root/.darcs/defaults", 0x4650a0) = -1 ENOENT (No such file or directory) <0.000005>
     0.000042 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000006>
     0.000043 stat64("/root/.darcs/defaults", 0x465700) = -1 ENOENT (No such file or directory) <0.000006>
     0.000043 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000006>
     0.000044 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000005>
     0.000048 stat64("/root/.darcs/defaults", 0x47eee0) = -1 ENOENT (No such file or directory) <0.000006>
     0.000049 stat64("_darcs", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000006>
     0.000070 stat64("_darcs/prefs/defaults", 0x4641a0) = -1 ENOENT (No such file or directory) <0.000006>
     0.000070 stat64("_darcs/prefs/defaults", 0x465338) = -1 ENOENT (No such file or directory) <0.000006>
     0.000070 stat64("_darcs/prefs/defaults", 0x465668) = -1 ENOENT (No such file or directory) <0.000006>
     0.000070 stat64("_darcs/prefs/defaults", 0x465e60) = -1 ENOENT (No such file or directory) <0.000006>
     0.000070 stat64("_darcs/prefs/defaults", 0x47ee48) = -1 ENOENT (No such file or directory) <0.000006>
     0.000071 stat64("_darcs/prefs/defaults", 0x4651a0) = -1 ENOENT (No such file or directory) <0.000006>
     0.000071 stat64("_darcs/prefs/defaults", 0x4654d0) = -1 ENOENT (No such file or directory) <0.000006>
     0.000071 stat64("_darcs/prefs/defaults", 0x465800) = -1 ENOENT (No such file or directory) <0.000007>
     0.000071 stat64("_darcs/prefs/defaults", 0x465cc8) = -1 ENOENT (No such file or directory) <0.000006>
     0.000073 stat64("_darcs/prefs/defaults", 0x464008) = -1 ENOENT (No such file or directory) <0.000006>
     0.000073 stat64("_darcs/prefs/defaults", 0x465008) = -1 ENOENT (No such file or directory) <0.000006>
     0.000073 stat64("_darcs/prefs/defaults", 0x465b30) = -1 ENOENT (No such file or directory) <0.000006>
     0.000074 stat64("_darcs/prefs/defaults", 0x465998) = -1 ENOENT (No such file or directory) <0.000006>

Now, I'm far from an expert in this low-level stuff, but some of that looks quite pointless to me.

--
gwern
C3I Uzi unix B-1B ies joe security MI5 Dateline SC
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.osuosl.org/pipermail/darcs-users/attachments/20080424/2ca10c3b/attachment.pgp 


More information about the darcs-users mailing list