[Bug 4518] New: Push with evolve is extremely slow

mercurial-bugs at selenic.com mercurial-bugs at selenic.com
Fri Jan 30 14:56:06 UTC 2015


http://bz.selenic.com/show_bug.cgi?id=4518

          Priority: normal
            Bug ID: 4518
                CC: mercurial-devel at selenic.com
          Assignee: bugzilla at selenic.com
           Summary: Push with evolve is extremely slow
          Severity: bug
    Classification: Unclassified
                OS: Linux
          Reporter: mathias.demare at gmail.com
          Hardware: PC
            Status: UNCONFIRMED
           Version: 3.3-rc
         Component: evolution
           Product: Mercurial

I'm noticing a push from one machine to another that is extremely slow (but
works fine when I am not using evolve). I am seeing this both with ssh and with
http.

Without evolve, push takes 1 or 2 seconds, with evolve it takes multiple
minutes. CPU goes to 100% on the receiving side.

Here's a profile after ~30 seconds (I interrupted after that):
   CallCount    Recursive     Total(s)    Inline(s) module:lineno(function)
          44            0     22.0826     22.0819   <select.select>
          44            0      0.0007      0.0003      
SocketServer:449(fileno)
          31           20      0.0228      0.0220   <__import__>
           1            0      0.0164      0.0001      
mercurial.hgweb.server:9(<module>)
           1            0      0.0001      0.0001      
SocketServer:120(<module>)
           1            0      0.0025      0.0000       mimetools:1(<module>)
           1            0      0.0001      0.0000       rfc822:71(<module>)
           1            0      0.0139      0.0000      
BaseHTTPServer:18(<module>)
           1            0      0.0034      0.0017   mimetypes:205(readfp)
         517            0      0.0004      0.0004       <method 'readline' of
'file' objects>
         516            0      0.0003      0.0003       <method 'split' of
'str' objects>
         189            0      0.0005      0.0003       mimetypes:78(add_type)
         516            0      0.0003      0.0003       <range>
         516            0      0.0002      0.0002       <len>
           1            0     22.1127      0.0008  
mercurial.extensions:149(wrap)
           1            0     22.1120      0.0000      
mercurial.util:709(check)
           2            0      0.0000      0.0000      
mercurial.util:707(checksignature)
         318            0      0.0009      0.0006   mimetypes:78(add_type)
         318            0      0.0002      0.0002       <method 'setdefault' of
'dict' objects>
         239            0      0.0001      0.0001       <method 'append' of
'list' objects>
           1            0     22.0845      0.0005  
SocketServer:221(serve_forever)
          44            0     22.0828      0.0002      
SocketServer:151(_eintr_retry)
           1            0      0.0000      0.0000       threading:575(set)
           1            0      0.0004      0.0000      
SocketServer:282(_handle_request_noblock)
           1            0      0.0008      0.0000      
mercurial.demandimport:103(__getattribute__)
           1            0      0.0000      0.0000       threading:589(clear)
         517            0      0.0004      0.0004   <method 'readline' of
'file' objects>
         530            0      0.0004      0.0004   <method 'split' of 'str'
objects>
          44            0      0.0007      0.0003   SocketServer:449(fileno)
          44            0      0.0003      0.0002       socket:223(meth)

On the client side, almost all of the time taken is right after it prints
'sending evoext_obshash command'.

The following part was printed (1 query at a time) during ~9 minutes:

query 1; still undecided: 50036, sample size is: 200
sending evoext_obshash command
sampling from both directions
query 2; still undecided: 4100, sample size is: 200
sending evoext_obshash command
sampling from both directions
query 3; still undecided: 243, sample size is: 200
sending evoext_obshash command
3 total queries


Sadly, I can't pass along the repository itself. It's a repository with ~50 000
changesets and 10 git subrepositories. I have not been able to reproduce this
yet with an example repository.

Pushing side: version 3.3-rc+53-6becb9dbca25+20150130
Receiving side: version 3.3-rc

Evolve version on both sides:
@  changeset:   1194:aa7cdd9d7310
|  branch:      stable
|  bookmark:    @
|  tag:         tip
|  parent:      1191:583f7f03434b
|  user:        Tyrone Nicholas <tnicholas at fb.com>
|  date:        Tue Jan 27 16:07:57 2015 +0000
|  summary:     evolve: explicitly disable bookmark on evolve (issue4432)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Mercurial-devel mailing list