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

[WIP] Experiments with worker threads #550

Draft
wants to merge 6 commits into
base: master
Choose a base branch
from
Draft

Conversation

FelixMcFelix
Copy link
Collaborator

We have some aspects of packet delivery that make worker threads and/or full-fledged squeues, interesting to experiment with:

  • Packets for a logical port will arrive from both the underlay and its VNIC -- likely two threads with different CPU bindings.
  • Ports are currently locked via mutex, such that we want to serialise packets bound for a port to be processed by the same kthread.
  • Packets arriving on the VNIC backing an OPTE port are delivered one packet at a time. (I have not yet dug into this behaviour on the illumos side).
  • Packets arriving on the Underlay will be delivered one-at-a-time until we can finalise/implement the ongoing illumos flows design work.

Currently this branch includes some Rust wrappers around kcondvars and thread creation/binding in a kernel module context (and a basic MPSC with worse contention than I'd like). I'm using this as a space to hash out some ideas in this space, even if the lifetime of this work is inevitably temporary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant