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

Re: [PATCH] packfile.c: speed up loading lots of packfiles.

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Dec 4, 2019, 04:23 UTC
Message-ID
<20191204042332.GG214771@google.com>
In-Reply-To
<20191203221730.GA28419@sigill.intra.peff.net>
Jeff King wrote:
> I agree that 10,000 packs is ridiculous, but we do see it (and worse)
> occasionally from people pushing in a loop before our scheduled
> maintenance kicks in.

On that subject: one thing Martin Fick (cc-ed) has suggested is moving more of the garbage collection work "inline" into the push path. That is, instead of letting someone push 10,000 packs in a loop, build concatenated packs ("exponential rollup") in the push path and don't return success and commit the packs into the object store until we're done. That way a reasonably small amortized cost is paid up front by the pusher instead of later by everyone.

Midx changes things a little: it might make sense to build concatenated idxes instead of packs, which would still avoid the same quadratic behavior.

Just a random thought, Jonathan

Previous: Jeff KingNext: Taylor Blau
Message 14 of 15 in “packfile.c: speed up loading lots of packfiles.”
  1. packfile.c: speed up loading lots of packfiles.Colin Stolley, Nov 27, 2019
  2. hashmap vs khash? Re: [PATCH] packfile.c: speed up loading lots of packfiles.Eric Wong, Nov 28, 2019
  3. Junio C HamanoNov 30, 2019
  4. Jeff KingDec 2, 2019
  5. SZEDER GáborDec 2, 2019
  6. Jeff KingDec 2, 2019
  7. Taylor BlauDec 3, 2019
  8. Jeff KingDec 3, 2019
  9. Junio C HamanoDec 3, 2019
  10. Colin StolleyDec 3, 2019
  11. Jeff KingDec 3, 2019
  12. Junio C HamanoDec 4, 2019
  13. Jeff KingDec 3, 2019
  14. Jonathan NiederDec 4, 2019
  15. Taylor BlauDec 3, 2019

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.