>使用许多线程在相同的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文件描述符的模式.事件可以是“边缘触发”,意味着它们只是原子地发生一次,或者“水平触发”意味着如果缓冲区中有空间,任何调用者都会获得事件. >没有足够的信息可以说.为简单起见,我建议根本不要使用特殊用途线程,只需在收到它的线程中处理每个事件的“命令”.但显然这取决于您的应用程序的性质. 总结以上是内存溢出为你收集整理的linux – epoll性能全部内容,希望文章能够帮你解决linux – epoll性能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)