Subject: Poor performance of auto gc

From: Mark Brown <[email-masked]>
Date: Mon, 8 Apr 2013 13:54:58 +0100

I routinely experience very poor behaviour of the auto garbage
collection both on the command line and especially with git gui (which
appears to have a much lower threashold).  I have a kernel git
repository I do most of my work in which includes a bunch of trees
including -next and which has some frequently rebased branches.  This
does garbage collection (or for git gui prompts me to do garbage
collection) far too frequently.  Previous analysis has shown that the
issue is that garbage collection leaves a bunch of unreferenced items
lying around as loose objects rather than in a pack waiting to age out
of the tree.  This is especially bad towards the end of the release
cycle when the trees in -next get bigger, right now the gc *always*
triggers.

It seems to me that it should be possible to trigger garbage collection
based on proportions of the number of objects in the repository rather
than on absolute numbers; some sort of time/object count increase based
holdoff might be useful to prevent things retriggering too soon.