[PATCH 1 of 4] manifest: make lru size configurable
Augie Fackler
raf at durin42.com
Tue Feb 3 09:26:48 CST 2015
On Mon, Feb 02, 2015 at 07:19:59PM -0800, Durham Goode wrote:
> # HG changeset patch
> # User Durham Goode <durham at fb.com>
> # Date 1422061563 28800
> # Fri Jan 23 17:06:03 2015 -0800
> # Node ID 83bf8c0ecb425fb64903d93918227c162bca111d
> # Parent 8b88870cbd1eeefaee0af053ae36728f8c0a1847
> manifest: make lru size configurable
>
> On machines with lots of ram, it's beneficial to increase the lru size of the
> manifest cache. On a large repo, configuring the lru to be size 10 can shave a
> large rebase (~12 commits) down from 95s to 70s.
>
> diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
> --- a/mercurial/localrepo.py
> +++ b/mercurial/localrepo.py
> @@ -323,6 +323,9 @@ class localrepository(object):
> maxchainlen = self.ui.configint('format', 'maxchainlen')
> if maxchainlen is not None:
> self.svfs.options['maxchainlen'] = maxchainlen
> + manifestcachesize = self.ui.configint('ui', 'manifestcachesize')
After looking at patch 4, I started channelling my inner marmoute, and
manifestcachesize doesn't want to be in [ui] either.
> + if manifestcachesize is not None:
> + self.svfs.options['manifestcachesize'] = manifestcachesize
>
> def _writerequirements(self):
> reqfile = self.vfs("requires", "w")
> diff --git a/mercurial/manifest.py b/mercurial/manifest.py
> --- a/mercurial/manifest.py
> +++ b/mercurial/manifest.py
> @@ -222,7 +222,11 @@ class manifest(revlog.revlog):
> def __init__(self, opener):
> # we expect to deal with not more than four revs at a time,
This comment appears to be out of date. Are you sure it's worth making
this a knob, rather than just doing some experimentation and changing
the fixed value?
> # during a commit --amend
> - self._mancache = util.lrucachedict(4)
> + cachesize = 4
> + opts = getattr(opener, 'options', None)
> + if opts is not None:
> + cachesize = opts.get('manifestcachesize', cachesize)
> + self._mancache = util.lrucachedict(cachesize)
> revlog.revlog.__init__(self, opener, "00manifest.i")
>
> def readdelta(self, node):
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list