- From: Greg Wilkins <gregw@intalio.com>
- Date: Sat, 21 Mar 2015 17:55:59 +1100
- To: Bob Briscoe <bob.briscoe@bt.com>
- Cc: Stuart Douglas <stuart.w.douglas@gmail.com>, "mbelshe@chromium.org" <mbelshe@chromium.org>, fenix@google.com, Martin Thomson <martin.thomson@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>
- Message-ID: <CAH_y2NEkb22Xh1wwW1vOa9=FEjBEUvuicdLohzFWZ9vFSWK-zQ@mail.gmail.com>
On 21 March 2015 at 05:22, Bob Briscoe <bob.briscoe@bt.com> wrote: > Certainly, if flow control is not used to close down a stream, then not > being able to close down a stream won't be a problem. That does leave the > problem of what per-stream flow control /can/ be used for, if it can't be > used to slow down streams! > > Bob, I'm not following you here? I've re-read your review and this thread I don't see where it is indicated that the flow control mechanism cannot shut down a stream?? In fact the problem highlighted are actually the opposite in that flow control, if given an under generous window it will stop the stream too often because it does not allow for enough in flight data. If the window_update is overgenerous in an attempt to maximim network performance, then this still does not prevent the flow control mechanism from stopping stream. Receivers must commit memory to match the windows and thus must be prepared to read/buffer data within the window size. A stream who's consumer is blocked/slow will still eventually be stopped without HOL blocking any other streams because the receiver has committed the buffers to match the window. Overgenerous windows will have an impact on priority, because as you say, you can't claw back data already sent if the receivers priorities change. But then I'm pretty much of the opinion that priorities are a nigh impossible dream. If streams are created in reverse priority order, then most senders are going to be able to significantly reorder them since once low priority ones have been dispatched to the application it is too late to claw back resources for a subsequently arriving (or reprioritized exiting) high priority stream. I'm +1 with Stuart when he says: On 20 March 2015 at 11:18, Stuart Douglas <stuart.w.douglas@gmail.com> wrote: > Basically IMHO flow control should not be used to control priority, that > is what PRIORITY frames are for, and in general servers can only ever do > priority on a best effort approach anyway. If you try and use flow control > to enforce a strict priority mechanism you run a very real risk of > deadlocks. So I'm with you when you say the mechanism has been poorly named and described and is in many ways still experimental with unknown impact on priority and network performance. I also acknowledge that without acks it's will be near impossible to dynamically tune window sizes to match network performance as TCP does. However, I expect that more often than not it will be memory limits that statically set the window sizes rather than any dynamic measure of network performance. This will almost certainly cost network efficiency in some cases (A single h2 stream is probably never going to saturate a high bandwidth network), but we are yet to learn if this is a significant number of use-cases. But not following you when you say flow control can't be used to stop a stream. cheers -- Greg Wilkins <gregw@intalio.com> @ Webtide - *an Intalio subsidiary* http://eclipse.org/jetty HTTP, SPDY, Websocket server and client that scales http://www.webtide.com advice and support for jetty and cometd.
Received on Saturday, 21 March 2015 06:56:29 UTC