-
Notifications
You must be signed in to change notification settings - Fork 3
introducing a minimum size for window update #5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@kazu-yamamoto I don't understand this fix. We start with a situation like this: where So
|
|
@edsko In the case above, Consider another case where you saw a small value of window update with the cold code. |
|
Sorry, I still don't understand :) Doesn't |
|
After applying this patch, do you still see any window updates of small values? |
|
Never mind. Probably you are right. I need to think this issue more. |
|
@edsko First of all, please test this patch and check if your issue is fixed. I think this is a correct fix. You assume that
|
|
@kazu-yamamoto We have studied this PR again and we understand it better now. Perhaps it could be simplified if we base the decision to send a window update only on the amount of consumed data, and send a window update when we have consumed at least half of the window size (rather than 1/8th). Either way, it is reducing the number of window updates. The simplification suggested above might just reduce them even further. |
|
Thanks. |
## 0.1.4 * Using Integer instead of Int in LRUCache. ## 0.1.3 * Simplify `maybeOpenRxWindow` and improve docs [#7](kazu-yamamoto/network-control#7) ## 0.1.2 * introducing a minimum size for window update [#5](kazu-yamamoto/network-control#5) ## 0.1.1 * Change defaultMaxData [#4](kazu-yamamoto/network-control#4)
kazu-yamamoto/http2#129 reported that a lot of very small window updates are sent.
This is due to the algorithm in
maybeOpenRxWindow.The algorithm delays the first window update until the available buffer size becomes greater than 1/2 of the total buffer size. But for the second window update or later, the small window update can be sent if the application consumes the available data slowly while new data are receiving.
@edsko first talked about the connection window. This makes sense to me because the connection window rapidly reaches the threshold before #4. @FinleyMcIlwaine showed that this can happens even for the stream window after #4.
My solution is simple. I would like to introduce the minimum size for window update whose default size is 1/8 of the total buffer.