"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Christian Weisgerber <naddy@mips.inka.de>
Subject:
Re: reuse deltas while packing
To:
gameoftrees@openbsd.org
Date:
Wed, 9 Feb 2022 15:47:47 +0100

Download raw body.

Thread
  • Christian Weisgerber:

    reuse deltas while packing

  • Christian Weisgerber:
    
    > I cloned a pristine copy of FreeBSD src.git, and I'm currently
    > exploding the pack file with "git unpack-objects" into a few million
    > loose objects.  That should give me something to test.
    
    $ time gotadmin info
    repository: /usr/obj/test1.git
    pack files: 0
    loose objects: 4069139
    loose total size: 14.8G
        4m51.33s real     0m27.80s user     4m20.45s system
    
    Before the diff:
    
    $ time gotadmin pack
    packing 3437 references; 4069109 objects; deltify: 100%; writing pack:    4.7G 100%
    Wrote ba2d0573d6162c515b95a92690eed475658d0896.pack
       4.7G packed; indexing 100%; resolving deltas 100%
    Indexed ba2d0573d6162c515b95a92690eed475658d0896.pack
      410m56.22s real   175m26.16s user   219m11.63s system
    
    With the diff:
    
    $ time gotadmin pack
    packing 3437 references; 4069109 objects; deltify: 100%; writing pack:    4.7G 100%
    Wrote 35750eab02d4629573b1aa7aec2c4577df53a634.pack
       4.7G packed; indexing 100%; resolving deltas 100%
    Indexed 35750eab02d4629573b1aa7aec2c4577df53a634.pack
      411m53.73s real   175m51.54s user   219m50.46s system
    
    So, no problems, but no difference in speed either.
    
    Running "gotadmin cleanup" afterwards takes another 35..40 minutes.
    
    For comparison:
    
    $ time git gc
    Enumerating objects: 4069139, done.
    Counting objects: 100% (4069139/4069139), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (3998502/3998502), done.
    Writing objects: 100% (4069139/4069139), done.
    Selecting bitmap commits: 373068, done.
    Building bitmaps: 100% (379/379), done.
    Total 4069139 (delta 3149485), reused 0 (delta 0), pack-reused 0
    Removing duplicate objects: 100% (256/256), done.
    Expanding reachable commits in commit graph: 374944, done.
    Writing out commit graph in 5 passes: 100% (1874720/1874720), done.
      244m20.14s real    22m09.46s user   301m52.68s system
    
    $ gotadmin info                                  
    repository: /usr/obj/test.git
    pack files: 1
    packed objects: 4069139
    packed total size: 1.5G
    loose objects: 0
    
    Given that git is multi-threaded, there's little reason to complain
    about the speed.  The difference in the size of the resulting pack
    file, by a factor of over 3, is a concern, though.
    
    -- 
    Christian "naddy" Weisgerber                          naddy@mips.inka.de
    
    
    
  • Christian Weisgerber:

    reuse deltas while packing