Skip to content
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

Reduce overhead of every single order/sync frame by 162/222 bytes #16468

merged 1 commit into from May 4, 2019


Copy link

commented Apr 29, 2019

4 send syscalls combined with TCP_NODELAY means that the network stack has to emit 4 frames per OpenRA frame. The overhead of Ethernet+IPv4+TCP is at least 54 bytes per frame and Ethernet+IPv6+TCP is at least 74 bytes per frame.

@jrb0001 jrb0001 force-pushed the jrb0001:net-overhead branch from e0b25ab to 3569f6a Apr 29, 2019


This comment has been minimized.

Copy link

commented Apr 29, 2019

Context from IRC: Each Connection.Send call would be immediately flushed (because of the nodelay) and sent as its own TCP frame. Using the MemoryStream to create a single blob for each packet means that we only pay the TCP overhead once.

@jrb0001 jrb0001 force-pushed the jrb0001:net-overhead branch from 3569f6a to 4467265 Apr 29, 2019

@pchote pchote added this to the Next Release milestone Apr 29, 2019

pchote approved these changes May 3, 2019

@pchote pchote added the PR: Needs +2 label May 3, 2019

@reaperrr reaperrr merged commit b774556 into OpenRA:bleed May 4, 2019

2 checks passed

continuous-integration/appveyor/pr AppVeyor build succeeded
continuous-integration/travis-ci/pr The Travis CI build passed

@jrb0001 jrb0001 deleted the jrb0001:net-overhead branch May 4, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
3 participants
You can’t perform that action at this time.