MQ performance on large repo

Adrian Buehlmann adrian at cadifra.com
Mon Mar 1 15:35:50 CST 2010


On 26.02.2010 23:30, Greg Ward wrote:
> On Fri, Feb 26, 2010 at 4:19 PM, Greg Ward <greg at gerg.ca> wrote:
>> I'm going to dig into the decodedir() calls, since that looks like the
>> lowest hanging fruit.  Suggestions are welcome.
> 
> Looks like fncache is the culprit.  Here's what my .hg/store/fncache looks like:
> 
>   $ wc -l .hg/store/fncache
>   247385 .hg/store/fncache
> 
> But:
> 
>   $ sort -u .hg/store/fncache | wc -l
>   28520
>   $ find .hg/store/data -type f | wc -l
>   26812
> 
> Lots of duplicate lines in that fncache!
> 
> Looks like the performance hit boils down to store.fncachestore
> testing if a path is in fncache ("path not in fnc", store.py around
> line 304). That single __contains__() call accounts for a big chunk of
> the 7-8 sec runtime of qrefresh.  The last little bit of stack trace
> leading up to one of those 247385 calls to decodedir() is
> 
>   File "/home/gward/src/hg-crew/mercurial/repair.py", line 130, in strip
>     repo.sopener(file, 'a').truncate(troffset)
>   File "/home/gward/src/hg-crew/mercurial/store.py", line 304, in fncacheopener
>     and path not in fnc):
>   File "/home/gward/src/hg-crew/mercurial/store.py", line 283, in __contains__
>     self._load()
>   File "/home/gward/src/hg-crew/mercurial/store.py", line 266, in _load
>     self.entries.add(decodedir(line[:-1]))

These line numbers are rather weird.

What version of mercurial is that? Can you please rerun with crew tip?



More information about the Mercurial-devel mailing list