IORingGroup 1.0.8 allows more than one send in flight per socket. RIO reports send completion on acknowledgement rather than on copy, so with a single send in flight a connection was capped at one send per round trip whenever it had data queued. On a 50ms-RTT shard that showed up as in-game latency of 100-145ms whenever any data was flowing, against a 50ms idle baseline; as little as 6 bytes of queued data was enough to hold the gate shut. Local testing could not surface it: the same measurement at loopback RTT is microseconds. Adds two restart-time settings: network.maxOutstandingSends (default 32) - sends in flight per connection. Honoured by RIO only; other backends complete sends on copy and report 1. Costs a request-queue and completion-queue slot per send, not another buffer, since every outstanding send addresses a different range of the same registered buffer. network.sendBufferSize (default 256KB) - per-connection send buffer, coerced to a power of two of at least the platform allocation granularity. This is the lever for "send buffer exhausted" disconnects and the per-connection memory ceiling. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| DumpNetStates.cs | ||
| NetState.ClientVersion.cs | ||
| NetState.cs | ||
| NetState.Movement.cs | ||
| NetState.Network.cs | ||
| ProtocolChanges.cs | ||