io_uring
Hacker ApprovedKernel interface in Developer tools
Linux kernel interface for async I/O that cuts syscall overhead and can be significantly faster on suitable workloads. Critics cite its large kernel attack surface and recurring security bugs.
Linux kernel interface for async I/O that cuts syscall overhead and can be significantly faster on suitable workloads. Critics cite its large kernel attack surface and recurring security bugs.
66 people gave an opinion
- recommend it
- 45
- criticize it
- 21
- approval share
- 68%
Recommended in 13 of 13 months
- November 2025: recommended
- December 2025: recommended
- January 2026: recommended
- February 2026: recommended
- March 2026: recommended
- April 2026: recommended
- May 2026: recommended
- June 2026: recommended
- July 2026: recommended
- August 2026: recommended
- September 2026: recommended
- October 2026: recommended
- November 2026: recommended (month in progress)
Why it carries the badge
- 45 people recommend itNeeds 10 or more, met.
- 2.1 recommenders for every criticNeeds 2 to 1 or better, met.
- Recommended in 13 of 13 monthsNeeds 4 or more, met.
The same three rules apply to every product, and the badge can’t be bought. How the badge works
What people say about it
The reasons people give, with the number of comments that give each one. Open a reason to read what they said.
Why people recommend it
Each mark is one comment
Much faster for async I/O
“io_uring is significantly faster for certain workloads, but you can't expect that merely running a syscall via io_uring will somehow magically make it faster.”
Comment from 1 Sep 2026 in “Io_uring Without Readahead” “io_uring is incredibly fast for async I/O but is also a massive security disaster in the Linux kernel.”
Comment from 31 Oct 2026 in “Redox: Ring Buffers Project Summary” “Shows that io_uring really brings extra performance when properly used”
Comment from 6 Jan 2026 in “High-Performance DBMSs with io_uring: When and How to use it” - Comment from 5 Oct 2026 in “The Forgetful CPU (Linux on M4)”
Modern standard for async I/O on Linux
“"io_uring" (2019) have advanced the state of the art clearly beyond what already existed”
Comment from 29 Jul 2026 in “Hooray for the Sockets Interface” “at least now we have some decent answers (like io_uring on Linux.)”
Comment from 29 Jul 2026 in “Hooray for the Sockets Interface” “Async I/O (and later just everything async) converged on io_uring.”
Comment from 21 Aug 2026 in “Linux 7.2 Released” - Comment from 22 Jun 2026 in “System call instrumentation on Linux/x86‑64 using memory‑indirect calls, part I”
Batches requests to cut syscall overhead
“genuinely a step up from the overlapped I/O APIs of Windows, as it avoids eating syscall transition overhead in many cases”
Comment from 31 Jul 2026 in “Hooray for the Sockets Interface” “if syscalls are expensive, queue them up in a buffer with one syscall to transfer the thread to the os”
Comment from 7 Jun 2026 in “Moving beyond fork() + exec()” “io_uring largely eliminates this issue by decoupling submission from syscalls”
Comment from 26 Mar 2026 in “io_uring, libaio performance across Linux kernels and an unexpected IOMMU trap” One thread serves many requests
“This is where io_uring is really important because it lets one thread schedule I/O to satisfy one request and resume processing a different request.”
Comment from 2 Sep 2026 in “Io_uring Without Readahead” “io_uring lets that same thread continue to handle other requests which themselves might generate more I/O that gets amortized.”
Comment from 2 Sep 2026 in “Io_uring Without Readahead”
What people warn about
Each mark is one comment
Large kernel attack surface
“io-uring is in a different league imo. I'd say that it's second only to user namespaces in terms of attack surface.”
Comment from 9 May 2026 in “You gave me a u32. I gave you root. (io_uring ZCRX freelist LPE)” “io_uring syscalls are blocked by default in Docker, because io_uring is a large surface area for attacks”
Comment from 6 Jan 2026 in “High-Performance DBMSs with io_uring: When and How to use it” “io_uring is a large surface area for attacks, and this has proven to be a real problem in practice”
Comment from 6 Jan 2026 in “High-Performance DBMSs with io_uring: When and How to use it” - Comment from 8 May 2026 in “You gave me a u32. I gave you root. (io_uring ZCRX freelist LPE)”
Recurring security bugs and CVEs
“it continues to be such a consistent source of bugs - many with serious security implications”
Comment from 5 Mar 2026 in “Fast-Servers” “the list of vulnerabilities in io_uring over the past 12 months is pretty staggering to me”
Comment from 5 Mar 2026 in “Fast-Servers” “io_uring has been one of the greatest sources of exploits for the Linux kernel in years.”
Comment from 22 Aug 2026 in “Zig's Io.Threaded Is Neat” - Comment from 13 Dec 2025 in “We built another object storage”
Gains depend on careful design
“The benefits of io_uring are limited without a commitment to designing your own schedulers.”
Comment from 11 Sep 2026 in “We Replaced MMAP with Io_uring in Our Rust Query Engine. It Got Slower” “io_uring is significantly faster for certain workloads, but you can't expect that merely running a syscall via io_uring will somehow magically make it faster.”
Comment from 1 Sep 2026 in “Io_uring Without Readahead” Often disabled or blocked by default
“The catch is that its kernel opt-in and disabled just about everywhere for security reasons.”
Comment from 20 Jun 2026 in “Epoll vs. Io_uring in Linux” “io_uring syscalls are blocked by default in Docker, because io_uring is a large surface area for attacks”
Comment from 6 Jan 2026 in “High-Performance DBMSs with io_uring: When and How to use it”
What people said
40 of the 78 comments that mention it, newest first. Each links to the original comment.
“The wins on the book for io-uring are incredible. Massive. It looks like a miracle.”
“io_uring is incredibly fast for async I/O but is also a massive security disaster in the Linux kernel.”
“I am typically getting double the perf just switching to uring.”
“The benefits of io_uring are limited without a commitment to designing your own schedulers.”
“This is where io_uring is really important because it lets one thread schedule I/O to satisfy one request and resume processing a different request.”
“io_uring lets that same thread continue to handle other requests which themselves might generate more I/O that gets amortized.”
“io_uring is significantly faster for certain workloads, but you can't expect that merely running a syscall via io_uring will somehow magically make it faster.”
“Do this with io_uring with the preadv syscall. It'll be the same or faster”
“using mmap and just telling uring to read form there to beat anything else”
“io_uring has been one of the greatest sources of exploits for the Linux kernel in years.”
“use io_uring as reference and cancellation in io_uring is fairly simple”
“Async I/O (and later just everything async) converged on io_uring.”
“A lot of the socket featureset of io_uring seems available in AF_XDP”
“genuinely a step up from the overlapped I/O APIs of Windows, as it avoids eating syscall transition overhead in many cases”
“"io_uring" (2019) have advanced the state of the art clearly beyond what already existed”
“at least now we have some decent answers (like io_uring on Linux.)”
“Linux support generic non-conventional kernel bypass for memory, storage and compute with io_uring, eBPF”
“Newer system calls like io_uring are doing it right.”
“there are robust low-syscall paths for io/latency sensitive operations with DPDK, io_uring, and futex”
“it's nice for things like SPI which have no user space non-blocking API”
“The catch is that its kernel opt-in and disabled just about everywhere for security reasons.”
“At the level you'd be exposing io_uring (internals) via external http requests; it's security is perfectly fine.”
“if syscalls are expensive, queue them up in a buffer with one syscall to transfer the thread to the os”
“io-uring is in a different league imo. I'd say that it's second only to user namespaces in terms of attack surface.”
“io-uring is a security nightmare. Constant privescs and a powerful primitive for syscall smuggling.”
“using APIs io_uring and grand central dispatch is basically the whole point of all this async stuff”
“io_uring is still significantly better than doing threadpool nvme io”
“hackers having fun with io_uring coming up with all sorts of patterns”
“io_uring largely eliminates this issue by decoupling submission from syscalls”
“the list of vulnerabilities in io_uring over the past 12 months is pretty staggering to me”
“it continues to be such a consistent source of bugs - many with serious security implications”
“goes into using eBPF and IO_URING to collect system stats instead of all the huge overhead of userspace calls”
“io_uring supports submitting openat requests, which sounds like what you want.”
“I admire io_uring. I appreciate the fact that it exists and continues despite the security problems”
“io_uring syscalls are blocked by default in Docker, because io_uring is a large surface area for attacks”
“Shows that io_uring really brings extra performance when properly used”
“io_uring is a large surface area for attacks, and this has proven to be a real problem in practice”
“This explained to me very simply what the benefits are in a way no article I've read before has.”
“Io-uring has it's fair amount of CVEs ; I'm wondering if people are checking these out”
“We found the async I/O overhead to be negligible compared to the memory gains”
Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.