Why no io_uring support?

Hi Percona team,

I’ve noticed that Percona Server for MySQL (even in the recent 8.4 builds) does not seem to offer support for Linux’s io_uring interface for asynchronous I/O – neither in documentation nor via a configuration option like innodb_use_io_uring.

Given that io_uring is now considered mature and MariaDB >= 10.6 has support for it, I was wondering:

  • Is there any plan or roadmap to integrate io_uring support into Percona Server for MySQL?
  • Is it intentionally omitted due to stability concerns or because libaio is still preferred?
  • Are there any known builds (experimental or community forks) that do include this feature?

I’m running high-throughput workloads (~100k QPS, heavy writes) on SSD/NVMe and am exploring every I/O gain possible. Would love to hear your thoughts on this!

Hi @Bur,
Have a grep through the source code of mysql, https://github.com/mysql/mysql-server/, and you’ll see libaio heavily integrated. :slight_smile:

It isn’t a trivial task as to rewrite some of the lowest-level IO code in InnoDB. I did a quick search for ‘io_uring’ on MariaDB’s bugs reports, and there’s quite a few. You would also need to be running Linux Kernel 5.1+ to take any advantage, and you might be surprised how old some of our “enterprise” customers run OSes.

Such a task would need to come from upstream. I would check bugs.mysql.com and see if there’s any reports, or feature plans.

Percona added ZenFS support a while ago to improve performance on SSDs supporting this standard. You might want to check that out.