[PATCH 1 of 4] manifest: make lru size configurable
Durham Goode
durham at fb.com
Tue Feb 3 20:39:54 CST 2015
On 2/3/15 7:26 AM, Augie Fackler wrote:
> 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?
I think making this a knob is still good. Some of the servers we run hg
on have a metric crap ton of RAM, and being able to crank this number up
to some unreasonable value would be convenient.
>
>> # 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