加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – epoll性能

发布时间:2020-12-14 02:20:30 所属栏目:Linux 来源:网络整理
导读:谁能帮助我回答有关epoll_wait的问题. 使用许多线程在相同的fds集上调用epoll_wait以在大约100K活动套接字上提供服务是否过度?或者它只是足以创建只有1个线程来执行epoll_wait? 例如,只有一个套接字准备好读取数据时,将从epoll_wait唤醒多少个线程?我的意
谁能帮助我回答有关epoll_wait的问题.

>使用许多线程在相同的fds集上调用epoll_wait以在大约100K活动套接字上提供服务是否过度?或者它只是足以创建只有1个线程来执行epoll_wait?
>例如,只有一个套接字准备好读取数据时,将从epoll_wait唤醒多少个线程?我的意思是,有两个或更多线程从epoll_wait唤醒但在结果事件中会有相同的fds的情况吗?
>在服务器中组织与许多活动客户端(例如50K)一起使用的线程的最佳方法是什么.我认为最好的方法是:1个I / O工作线程,它可以执行epoll_wait和i / o操作.许多数据处理线程将处理从I / O工作线程接收的数据(可能需要很长时间,例如任何游戏逻辑)并为I / O工作线程编写新数据以发送给客户端.我是对的,或者任何人都可以帮助我找出组织这种方法的最佳方法吗?

在此先感谢,Valentin

解决方法

>使用epoll时,您希望将线程总数调整为要用于处理的物理CPU核心(或超线程调度单元)的数量.仅使用一个线程进行工作意味着一次最多只有一个核心处于活动状态. >这取决于epoll文件描述符的模式.事件可以是“边缘触发”,意味着它们只是原子地发生一次,或者“水平触发”意味着如果缓冲区中有空间,任何调用者都会获得事件. >没有足够的信息可以说.为简单起见,我建议根本不要使用特殊用途线程,只需在收到它的线程中处理每个事件的“命令”.但显然这取决于您的应用程序的性质.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读