我想检查Linux机器是否支持io_uring。如何才能做到这一点?
是否有一些内核文件描述了对此的支持,或者所有 Linux 5.1+ 内核都支持吗?
Ste*_*itt 11
io_uring
不\xe2\x80\x99t 公开任何用户可见的功能,例如作为sysctl
; 它只公开新的系统调用。它从内核 5.1 起就可用,但可以编译出对它的支持,并且它可能会向后移植到某些系统中的旧内核。
因此,检查支持的最安全方法是检查系统调用是否io_uring
可用。如果你有/proc/kallsyms
,你可以在那里查看:
grep io_uring_setup /proc/kallsyms\n
Run Code Online (Sandbox Code Playgroud)\n检查系统调用的另一种方法是尝试安全但格式错误的调用,并检查生成的错误是否为ENOSYS
,例如:
grep io_uring_setup /proc/kallsyms\n
Run Code Online (Sandbox Code Playgroud)\n在支持 的内核上io_uring
,可用的操作会随着新内核版本引入新功能而变化;要确定支持的操作,请使用io_uring_get_probe
.
它在 Linux 5.1 及更高版本中可用,并且可以在编译过程中启用。在 Debian 及其衍生版本中,您可以在 file 中找到编译期间使用的内核选项/boot/config-{kernel version}-{arch}
。在 UEFI 机器中,此路径可能有所不同。
所以输入,
grep -i uring /boot/config-$(uname -r)
输出应包括CONFIG_IO_URING
、y 或 n、启用或禁用。