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

Re: Efficiency of initial clone from server

From
Jon Smirl <jonsmirl@gmail.com>
Date
Feb 12, 2007, 14:31 UTC
Message-ID
<9e4733910702120631o1be92037ue89b069b0354c8cb@mail.gmail.com>
In-Reply-To
<Pine.LNX.4.63.0702121241130.22628@wbgn013.biozentrum.uni-wuerzburg.de>
On 2/12/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
Show 19 quoted lines
> Hi,
>
> On Sun, 11 Feb 2007, Junio C Hamano wrote:
>
> > You are assuming everybody does initial clone all the time.  I do not
> > think that holds true in practice.
>
> It depends how you interpret "all the time". What you (Junio) are
> suggesting is that the count of initial clones is relatively small as
> compared to the total number of fetches.
>
> However, you can interpret "all the time" in terms of "time". Most fetches
> are really small. They even often end up in no objects pulled at all.
> These are cheap for the server. The initial clones take a long time. They
> are expensive.
>
> I'd be interested to learn how much of the CPU time is actually spent in
> initial clones, rather than other types of fetches. It might make sense
> yet to optimize initial clones.

I don't think CPU is a problem at kernel.org, but disk IO defnitely is. The initial clones cause several minutes (sometimes 10 min or more when there kernel.org is loaded) worth of disk IO. They also totally thrash the kernel.org cache. The alternative of using a clone to trigger a repack would go through this once, and then use sendfile (is gitd that smart?) to send the packs. Sendfile uses the smallest cache required.

Why doesn't clone copy the existing packs down first with sendfile, then build a small pack for what is left and avoid the initial step of making a giant pack. Isn't clone going to break when the repo exceeds 2GB?

Show 5 quoted lines
>
> Ciao,
> Dscho
>
>
-- 
Jon Smirl
jonsmirl@gmail.com
Previous: Johannes SchindelinNext: Shawn O. Pearce
Message 29 of 32 in “Efficiency of initial clone from server”
  1. Jon SmirlFeb 11, 2007
  2. Shawn O. PearceFeb 11, 2007
  3. Jon SmirlFeb 11, 2007
  4. Jon SmirlFeb 11, 2007
  5. Nicolas PitreFeb 12, 2007
  6. Jon SmirlFeb 12, 2007
  7. Nicolas PitreFeb 12, 2007
  8. Shawn O. PearceFeb 12, 2007
  9. Nicolas PitreFeb 12, 2007
  10. Junio C HamanoFeb 12, 2007
  11. Jon SmirlFeb 12, 2007
  12. Junio C HamanoFeb 12, 2007
  13. Jon SmirlFeb 12, 2007
  14. Jon SmirlFeb 12, 2007
  15. Shawn O. PearceFeb 12, 2007
  16. Jon SmirlFeb 12, 2007
  17. Nicolas PitreFeb 12, 2007
  18. Theodore TsoFeb 12, 2007
  19. Junio C HamanoFeb 12, 2007
  20. Nicolas PitreFeb 12, 2007
  21. Jakub NarebskiFeb 13, 2007
  22. Junio C HamanoFeb 12, 2007
  23. Jon SmirlFeb 12, 2007
  24. Junio C HamanoFeb 12, 2007
  25. Jon SmirlFeb 12, 2007
  26. Jon SmirlFeb 12, 2007
  27. Shawn O. PearceFeb 12, 2007
  28. Johannes SchindelinFeb 12, 2007
  29. Jon SmirlFeb 12, 2007
  30. Shawn O. PearceFeb 12, 2007
  31. Andreas EricssonFeb 13, 2007
  32. Jon SmirlFeb 11, 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.