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

enhancement(rpc server:io_uring): consider intermediate event loop #516

Open
InKryption opened this issue Jan 24, 2025 · 0 comments
Open
Labels
enhancement New feature or request feature rpc

Comments

@InKryption
Copy link
Contributor

At the time of writing, the implementation for the io_uring WorkPool backend is fairly simple and centered primarily around the base IoUring API provided by the stdlib; as it stands, this works well insofar as handling IO that can be dispatched to the kernel (which is everything that's required for sending snapshots, and the other responses to GET requests).

As we implement more of the RPC API - in particular responding to POST requests, the actual Remote Procedure Calls -, this may become insufficient, as we will need to dispatch work that isn't based on IO, but on user-space processing specific to each kind of RPC.

Side-Quests

If it so happens that an event loop can be created in such a way that it can be shared easily, readably, and efficiently between a few different WorkPool backends, that would be ideal, but not a requirement.

Non-Goals

We are not crafting a general-purpose or cross-platform event loop; it should remain tightly integrated with io_uring (or for each, whatever other backend we may implement in the future) so as to take full advantage of its abilities, and keep our implementation bespoke and easy to understand.

Goal

The purpose of this issue is to keep track of the work that will go into evaluating whether an extra layer for dispatching both IO and user space processing tasks is necessary, or if we can satisfy all of our requirements using io_uring primitives in some way. This issue may be closed when that is accomplished.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request feature rpc
Projects
Status: No status
Development

No branches or pull requests

1 participant