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

perf(rpc): io_uring integration & redesign #477

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

InKryption
Copy link
Contributor

@InKryption InKryption commented Jan 3, 2025

  • get receive working
  • get send working
  • error handling:
    • eliminate explicit TODO panics
    • improve first_error error handling if practical

follow up work (not part of this pr): https://github.com/orgs/Syndica/projects/2/views/10?pane=issue&itemId=93050647

@InKryption InKryption self-assigned this Jan 3, 2025
@0xNineteen 0xNineteen changed the title RPC server: io_uring upgrade WIP perf(rpc): io_uring WIP Jan 3, 2025
@InKryption InKryption force-pushed the ink/rpc-server-optimize branch 6 times, most recently from 4f8ccba to 6b56293 Compare January 14, 2025 20:36
@InKryption InKryption force-pushed the ink/rpc-server-optimize branch 6 times, most recently from 9f42c0c to 22c4f6d Compare January 20, 2025 19:09
@InKryption InKryption changed the title perf(rpc): io_uring WIP perf(rpc): io_uring integration & redesign Jan 20, 2025
Separates the server into two parts: the context, and the work pool;
the context contains everything generally needed to run the server,
the work pool contains a statically polymorphic implementation for
a pool to dispatch the actual work to.
In doing this, we also separate certain things out into a few different
files.
The RPC server context API has been modified slightly to reflect this,
and the work pool directly exposed, for now.
@InKryption InKryption force-pushed the ink/rpc-server-optimize branch from 72c0b7f to 945988d Compare January 20, 2025 19:25
@InKryption InKryption marked this pull request as ready for review January 21, 2025 10:33
* Handle potentially failing/cancelling of `accept_multishot` by
  re-queueing it, based on the `IORING_CQE_F_MORE` flag.
* Revise/simplify the queueing logic for the `accept_multishot` SQE.
* Resolve the EINTR TODO panics, returning a catch-all error value
  indicating it as a bad but non-critical error.
* Update the `a: ?noreturn` `if (a) |*b|` TODO, adding that it's solved
  in 0.14; it should be resolved after we update to 0.14.
* Unify EAGAIN panic message.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 🏗 In progress
Development

Successfully merging this pull request may close these issues.

1 participant