如何判断Linux机器是否支持io_uring?

Tim*_*see 6 linux

我想检查Linux机器是否支持io_uring。如何才能做到这一点?

是否有一些内核文件描述了对此的支持,或者所有 Linux 5.1+ 内核都支持吗?

Ste*_*itt 11

io_uring不\xe2\x80\x99t 公开任何用户可见的功能,例如作为sysctl; 它只公开新的系统调用。它从内核 5.1 起就可用,但可以编译出对它的支持,并且它可能会向后移植到某些系统中的旧内核。

\n

因此,检查支持的最安全方法是检查系统调用是否io_uring可用。如果你有/proc/kallsyms,你可以在那里查看:

\n
grep io_uring_setup /proc/kallsyms\n
Run Code Online (Sandbox Code Playgroud)\n

检查系统调用的另一种方法是尝试安全但格式错误的调用,并检查生成的错误是否为ENOSYS,例如:

\n
grep io_uring_setup /proc/kallsyms\n
Run Code Online (Sandbox Code Playgroud)\n

在支持 的内核上io_uring,可用的操作会随着新内核版本引入新功能而变化;要确定支持的操作,请使用io_uring_get_probe.

\n


Kra*_*out 6

它在 Linux 5.1 及更高版本中可用,并且可以在编译过程中启用。在 Debian 及其衍生版本中,您可以在 file 中找到编译期间使用的内核选项/boot/config-{kernel version}-{arch}。在 UEFI 机器中,此路径可能有所不同。

所以输入,
grep -i uring /boot/config-$(uname -r)

输出应包括CONFIG_IO_URING、y 或 n、启用或禁用。