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

io_uring support #1121

Closed
1 of 2 tasks
Jonas-Heinrich opened this issue Apr 2, 2024 · 3 comments
Closed
1 of 2 tasks

io_uring support #1121

Jonas-Heinrich opened this issue Apr 2, 2024 · 3 comments
Labels
feature-request A feature should be added or improved.

Comments

@Jonas-Heinrich
Copy link

Jonas-Heinrich commented Apr 2, 2024

Feature Request: io_uring support

I am not sure whether this has been asked before (could not find it via search), but has an optimized networking stack using Linux's io_uring kernel interface been considered? E.g., based on the analysis in the paper of Durner et al. [1], I would expect up to 30% reduction in CPU usage:

Throughput and CPU usage with io_uring

Use Case

Looking at an internal benchmark, we noticed that a non-trivial amount of CPU usage occurs when we just download data from S3. Besides decryption, this workload also copies a lot of data between kernel and user space (which could be reduced with io_uring).

Additionally, AWS requests could be batched to invoke only a single syscall.

Proposed Solution

Reference implementation (C++): https://github.com/durner/AnyBlob

Acknowledgements

  • I may be able to implement this feature request
  • This feature might incur a breaking change

A note for the community

Community Note

  • Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
  • Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
  • If you are interested in working on this issue, please leave a comment

[1] Durner, D., Leis, V. and Neumann, T., 2023. Exploiting Cloud Object Storage for High-Performance Analytics. Proceedings of the VLDB Endowment, 16(11), pp.2769-2782.Looking at e.g. this paper's figure 12

@Jonas-Heinrich Jonas-Heinrich added feature-request A feature should be added or improved. needs-triage This issue or PR still needs to be triaged. labels Apr 2, 2024
@rcoh
Copy link
Contributor

rcoh commented Apr 2, 2024

This work would be in the underlying IO libraries (Tokio, Hyper, etc.) and not in the SDK itself. I agree this is an interesting direction though!

@rcoh rcoh removed the needs-triage This issue or PR still needs to be triaged. label Apr 2, 2024
@Velfi
Copy link
Contributor

Velfi commented Apr 12, 2024

I'm going to close this since we won't be implementing it ourselves. If you find a Rust client that makes use of this optimization and have trouble getting it to work with the SDK, let us know.

@Velfi Velfi closed this as completed Apr 12, 2024
Copy link

Comments on closed issues are hard for our team to see.
If you need more assistance, please either tag a team member or open a new issue that references this one.
If you wish to keep having a conversation with other community members under this issue feel free to do so.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request A feature should be added or improved.
Projects
None yet
Development

No branches or pull requests

3 participants