|
|
Log in / Subscribe / Register

Zero-copy network transmission with io_uring

Zero-copy network transmission with io_uring

Posted Dec 31, 2021 0:09 UTC (Fri) by Sesse (subscriber, #53779)
Parent article: Zero-copy network transmission with io_uring

Interestingly, as I understand the patch cover letter (https://lore.kernel.org/lkml/cover.1640029579.git.asml.si...), io_uring + zerocopy is only ~27% faster than io_uring alone. And this is with dummy netdev and UDP packets, so zero NIC and TCP overhead. There will surely be applications interested in this, but most users should be pretty happy with io_uring on its own.


to post comments

Zero-copy network transmission with io_uring

Posted Dec 31, 2021 0:15 UTC (Fri) by andresfreund (subscriber, #69562) [Link] (3 responses)

ISTM that it's hard to estimate the potential benefits by benchmarking with a dummy NIC: Isn't the whole point of zero-copy IO is that the to-be-sent data will be accessed off-cpu via hardware DMA units? But there's no DMA capable hardware involved here...

Zero-copy network transmission with io_uring

Posted Dec 31, 2021 9:02 UTC (Fri) by jorgegv (subscriber, #60484) [Link] (1 responses)

I have always understood zero-copy as not copying the buffers around (i.e. userspace to kernel and back), and instead using always the same copy of the data in memory by playing tricks vía the MMU.

Copying around data in memory can be expensive and thrashes the caches...

Zero-copy network transmission with io_uring

Posted Jan 3, 2022 16:39 UTC (Mon) by schuyler_t (guest, #91921) [Link]

The overall bandwidth matters a lot too. With high bandwidth (handwave at >10 gbps), it's extremely easy to begin running into CPU<->memory bandwidth limitations, especially for non-server class big metal CPUs. With a dummy NIC it's hard to tell, like you said. But once you run into that cliff, ZC is pretty much the only way around it.

Zero-copy network transmission with io_uring

Posted Dec 31, 2021 9:07 UTC (Fri) by Sesse (subscriber, #53779) [Link]

I would assume that the dummy netdev made a copy for the non-zerocopy case, and simply never touched the data for zerocopy (ie., simulating an infinitely efficient DMA engine).


Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds