You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Issue 481718 improved HTTP/2 stream interleaving by going from a model where the interleave quantum was the whole stream, to a model where the interleave quantum was the flow control window size.
Currently, for 2 streams, we generate DATA frames to fill the flow control window for stream1, then we write them. After the write stream1 is put at the end of the queue, and we generate DATA frames to fill the flow control window for stream2, then we write them. After the write stream2 is put at the end of the queue, and we generate DATA frames for stream1 again.
The reason of this scheme is that we wanted to generate as many DATA frame as possible to gather-write them in a single write.
A better scheme would be to make the interleave quantum the max frame size.
The idea would be to generate 1 DATA frame from stream1, then 1 data frame from stream2, then look if stream1's flow control window is exhausted; if not, generate another frame for stream1, then look at the flow control window for stream2, possibly generate a frame for stream2, and so on until the flow control windows are exhausted, and then perform a single gather-write.
The text was updated successfully, but these errors were encountered:
Fixed by making the interleave quantum be the frame size rather than
the flow control window size.
Reworked HTTP2Flusher.process() to be simpler and properly
interleave frames.
Issue 481718 improved HTTP/2 stream interleaving by going from a model where the interleave quantum was the whole stream, to a model where the interleave quantum was the flow control window size.
Currently, for 2 streams, we generate DATA frames to fill the flow control window for stream1, then we write them. After the write stream1 is put at the end of the queue, and we generate DATA frames to fill the flow control window for stream2, then we write them. After the write stream2 is put at the end of the queue, and we generate DATA frames for stream1 again.
The reason of this scheme is that we wanted to generate as many DATA frame as possible to gather-write them in a single write.
A better scheme would be to make the interleave quantum the max frame size.
The idea would be to generate 1 DATA frame from stream1, then 1 data frame from stream2, then look if stream1's flow control window is exhausted; if not, generate another frame for stream1, then look at the flow control window for stream2, possibly generate a frame for stream2, and so on until the flow control windows are exhausted, and then perform a single gather-write.
The text was updated successfully, but these errors were encountered: