Repo with many obsolescence markers is getting really slow

Dominik Ruf dominikruf at gmail.com
Wed Mar 29 20:28:55 UTC 2017


Pierre-Yves David <pierre-yves.david at ens-lyon.org> schrieb am Mi., 29. März
2017 um 13:10 Uhr:

>
>
> On 03/29/2017 01:08 PM, Pierre-Yves David wrote:
> >
> >
> > On 03/28/2017 10:57 PM, Dominik Ruf wrote:
> >> Hi,
> >>
> >> I was using changeset evolution quite heavily. (more then 20000
> >> obsolescence markers, a lot of amend and rebasing)
> >> And I noticed that pulling and pushing is getting really slow.
> >> Is this a know issue? Could I expect that this is getting improved in
> >> the future?
> >
> > Yes, the current protocol to discover marker is very basic, have many
> > known short coming and lack caching. We have various idea for a better
> > protocol and caching, a first prototype for it should ship in the the
> > future version 6.0.0 of evolve (to be released soon). So we should
> > eventually have a proper version of the protocol done for good.
> >
> > In addition there is some additional caching around obsolescence markers
> > that should happen in the near future to speed up local operation.
> >
> > Cheers,
>
> In addition, can you tell me a bit more about your repo:
>
> * number of changesets total
>
I already did a
hg strip --hidden --rev 'obsolete()'
I don't know how many revisions there were before but now there are 9822

> * number of visible changesets
>
7064

> * number of public changesets.
>
 6798

> * number of markers
>
24457

> * output of `hg debugobsstorestat`
>
markers total:                  24457
    for known precursors:        3441
    with parents data:              0
markers with no successors:      2424
              1 successors:     22032
              2 successors:         0
    more than 2 successors:         1
    available  keys:
               user:            24457
disconnected clusters:           2389
        any known node:          1121
        smallest length:            1
        longer length:            201
        median length:              1
        mean length:               10
    using parents data:          2389
        any known node:          1121
        smallest length:            1
        longer length:            201
        median length:              1
        mean length:               10

> * set `experimental.verbose-obsolescence-exchange=1` in your config
> * output of a push and pull with --debug
>
pulling from https://...
using https://...
sending capabilities command
using auth.drc.* for authentication
query 1; heads
sending batch command
using auth.drc.* for authentication
searching for changes
all remote heads known locally
no changes found
OBSEXC: looking for common markers in 6932 nodes
sampling from both directions
query 1; still undecided: 6932, sample size is: 200
sending evoext_obshash1 command
using auth.drc.* for authentication
sampling from both directions
query 2; still undecided: 32, sample size is: 32
sending evoext_obshash1 command
using auth.drc.* for authentication
2 total queries
OBSEXC: request obsmarkers for some common nodes
sending getbundle command
using auth.drc.* for authentication
bundle2-input-bundle: with-transaction
bundle2-input-part: "listkeys" (params: 1 mandatory) supported
bundle2-input-part: total payload size 343
bundle2-input-part: "listkeys" (params: 1 mandatory) supported
bundle2-input-part: total payload size 1165
bundle2-input-bundle: 1 parts total
checking for updated bookmarks

pushing to https://...
using https://...
sending capabilities command
using auth.drc.* for authentication
query 1; heads
sending batch command
using auth.drc.* for authentication
searching for changes
all remote heads known locally
preparing listkeys for "phases"
sending listkeys command
using auth.drc.* for authentication
received listkey for "phases": 343 bytes
preparing listkeys for "namespaces"
sending listkeys command
using auth.drc.* for authentication
received listkey for "namespaces": 40 bytes
OBSEXC: computing relevant nodes
OBSEXC: looking for common markers in 6932 nodes
sampling from both directions
query 1; still undecided: 6932, sample size is: 200
sending evoext_obshash1 command
using auth.drc.* for authentication
sampling from both directions
query 2; still undecided: 26, sample size is: 26
sending evoext_obshash1 command
using auth.drc.* for authentication
2 total queries
OBSEXC: markers already in sync
checking for updated bookmarks
preparing listkeys for "bookmarks"
sending listkeys command
using auth.drc.* for authentication
received listkey for "bookmarks": 1165 bytes
no changes found (ignored 132 secret changesets)
preparing listkeys for "phases"
sending listkeys command
using auth.drc.* for authentication
received listkey for "phases": 343 bytes

> --
> Pierre-Yves David
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-evolve-testers/attachments/20170329/9569cdc2/attachment-0002.html>


More information about the Evolve-testers mailing list