Support io_uring#2332
Open
yellowhatter wants to merge 91 commits into
Open
Conversation
Conflicts: Cargo.toml
- support UDP - WIP on streamed links
- fix buffer reclamation bug
- integrate uring support for most links - make automatic read mode selection (uring or tokio) - code format
❌ 1 Tests Failed:
View the top 1 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
- make growing RX batch memory (to optimize mem footprint and support zero-copy for big payloads)
- exponential grow for uring batch arena - tune RX arena size based on config
Conflicts: Cargo.lock
- add async wait for uring-global errors (as opposed to rx-task-related errors) - supply uring thread with tokio executor context to be compatible with tokio-aware user code
Conflicts: io/zenoh-transport/src/unicast/universal/link.rs
- fix prlimit for CI
Conflicts: zenoh/tests/adminspace.rs zenoh/tests/liveliness.rs
- rename `supply_batches` to `ensure_batches_to_ring` - allow UDP link for uring operation
Conflicts: Cargo.toml
- enable extended udp tests for uring
- improve uring callback faiure handling
Contributor
Author
Contributor
Author
Contributor
Author
- support transport_compression for io_uring - fix stats for io_uring
Contributor
Author
|
Docs update: zenoh-rs/zenoh-web#127 |
Conflicts: Cargo.lock Cargo.toml zenoh-ext/tests/liveliness.rs
Conflicts: Cargo.lock Cargo.toml
- Optimize memory fragmentation - Optimize main read loop - Optimnize zbuf reader
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.






Summary
This PR introduces
io_uringsupport to Zenoh behind theuringfeature flag.The implementation is intentionally scoped as an internal transport/runtime enhancement rather than a public API change. The patch adds a new internal crate,
commons/zenoh-uring, and wires it into the workspace so theio_uring-specific memory, batching, reader, and writer logic can live outside the public surface area.What this changes
Transport integration
uringfeature that is efficient only for Linux.io_uringsupport to the Zenoh transport stack.io_uringandtokio.io_uringoperations through dedicated transport support code.Link coverage
uringpath still works normally.Buffer and memory handling
uringbuffers.mmap/mlockand exposes it both asio_uringprovided buffers and as registerediovecbuffers.Reader / writer path
readerandwriterimplementations for theuringpath.Error handling and runtime integration
uringthread so Tokio-aware user code remains compatible.Build / CI / test coverage
uringcrate and dependency wiring to the workspace.uringfeature is disabled.uringto CI.uring-related tests, including dynamic-port coverage and extended UDP test paths.Design notes
The implementation follows a conservative enhancement approach:
uring,uring-specific code isolated behind feature gates and internal crates,Expected user impact
For users building with
-F uring, this adds a new Linux I/O backend that reduces overhead in the transport path and improve handling of larger or fragmented payloads. For users who do not enable the feature, the existing build and transport behavior remain unchanged. The improvement gives 25-50% latency reduction and few % messaging rate increase. Performance tests included in comments to this PR below.Validation
Validation for this PR is centered on:
uring,🏷️ Label-Based Checklist
Based on the labels applied to this PR, please complete these additional requirements:
Labels:
enhancement✨ Enhancement Requirements
Since this PR enhances existing functionality:
Remember: Enhancements should not introduce new APIs or breaking changes.
Instructions:
- [ ]to- [x])This checklist updates automatically when labels change, but preserves your checked boxes.