By using this site, you agree to the Privacy Policy and Terms of Use.
Accept
World of SoftwareWorld of SoftwareWorld of Software
  • News
  • Software
  • Mobile
  • Computing
  • Gaming
  • Videos
  • More
    • Gadget
    • Web Stories
    • Trending
    • Press Release
Search
  • Privacy
  • Terms
  • Advertise
  • Contact
Copyright © All Rights Reserved. World of Software.
Reading: IO_uring Network Zero-Copy Receive Lands In Linux 6.15
Share
Sign In
Notification Show More
Font ResizerAa
World of SoftwareWorld of Software
Font ResizerAa
  • Software
  • Mobile
  • Computing
  • Gadget
  • Gaming
  • Videos
Search
  • News
  • Software
  • Mobile
  • Computing
  • Gaming
  • Videos
  • More
    • Gadget
    • Web Stories
    • Trending
    • Press Release
Have an existing account? Sign In
Follow US
  • Privacy
  • Terms
  • Advertise
  • Contact
Copyright © All Rights Reserved. World of Software.
World of Software > Computing > IO_uring Network Zero-Copy Receive Lands In Linux 6.15
Computing

IO_uring Network Zero-Copy Receive Lands In Linux 6.15

News Room
Last updated: 2025/03/30 at 7:08 AM
News Room Published 30 March 2025
Share
SHARE

IO_uring continues maturing while being one of the greatest innovations within the Linux kernel in the past number of years. With Linux 6.15, IO_uring is getting even more interesting with introducing network zero-copy receive support. With this new code a 200G link could be saturated off a single CPU core in a recent demonstration.

Jens Axboe of Meta does a great job describing the exciting IO_uring network zero-copy receive support within this week’s pull request:

“This pull request adds support for zero-copy receive with io_uring,enabling fast bulk receive of data directly into application memory, rather than needing to copy the data out of kernel memory. While this version only supports host memory as that was the initial target, other memory types are planned as well, with notably GPU memory coming next.

This work depends on some networking components which were queued up on the networking side, but have now landed in your tree.

This is the work of Pavel Begunkov and David Wei. From the v14 posting:

“We configure a page pool that a driver uses to fill a hw rx queue to hand out user pages instead of kernel pages. Any data that ends up hitting this hw rx queue will thus be dma’d into userspace memory directly, without needing to be bounced through kernel memory. ‘Reading’ data out of a socket instead becomes a _notification_ mechanism, where the kernel tells userspace where the data is. The overall approach is similar to the devmem TCP proposal.

This relies on hw header/data split, flow steering and RSS to ensure packet headers remain in kernel memory and only desired flows hit a hw rx queue configured for zero copy. Configuring this is outside of the scope of this patchset.

We share netdev core infra with devmem TCP. The main difference is that io_uring is used for the uAPI and the lifetime of all objects are bound to an io_uring instance. Data is ‘read’ using a new io_uring request type. When done, data is returned via a new shared refill queue. A zero copy page pool refills a hw rx queue from this refill queue directly. Of course, the lifetime of these data buffers are managed by io_uring rather than the networking stack, with different refcounting rules.

This patchset is the first step adding basic zero copy support. We will extend this iteratively with new features e.g. dynamically allocated zero copy areas, THP support, dmabuf support, improved copy fallback, general optimisations and more.”

In a local setup, I was able to saturate a 200G link with a single CPU core, and at netdev conf 0x19 earlier this month, Jamal reported 188Gbit of bandwidth using a single core (no HT, including soft-irq). Safe to say the efficiency is there, as bigger links would be needed to find the per-core limit, and it’s considerably more efficient and faster than the existing devmem solution.”

The pull request along with associated changes have been merged for Linux 6.15!

There is also another pull request that was merged for introducing IO_uring epoll reaping:

“This adds support for reading epoll events via io_uring. While this may seem counter-intuitive (and/or productive), the reasoning here is that quite a few existing epoll event loops can easily do a partial conversion to a completion based model, but are still stuck with one (or few) event types that remain readiness based. For that case, they then need to add the io_uring fd to the epoll context, and continue to rely on epoll_wait(2) for waiting on events. This misses out on the finer grained waiting that io_uring can do, to reduce context switches and wait for multiple events in one batch reliably.

With adding support for reaping epoll events via io_uring, the whole legacy readiness based event types can still be reaped via epoll, with the overall waiting in the loop be driven by io_uring.”

Plus some other IO_uring changes in a third pull request with vectored fixed/registered buffers and other small improvements.

Sign Up For Daily Newsletter

Be keep up! Get the latest breaking news delivered straight to your inbox.
By signing up, you agree to our Terms of Use and acknowledge the data practices in our Privacy Policy. You may unsubscribe at any time.
Share This Article
Facebook Twitter Email Print
Share
What do you think?
Love0
Sad0
Happy0
Sleepy0
Angry0
Dead0
Wink0
Previous Article Sound and Vision: TCL wants a Mini LED TV in every home, and it could succeed for these reasons
Next Article Limited-time deal: This refurbished MacBook Air is under $200 until midnight
Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Stay Connected

248.1k Like
69.1k Follow
134k Pin
54.3k Follow

Latest News

Gmail Unsubscribe Scam: One Click Could Expose Your Entire Inbox
Mobile
Huawei to unveil triple foldable phone on September 10, same day as iPhone 16 launch · TechNode
Computing
Samsung’s first Android XR headset and smart glasses reportedly coming this fall
News
YouTube is plugging Veo 3 AI videos directly into Shorts
News

You Might also Like

Computing

Huawei to unveil triple foldable phone on September 10, same day as iPhone 16 launch · TechNode

1 Min Read
Computing

Workload Management: 7 Strategies for Managing Your Work

17 Min Read
Computing

Researchers Push Vision-Language Models to Grapple with Metaphors, Idioms, and Sarcasm | HackerNoon

37 Min Read
Computing

Zed Editor Introduces Built-In Debugger

2 Min Read
//

World of Software is your one-stop website for the latest tech news and updates, follow us now to get the news that matters to you.

Quick Link

  • Privacy Policy
  • Terms of use
  • Advertise
  • Contact

Topics

  • Computing
  • Software
  • Press Release
  • Trending

Sign Up for Our Newsletter

Subscribe to our newsletter to get our newest articles instantly!

World of SoftwareWorld of Software
Follow US
Copyright © All Rights Reserved. World of Software.
Welcome Back!

Sign in to your account

Lost your password?