Thread (1 message) 1 message, 1 author, 2016-06-15

Re: git gc --aggressive led to about 40 times slower "git log --raw"

From: David Kastrup <hidden>
Date: 2016-06-15 22:59:57

David Kastrup [off-list ref] writes:
Duy Nguyen [off-list ref] writes:
quoted
I can think of two improvements we could make, either increase cache
size dynamically (within limits) or make it configurable. If we have N
entries in worktree (both trees and blobs) and depth M, then we might
need to cache N*M objects for it to be effective. Christian, if you
want to experiment this, update MAX_DELTA_CACHE in sha1_file.c and
rebuild.
Well, my optimized "git-blame" code is considerably hit by an
aggressively packed Emacs repository so I took a look at it with the
MAX_DELTA_CACHE value set to the default 256, and then 512, 1024, 2048.
[...]
Trying with 16384:
dak@lola:/usr/local/tmp/emacs$ time ../git/git blame src/xdisp.c >/dev/null

real	2m8.000s
user	0m54.968s
sys	1m12.624s

And memory consumption did not exceed about 200m all the while, so is
far lower than what would have been available.
Of course, this has to do with delta_base_cache_limit defaulting to 16m.
Something's _really_ fishy about that cache behavior.  Note that the
_system_ time goes up considerably, not just user time.  Since the
packs are zlib-packed, it's reasonable that more I/O time is also
associated with more user time and it is well possible that the user
time increase is entirely explainable by the larger amount of
compressed data to access.

But this stinks.
And an obvious contender for the stinking is that the "LRU" scheme used
here is _strictly_ freeing memory based on which cache entry has been
_created_ the longest time ago, not which cache entry has been
_accessed_ the longest time ago.  Which means a pure round-robin
strategy for freeing memory rather than LRU.

Let's see what happens when changing this.

-- 
David Kastrup
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help