gpt4 book ai didi

linux - epoll性能

转载 作者:IT王子 更新时间:2023-10-29 00:13:04 32 4
gpt4 key购买 nike

谁能帮我解答关于epoll_wait的问题

  1. 在同一个 fds 上使用许多调用 epoll_wait 的线程来服务于大约 100K 个事件套接字是否有点过分了?还是仅创建 1 个线程来执行 epoll_wait 就足够了?

  2. 例如当只有一个套接字准备好读取数据时,有多少线程会从 epoll_wait 唤醒?我的意思是,是否会出现 2 个或更多线程将从 epoll_wait 唤醒但在结果事件中具有相同 fds 的情况?

  3. 在与许多事件客户端(例如 50K+)一起工作的服务器中组织线程的最佳方式是什么。我认为最好的方法是:1 个 I/O 工作线程,它执行 epoll_wait 和 i/o 操作。 + 许多数据处理线程,它将处理从 I/O 工作线程接收到的数据(可能需要很长时间,例如任何游戏逻辑)并为 I/O 工作线程编写新数据以发送到客户。我采用这种方法是否正确,或者任何人都可以帮助我找到组织此方法的最佳方法吗?

提前致谢,瓦伦丁

最佳答案

  1. 使用 epoll 时,您希望将线程总数调整为要用于处理的物理 CPU 核心(或超线程调度单元)的数量。仅使用一个线程进行工作意味着一次最多有一个核心处于事件状态。

  2. 取决于epoll文件描述符的模式。事件可以是“边缘触发”,这意味着它们只自动发生一次,也可以是“水平触发”,这意味着如果缓冲区中有空间,任何调用者都会收到一个事件。

  3. 没有足够的信息可以说。为了简单起见,我建议根本不要有特殊用途的线程,而只是在接收事件的线程中处理每个事件的“命令”。但显然这取决于您的应用程序的性质。

关于linux - epoll性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2087688/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com