Hacker ApprovedDepartments

io_uring

Hacker Approved

Kernel 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%
Each figure is one person. RecommendsCriticizes

Recommended in 13 of 13 months

  1. November 2025: recommended
  2. December 2025: recommended
  3. January 2026: recommended
  4. February 2026: recommended
  5. March 2026: recommended
  6. April 2026: recommended
  7. May 2026: recommended
  8. June 2026: recommended
  9. July 2026: recommended
  10. August 2026: recommended
  11. September 2026: recommended
  12. October 2026: recommended
  13. 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”
  • 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”
  • 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”
  • 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”
  • 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.”

RecommendsComment from 1 Nov 2026 in “Redox: Ring Buffers Project Summary”

“io_uring is incredibly fast for async I/O but is also a massive security disaster in the Linux kernel.”

MixedComment from 31 Oct 2026 in “Redox: Ring Buffers Project Summary”

“I am typically getting double the perf just switching to uring.”

RecommendsComment from 5 Oct 2026 in “The Forgetful CPU (Linux on M4)”

“The benefits of io_uring are limited without a commitment to designing your own schedulers.”

MixedComment from 11 Sep 2026 in “We Replaced MMAP with Io_uring in Our Rust Query Engine. It Got Slower”

“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.”

RecommendsComment 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.”

RecommendsComment from 2 Sep 2026 in “Io_uring Without Readahead”

“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.”

MixedComment from 1 Sep 2026 in “Io_uring Without Readahead”

“Do this with io_uring with the preadv syscall. It'll be the same or faster”

RecommendsComment from 1 Sep 2026 in “Io_uring Without Readahead”

“using mmap and just telling uring to read form there to beat anything else”

RecommendsComment from 1 Sep 2026 in “Io_uring Without Readahead”

“io_uring has been one of the greatest sources of exploits for the Linux kernel in years.”

CriticizesComment from 22 Aug 2026 in “Zig's Io.Threaded Is Neat”

“use io_uring as reference and cancellation in io_uring is fairly simple”

RecommendsComment from 22 Aug 2026 in “Zig's Io.Threaded Is Neat”

“Async I/O (and later just everything async) converged on io_uring.”

RecommendsComment from 21 Aug 2026 in “Linux 7.2 Released”

“A lot of the socket featureset of io_uring seems available in AF_XDP”

MixedComment from 9 Aug 2026 in “Wireblast a 100 Gbps packet generator in Go using AF_XDP”

“genuinely a step up from the overlapped I/O APIs of Windows, as it avoids eating syscall transition overhead in many cases”

RecommendsComment from 31 Jul 2026 in “Hooray for the Sockets Interface”

“"io_uring" (2019) have advanced the state of the art clearly beyond what already existed”

RecommendsComment from 29 Jul 2026 in “Hooray for the Sockets Interface”

“at least now we have some decent answers (like io_uring on Linux.)”

RecommendsComment from 29 Jul 2026 in “Hooray for the Sockets Interface”

“Linux support generic non-conventional kernel bypass for memory, storage and compute with io_uring, eBPF”

MixedComment from 3 Jul 2026 in “Postgres transactions are a distributed systems superpower”

“Newer system calls like io_uring are doing it right.”

RecommendsComment from 22 Jun 2026 in “System call instrumentation on Linux/x86‑64 using memory‑indirect calls, part I”

“there are robust low-syscall paths for io/latency sensitive operations with DPDK, io_uring, and futex”

RecommendsComment from 21 Jun 2026 in “System call instrumentation on Linux/x86‑64 using memory‑indirect calls, part I”

“it's nice for things like SPI which have no user space non-blocking API”

RecommendsComment from 21 Jun 2026 in “Epoll vs. Io_uring in Linux”

“The catch is that its kernel opt-in and disabled just about everywhere for security reasons.”

MixedComment from 20 Jun 2026 in “Epoll vs. Io_uring in Linux”

“At the level you'd be exposing io_uring (internals) via external http requests; it's security is perfectly fine.”

RecommendsComment from 15 Jun 2026 in “Caddy compatibility for zeroserve: 3x throughput and 70% lower latency”

“if syscalls are expensive, queue them up in a buffer with one syscall to transfer the thread to the os”

RecommendsComment from 7 Jun 2026 in “Moving beyond fork() + exec()”

“io-uring is in a different league imo. I'd say that it's second only to user namespaces in terms of attack surface.”

CriticizesComment from 9 May 2026 in “You gave me a u32. I gave you root. (io_uring ZCRX freelist LPE)”

“io-uring is a security nightmare. Constant privescs and a powerful primitive for syscall smuggling.”

CriticizesComment from 8 May 2026 in “You gave me a u32. I gave you root. (io_uring ZCRX freelist LPE)”

“using APIs io_uring and grand central dispatch is basically the whole point of all this async stuff”

RecommendsComment from 6 May 2026 in “Async Rust never left the MVP state”

“io_uring is still significantly better than doing threadpool nvme io”

RecommendsComment from 26 Apr 2026 in “What Async Promised and What It Delivered”

“hackers having fun with io_uring coming up with all sorts of patterns”

RecommendsComment from 25 Apr 2026 in “What Async Promised and What It Delivered”

“io_uring largely eliminates this issue by decoupling submission from syscalls”

RecommendsComment from 26 Mar 2026 in “io_uring, libaio performance across Linux kernels and an unexpected IOMMU trap”

“the list of vulnerabilities in io_uring over the past 12 months is pretty staggering to me”

CriticizesComment from 5 Mar 2026 in “Fast-Servers”

“it continues to be such a consistent source of bugs - many with serious security implications”

CriticizesComment from 5 Mar 2026 in “Fast-Servers”

“goes into using eBPF and IO_URING to collect system stats instead of all the huge overhead of userspace calls”

RecommendsComment from 12 Feb 2026 in “System calls are slow. Run your code in the kernel”

“io_uring supports submitting openat requests, which sounds like what you want.”

RecommendsComment from 25 Jan 2026 in “I built a 2x faster lexer, then discovered I/O was the real bottleneck”

“I admire io_uring. I appreciate the fact that it exists and continues despite the security problems”

RecommendsComment from 7 Jan 2026 in “High-Performance DBMSs with io_uring: When and How to use it”

“io_uring syscalls are blocked by default in Docker, because io_uring is a large surface area for attacks”

MixedComment from 6 Jan 2026 in “High-Performance DBMSs with io_uring: When and How to use it”

“Shows that io_uring really brings extra performance when properly used”

RecommendsComment 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”

CriticizesComment from 6 Jan 2026 in “High-Performance DBMSs with io_uring: When and How to use it”

“This explained to me very simply what the benefits are in a way no article I've read before has.”

RecommendsComment from 6 Jan 2026 in “High-Performance DBMSs with io_uring: When and How to use it”

“Io-uring has it's fair amount of CVEs ; I'm wondering if people are checking these out”

CriticizesComment from 13 Dec 2025 in “We built another object storage”

“We found the async I/O overhead to be negligible compared to the memory gains”

RecommendsComment from 9 Dec 2025 in “The Fluid Substrate: Streaming 1TB Models from NVMe via Io_uring”

Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.