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

Re: [PATCH 0/7] nd/repack-keep-pack update

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Apr 14, 2018, 19:47 UTC
Message-ID
<878t9pfu4f.fsf@evledraar.gmail.com>
In-Reply-To
<20180414152642.4666-1-pclouds@gmail.com>
On Sat, Apr 14 2018, Nguyễn Thái Ngọc Duy wrote:
> This is basically a resend from the last round but rebased on
> 'master'. The old base results in some conflicts with packfile and oid
> conversion series. This one should reduce merge conflicts on 'pu' to
> trivial ones.

Thanks. I've been running this at work and as noted in https://public-inbox.org/git/87vadpxv27.fsf@evledraar.gmail.com/ it's had big performance impact to the better, users even started noticing it (they'd previously get noticeable slowdowns while doing other task on GC).

I also tried to see just how much worse this was making performance, my hunch was that the difference should be trivial but noticeable since we'll produce a less efficient pack.

What I found was the opposite, under real-world conditions it seems to be making things 1-2% better on common git operations, which I suspect is because once we've done a few pulls and coalesced those into their own pack(s) there's more cache locality for the data we're actually looking at.

I.e. once you've got a repo has a big pack you're not touching, and a few weeks of updates from upstream that you've coalesced into another pack there's a higher density of stuff you care about near HEAD per FS page in the recent smaller pack, which if you're pressed for memory and parts of your pack are getting paged out of the FS cache is a win. I haven't confirmed that, it's just a hypothesis.

The only (trivial) issue I found in the patches themselves was that between 4/5 and 5/7 you're adding an empty line to config.txt in 4/7 just to erase it in 5/7, better not to add it to begin with, but hopefully Junio can fix that up (if he cares).

Previous: Nguyễn Thái Ngọc DuyNext: Junio C Hamano
Message 9 of 19 in “nd/repack-keep-pack update”
  1. 0/7 nd/repack-keep-pack updateNguyễn Thái Ngọc Duy, Apr 14, 2018
  2. 3/7 gc: add --keep-largest-pack optionNguyễn Thái Ngọc Duy, Apr 14, 2018
  3. 2/7 repack: add --keep-pack optionNguyễn Thái Ngọc Duy, Apr 14, 2018
  4. 7/7 pack-objects: show some progress when counting kept objectsNguyễn Thái Ngọc Duy, Apr 14, 2018
  5. 5/7 gc: handle a corner case in gc.bigPackThresholdNguyễn Thái Ngọc Duy, Apr 14, 2018
  6. 6/7 gc --auto: exclude base pack if not enough mem to "repack -ad"Nguyễn Thái Ngọc Duy, Apr 14, 2018
  7. 4/7 gc: add gc.bigPackThreshold configNguyễn Thái Ngọc Duy, Apr 14, 2018
  8. 1/7 t7700: have closing quote of a test at the beginning of lineNguyễn Thái Ngọc Duy, Apr 14, 2018
  9. Ævar Arnfjörð BjarmasonApr 14, 2018
  10. Junio C HamanoApr 14, 2018
  11. 0/7 nd/repack-keep-pack updateNguyễn Thái Ngọc Duy, Apr 15, 2018
  12. 1/7 t7700: have closing quote of a test at the beginning of lineNguyễn Thái Ngọc Duy, Apr 15, 2018
  13. 2/7 repack: add --keep-pack optionNguyễn Thái Ngọc Duy, Apr 15, 2018
  14. 5/7 gc: handle a corner case in gc.bigPackThresholdNguyễn Thái Ngọc Duy, Apr 15, 2018
  15. 7/7 pack-objects: show some progress when counting kept objectsNguyễn Thái Ngọc Duy, Apr 15, 2018
  16. 6/7 gc --auto: exclude base pack if not enough mem to "repack -ad"Nguyễn Thái Ngọc Duy, Apr 15, 2018
  17. 3/7 gc: add --keep-largest-pack optionNguyễn Thái Ngọc Duy, Apr 15, 2018
  18. 4/7 gc: add gc.bigPackThreshold configNguyễn Thái Ngọc Duy, Apr 15, 2018
  19. Junio C HamanoApr 16, 2018

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.