Bug 5975 - Performance regression on unbundle in 4.7
Summary: Performance regression on unbundle in 4.7
Status: RESOLVED FIXED
Alias: None
Product: Mercurial
Classification: Unclassified
Component: Mercurial (show other bugs)
Version: default branch
Hardware: PC Linux
: wish bug
Assignee: Bugzilla
URL:
Keywords: perfregression
Depends on:
Blocks:
 
Reported: 2018-08-31 10:10 UTC by Boris Feld
Modified: 2018-09-22 00:00 UTC (History)
1 user (show)

See Also:
Python Version: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Boris Feld 2018-08-31 10:10 UTC
Our performance test suite worker detected a regression in debugunbundle (http://perf.octobus.net/#regressions?sort=3&dir=desc):

basic_commands.UnbundleTimeSuite.time_debugunbundle('netbeans-2018-08-01', 'last-thousand') 2018-08-17 03:51    d0d197ab..8547c859  1.81x   1.320s  2.394s  
basic_commands.UnbundleTimeSuite.time_debugunbundle('pypy-2018-08-01', 'last-thousand') 2018-08-17 03:51    d0d197ab..8547c859  1.15x   1.236s  1.419s  

The bisect tool detected that it's likely because of https://www.mercurial-scm.org/repo/hg/rev/8f83a953.

We will send a patch to fix it.
Comment 1 HG Bot 2018-09-14 16:55 UTC
Fixed by https://mercurial-scm.org/repo/hg/rev/a911932d5003
Boris Feld <boris.feld@octobus.net>
revlog: reuse cached delta for identical base revision (issue5975)

Since 8f83a953dddf, we skip over empty deltas when choosing a delta base. Such
delta happens when two distinct revisions have the same content.

The remote might be sending a delta against such revision within the bundle.
In that case, the delta base is no longer considered, but the cached one could
still, be used with the equivalent revision.

Not reusing the delta from the bundle can have a significant performance
impact, so we now make sure with doing so when possible.

(please test the fix)
Comment 2 Bugzilla 2018-09-22 00:00 UTC
Bug was set to TESTING for 7 days, resolving