git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Preferring shallower deltas on repack

From
Brian Downing <bdowning@lavos.net>
Date
Jul 9, 2007, 18:53 UTC
Message-ID
<20070709185353.GL4087@lavos.net>
In-Reply-To
<7vir8tv8dr.fsf@assigned-by-dhcp.cox.net>
On Mon, Jul 09, 2007 at 09:39:44AM -0700, Junio C Hamano wrote:
Show 8 quoted lines
> > OK here it is.  And results on the GIT repo and another patalogical test 
> > repo I keep around are actually really nice!  Not only the pack itself 
> > is a bit smaller, but the delta depth distribution as shown by 
> > git-verify-pack -v is much nicer with the bulk of deltas in the low 
> > depth end of the spectrum and no more peak at the max depth level.
> 
> Looks obviously correct.  Brian, it would be very interesting to
> see what Nico's patch does to your dataset.

Nico's patch makes the overall statistics look better, but the version.lisp-expr file still goes 593 levels deep, as opposed to about 65 with my patch. (That's better than 980 with stock Git, though.)

Pack statistics from my shoddy analysis tool (I'll post it a bit later):

"sizes" are all object sizes in the pack. For deltas this is just the delta size. "path sizes" is the size of the /path/ to each object in the file; this is the size of the base and each patch in the chain to the object. This is approximately how much data you have to read to get to an object. "depths" should be obvious.

SBCL, stock git:
      all sizes: count 46829 total 30256118 min 0 max 1012295 mean 646.10 median 45 std_dev 9555.48
 all path sizes: count 46829 total 1551200401 min 0 max 1012295 mean 33124.78 median 11661 std_dev 55310.88
         depths: count 46829 total 4693372 min 0 max 980 mean 100.22 median 12 std_dev 188.21
SBCL, my patch:
      all sizes: count 46829 total 30251762 min 0 max 1012295 mean 646.00 median 45 std_dev 9555.48
 all path sizes: count 46829 total 1529629918 min 0 max 1012295 mean 32664.16 median 11213 std_dev 54930.06
         depths: count 46829 total 2883121 min 0 max 787 mean 61.57 median 11 std_dev 127.64
SBCL, Nico's patch:
      all sizes: count 46829 total 30253345 min 0 max 1012295 mean 646.04 median 45 std_dev 9555.49
 all path sizes: count 46829 total 1518730701 min 0 max 1012295 mean 32431.41 median 10819 std_dev 54751.35
         depths: count 46829 total 3694511 min 0 max 699 mean 78.89 median 12 std_dev 141.53

I'm vaguely working on an alternate weighting mechanism based on path sizes, but so far all I've been able to do is generate some really strange packs. :)

-bcd
Previous: Junio C HamanoNext: Nicolas Pitre
Message 10 of 19 in “Preferring shallower deltas on repack”
  1. Brian DowningJul 9, 2007
  2. pack-objects: Prefer shallower deltas if the size is equalBrian Downing, Jul 9, 2007
  3. Junio C HamanoJul 9, 2007
  4. Junio C HamanoJul 9, 2007
  5. Brian DowningJul 9, 2007
  6. Junio C HamanoJul 9, 2007
  7. Brian DowningJul 9, 2007
  8. Nicolas PitreJul 9, 2007
  9. Junio C HamanoJul 9, 2007
  10. Brian DowningJul 9, 2007
  11. Nicolas PitreJul 9, 2007
  12. Brian DowningJul 9, 2007
  13. Brian DowningJul 9, 2007
  14. Nicolas PitreJul 9, 2007
  15. Brian DowningJul 9, 2007
  16. Shoddy pack information toolBrian Downing, Jul 9, 2007
  17. Junio C HamanoJul 11, 2007
  18. Pack information toolBrian Downing, Jul 12, 2007
  19. Linus TorvaldsJul 9, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.