Re: [PATCH v2] fetch-pack: grow stateless RPC windows exponentially
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Jul 19, 2016, 19:53 UTC
- Message-ID
- <20160719195347.GF29326@google.com>
- In-Reply-To
- <xmqq8twxfn4j.fsf@gitster.mtv.corp.google.com>
Junio C Hamano wrote:
> Even if it is conservative, I wonder if it is truly a good idea to > make it exponentially grow forever from that point of view. Would > it give essentially the same result to you if we discard the patch > in question and just raise LARGE_FLUSH to 10k instead?
I don't think it would be essentially the same result. As discussed before, unlike the bidi (ssh:// and git:// protocols) case, linear growth is expensive in the stateless-rpc (https://) case --- each round of negotiation requires re-sending the existing 'have's and requires the peer repeatedly processing this increasingly large list of 'have's.
For comparison, in the bidi case, linear growth of next_flush means sending a bounded number of 'have's per round and is quite sensible.
In the stateless-rpc case, linear growth means getting a bounded number of 'have's worth of benefit (new 'have's) in each round, in exchange for a linearly increasing cost (existing 'have's). That is a high cost for limited benefit. Exponential growth is a better deal.
Jonathan