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

Add optional CLI parameter for Linux enable-liburing to use the async I/O library for increased send performance #767

Closed
wants to merge 48 commits into from

Conversation

phillip-stephens
Copy link
Contributor

@phillip-stephens phillip-stephens commented Jan 23, 2024

Scratch Space as I clean up this PR

Todo

  • Write up manual page
  • Update --help to say enable-liburing is only available with select distros + versions + document what those versions are
  • Rewrite/Remove 10gigE.md file
  • Update wiki/INSTALL docs to mention how you should not use --enable-liburing with un-supported distros/versions
  • Document what hit-rates I achieved
  • Add conditional compilation so the code will compile successfully on Linux/non-Linux and older linux distros without liburing and those with
  • Add CLI flag to enable the liburing code flows

Context

liburing is the API library that wraps the underlying io_uring Linux async I/O library. It provides an elegant interface to submit I/O tasks asynchronously to the kernel, vastly improving networking performance.

Various linux distros ship with various linux kernels, each of which has a different version of io_uring baked in. Additionally, the package managers of different distro versions will ship different versions of liburing. Adding on to the confusion, the developers of liburing/io_uring have changed, updated, and added features rapidly over the past couple years. This means a guide written 2 years ago may very well be out-of-date. A small example is how this otherwise great guide to liburing mentions how to use submission queue polling, you must register the file handlers before. This isn't true in recent versions.

Takeaway here is I'll need to test what versions have the features our code uses and list these as Supported Liburing/io_uring Versions

phillip-stephens and others added 30 commits December 15, 2023 16:11
… to cleanup tho. Performance is looking real good
…or modifying a struct rather than a pointer to a struct)
…bmitted to kernel, so updated to deal with that
@zakird
Copy link
Member

zakird commented May 29, 2024

Given lack of improvement over send_mmsg, closing.

@zakird zakird closed this May 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants