You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b8727d2
Browse filesBrowse the repository at this point in the historyBrowse files
perf(dataplane,routing,acl-filter,flow-filter): take shared tables once per burst
A worker ran about 34 locked instructions per packet, each a full
barrier on x86. Many were stages taking shared, rarely changing state
once per packet rather than once per burst:
- egress and ingress entered the interface table, and egress the
adjacency table, for every packet. Entering a left-right reader is
an atomic RMW and a fence on the way in, and another RMW on the way
out.
- the FIB memo cached a reader per burst but entered it per packet.
- the ACL filter loaded its tables, an `Arc` reference both ways, per
packet.
- the flow filter cloned the packet's flow into its summary.
Egress, ingress and the ACL filter now take their tables once per
burst. The FIB memo holds each reader it caches entered (`FibPin`),
so entering it per packet takes left-right's nested, thread-local
path. The flow filter copies what it needs from the flow instead of
holding it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Daniel Noland <daniel@githedgehog.com>
0 commit comments