0

我最近使用 epoll 编写了一个简单的 TCP 服务器,但我想探索高性能多路复用的其他机制,为此我遇到了 io_uring,并计划使用它制作另一个简单的 TCP 服务器。

但是我读到这里https://kernel.dk/io_uring.pdf中 io_uring 的条目数限制为 4096 ,这似乎意味着理论上我将无法拥有超过该数量的持久连接。

据我了解,通常我会使用诸如epoll_wait()等待 epoll 事件之类的东西,而是在 io_uring 中提交特定请求,并在请求完成/失败时收到通知,这是否意味着我最多可以提交 4096 读取( ) 请求例如?

我误解了 io_uring 的用例还是误解了如何使用它?

4

1 回答 1

2

在我链接的同一份文件中,它说:

通常一个应用程序会要求一个给定大小的环,并且假设这个大小直接对应于应用程序可以在内核中挂起的请求的数量。但是,由于 sqe 的生命周期只是实际提交的生命周期,因此应用程序可能会驱动比 SQ 环大小指示的更高的挂起请求计数。

这正是您在大量套接字上侦听消息的情况下所做的 - 只是您一次可以发送多少个提交的上限是 4096。

于 2020-11-22T18:38:07.910 回答