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

Re: What to expect after 0.99.8

From
Linus Torvalds <torvalds@osdl.org>
Date
Oct 3, 2005, 23:16 UTC
Message-ID
<Pine.LNX.4.64.0510031606550.31407@g5.osdl.org>
In-Reply-To
<7v1x32l0gz.fsf@assigned-by-dhcp.cox.net>
On Mon, 3 Oct 2005, Junio C Hamano wrote:
Show 10 quoted lines
> 
> This reminds me of one patch:
> 
>     From: Dan Aloni <da-x@monatomic.org>
>     Subject: [PATCH] Fix git+ssh's indefinite halts during long fetches
>     Date: Sat, 1 Oct 2005 21:39:42 +0300
>     Message-ID: <20051001183942.GA2099@localdomain>
> 
> I'd appreciate it if you had a chance to take a look at it and
> comment on it.
I personally hate it.

It adds horrible patches to fairly core stuff, all because the prefetching is not limited.

As far as I can tell, it should be much easier to just limit the prefetching to some reasonable limit (say, a few objects deep), which guarantees that the prefetching doesn't fill up the write queues on the fetching side.

It's not like prefetching improves performance once you get to the point where you can stream. I suspect having more than two or three objects "in flight" really only helps with

 - lots of small objects
 - high latency
 - high bandwidth

and the thing is, high latency together with high bandwidth is really quite uncommon - usually high latency goes along with _low_ bandwidth (the one exception is things like satellite links, which can have latencies in the seconds, even with good throughput).

It should be pretty easy to benchmark, but my _suspicion_ is that limiting the read-ahead to even just five is likely to get you 99% of the way, and that the performance impact of going higher is very limited.

(It might need some extra code to make the synchronous receiving side re-start the prefetching if the prefetching has stopped after a few entries - but at that point the extra code is where it is supposed to be, rather than having core code work around problems in the fetching. I also suspect that the prefetch limiting can happily be done in the generic "pull" code, rather than separately for each protocol, so it would need to be done in just one place).

		Linus
Previous: Junio C HamanoNext: Dan Aloni
Message 17 of 39 in “What to expect after 0.99.8”
  1. Junio C HamanoOct 3, 2005
  2. A Large Angry SCMOct 3, 2005
  3. Junio C HamanoOct 3, 2005
  4. Enable and fix support for base less merges.Fredrik Kuivinen, Oct 3, 2005
  5. Josef WeidendorferOct 3, 2005
  6. Junio C HamanoOct 4, 2005
  7. Josef WeidendorferOct 4, 2005
  8. Junio C HamanoOct 4, 2005
  9. Random documentation fixesJonas Fonseca, Oct 3, 2005
  10. Daniel BarkalowOct 3, 2005
  11. Martin CoxallOct 3, 2005
  12. Nick HengeveldOct 3, 2005
  13. Daniel BarkalowOct 3, 2005
  14. Junio C HamanoOct 3, 2005
  15. Daniel BarkalowOct 3, 2005
  16. Junio C HamanoOct 3, 2005
  17. Linus TorvaldsOct 3, 2005
  18. Dan AloniOct 4, 2005
  19. Daniel BarkalowOct 4, 2005
  20. Matthias UrlichsOct 4, 2005
  21. H. Peter AnvinOct 4, 2005
  22. Matthias UrlichsOct 4, 2005
  23. H. Peter AnvinOct 4, 2005
  24. Junio C HamanoOct 4, 2005
  25. Linus TorvaldsOct 5, 2005
  26. H. Peter AnvinOct 5, 2005
  27. Daniel BarkalowOct 4, 2005
  28. H. Peter AnvinOct 4, 2005
  29. Daniel BarkalowOct 4, 2005
  30. Alan ChandlerOct 3, 2005
  31. H. Peter AnvinOct 3, 2005
  32. Greg KHOct 4, 2005
  33. H. Peter AnvinOct 5, 2005
  34. Matthias UrlichsOct 3, 2005
  35. Chuck LeverOct 4, 2005
  36. Junio C HamanoOct 4, 2005
  37. Fredrik KuivinenOct 4, 2005
  38. Fredrik KuivinenOct 5, 2005
  39. Junio C HamanoOct 5, 2005

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.