Announcement

Collapse
No announcement yet.

IO_uring Bringing Better Send Zero-Copy Performance With Linux 6.10

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Originally posted by bezirg View Post
    I am hearing all these benefits and perf improvements of io_uring but is there some real-world usecase of it atm? Genuine question
    • Samba has support for io-uring. Just add it at the end of `vfs objects` option in each share like this: `vfs objects = btrfs, shadow_copy2, io_uring`
    • QEMU/Libvirt can also improve disk I/O with io_uring? Add `io='io_uring'` to the driver definition.
    • MariaDB uses io_uring.

    Comment


    • #12
      Originally posted by S.Pam View Post
      • Samba has support for io-uring. Just add it at the end of `vfs objects` option in each share like this: `vfs objects = btrfs, shadow_copy2, io_uring`
      • QEMU/Libvirt can also improve disk I/O with io_uring? Add `io='io_uring'` to the driver definition.
      • MariaDB uses io_uring.
      MariaDB is supposed to have io_uring support since v10.6 (which is the version in say Ubuntu 22.04LTS) but I must say that I have not found that version of MariaDB to have any major performance difference when it comes to disk IO over 10.3 that was in Ubuntu 20.04LTS. Don't if this is due to kernel 5.15 not being new enough or if one needs speedy nvme drives to notice the difference.

      Comment


      • #13
        Originally posted by ptrwis View Post
        Streaming is more like sending huge chunks of data, I wouldn't say it's syscalls-heavy. Multiplayer game servers are more like.
        It depends... You might be using something like https://github.com/bluenviron/mediamtx or https://github.com/arut/nginx-rtmp-module to relay multiple streams and those would benefit from this change (if they were using io_uring).

        Still, I agree, multiplayer game servers are definitely going to feel this better. Also, I tried to hint at (but wrote poorly), any large-scale HTTP based servers would also benefit, such as HTTP proxies or even large-scale apps. I guess the theme here is that it will make the most difference at scale, with multiple concurrent requests in parallel.

        Comment


        • #14
          Originally posted by bezirg View Post
          I am hearing all these benefits and perf improvements of io_uring but is there some real-world usecase of it atm? Genuine question
          AFAIK I thought io_uring has security issues, anyone correct me if I'm wrong, but Netty (which is a very popular networking library for the JVM) has experimental support right now.

          Comment


          • #15
            io_uring - is a niche, I have played with it when reimplementing Memcached in Go and trying to archive more performance.
            It decreases CPU overhead, that's all. So, if your application is not bounded by CPU/syscall performance there is no profit.
            As a consequence, only several sorts of applications like memory databases, Ceph on top of nvme, and HTTP proxies will benefit it, if properly implemented.

            Comment

            Working...
            X