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

# Improve SCION router performance to meet target #4403

Open
3 tasks
Tracked by #4402
jiceatscion opened this issue Sep 29, 2023 · 2 comments
Open
3 tasks
Tracked by #4402

# Improve SCION router performance to meet target #4403

jiceatscion opened this issue Sep 29, 2023 · 2 comments
Labels
c/router SCION Router workitem Something needs doing

Comments

@matzf matzf added c/router SCION Router workitem Something needs doing labels Oct 2, 2023
@matzf matzf added this to the High performance router milestone Oct 2, 2023
@jiceatscion jiceatscion changed the title Improve SCION router performance to meet target # Improve SCION router performance to meet target Oct 2, 2023
@jiceatscion
Copy link
Contributor Author

The deliverable of this work item is a router with satisfactory predicted performance. This is an open-ended task.

Profiling and other instrumentation have to be created ad-hoc to reveal opportunities for optimization, followed or interleaved with a cycle of implementing and testing improvements. The cycle stops when we agree that performance improvement is no-longer a priority.

@jiceatscion
Copy link
Contributor Author

Observations from initial profiling and other measurements:

  • The socket API had a constant and significant packet overhead. iperf3 reveals a minimum packet time of about 1 microsecond no-mater what the network device is: veth+bridge, Gig-e NIC, 10 Gig-e NIC, etc.
  • Packet processing itself represents 11% of realtime execution in the router (excluding go runtime cost).
  • with small (172 bytes) packets, 25% of the router time is spent in the kernel sending packets (excluding go runtime cost).
  • with small (172 bytes) packets, 27% of the router time is spent in the kernel receiving packets (excluding go runtime cost).
  • Another 30.81% is spent in the go runtime, mostly as:
    • Allocating/GCing: 2.88% (MsgHdrUnpack->ParseInetAddr, resolveLocalDst)
    • Chanrecv: 3.6%
    • Chansend: 5.62%
    • computeProcID: 2.37%
    • runtime.Schedule (excluding channel ops): 6.8%
    • mmsghdrs unpack: 2.45%
    • mmsghdrsPacker pack: 2.39%
    • runtime mapaccess1/2: 3.48%
    • metrics: 1.22%
    • time.Now: 1.54%
  • The remaining 4.65% is small bits and pieces.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c/router SCION Router workitem Something needs doing
Projects
None yet
Development

No branches or pull requests

2 participants