Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adjusts the multiplexer config to increase the receive window. This will reduce the effects of throttling as latency increases and should give us a theoretical throughput of ~300Mbps @ 60ms per stream instead of ~33Mbps.
The trade-off here is that it increases the memory allocated to buffers. Due to this, I capped the max streams to 40 to prevent DoS (our protocol uses a static number of streams, 33 atm). The existing default configuration provides a max of 8192 streams, which works out to ~2Gb maximum allocation if they were all opened. With the new settings the maximum allocation is 640Mb.
Newer versions of the
yamux
crate scale the window dynamically based on latency + number of opened streams. But their API has breaking changes that we need to fix if we want to bump later.