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