Thread (3 messages) flat view 3 messages, 2 authors, 2016-06-15

git-merge performance

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2016-06-15 22:43:42

My git-pulling script (git-1.4.2) seems to have got quite a bit slower
since the post-2.6.23 patchflood.  I just did a bit of poking and it's
git-merge which is taking most of the time.


Using git-watchdog as an example:

box:/usr/src/git26> cat .git/branches/git-watchdog 
git+ssh://master.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog-mm.git
box:/usr/src/git26> git reset --hard origin
box:/usr/src/git26> git fetch git-watchdog
box:/usr/src/git26> time git merge --no-commit 'test merge' HEAD FETCH_HEAD > /dev/null                  
Automatic merge failed; fix conflicts and then commit the result.
git merge --no-commit 'test merge' HEAD FETCH_HEAD > /dev/null  47.03s user 26.53s system 97% cpu 1:15.67 total


Try git-md-accel:

box:/usr/src/git26> cat .git/branches/git-md-accel 
git://lost.foo-projects.org/~dwillia2/git/iop#md-for-linus
box:/usr/src/git26> time git reset --hard origin
git reset --hard origin  0.51s user 0.11s system 100% cpu 0.615 total
box:/usr/src/git26> time git fetch git-md-accel
git fetch git-md-accel  0.12s user 0.05s system 11% cpu 1.379 total
box:/usr/src/git26> time git merge --no-commit 'test merge' HEAD FETCH_HEAD > /dev/null                  
Automatic merge failed; fix conflicts and then commit the result.
git merge --no-commit 'test merge' HEAD FETCH_HEAD > /dev/null  42.52s user 24.18s system 96% cpu 1:08.93 total


And git-unionfs:

box:/usr/src/git26> cat .git/branches/git-unionfs      
git+ssh://master.kernel.org/pub/scm/linux/kernel/git/ezk/unionfs.git
box:/usr/src/git26> time git reset --hard origin
git reset --hard origin  0.52s user 0.09s system 100% cpu 0.611 total
box:/usr/src/git26> time git fetch git-unionfs      
git fetch git-unionfs  0.16s user 0.03s system 8% cpu 2.285 total
box:/usr/src/git26> time git merge --no-commit 'test merge' HEAD FETCH_HEAD > /dev/null                  
Automatic merge went well; stopped before committing as requested
git merge --no-commit 'test merge' HEAD FETCH_HEAD > /dev/null  42.81s user 24.86s system 96% cpu 1:09.98 total


Everything is in pagecache, and I just did git-repack -a -d;git
prune;git-fsck-objects --full.

Pulling 70-80 trees at a minute and a half each gets a bit dull ;)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help