我一直在使用select来处理连接,最近我们的套接字库发生了变化,select被epoll for linux平台所取代。epoll vs选择极少数的连接
我的应用程序体系结构是这样的,我做只有一个或最多2套接字连接和epoll的/在一个单独的线程选择他们。
现已与最近交换机EPOLL我注意到应用的是性能diminshed,我其实感到惊讶和期待性能上还是reamin相同。我试着寻找各种其他部分,这是改变了的唯一代码。
如果用于极少数插座(如1或2),epoll在速度方面会有性能损失。
另外还有一件事要注意,我在同一个盒子上运行了125个这样的进程(8个CPU核心)。 可能是这种情况,太多的进程在同一台机器上做epoll_wait,这个设置与我使用select时类似。
我注意到框,平均负载要高得多,但CPU使用率是这让我觉得更多的时间花费在I/O,并从epoll的相关变化probaly未来不太一样。
任何想法/指示什么我应该看看更多以确定问题。
虽然绝对延迟时间增加是相当小的,如平均1毫秒,但是这是一个实时的系统,而这种等待时间一般都unaccpetable。
感谢
嗨,
更新的最新findinds这个问题,除了从选择到EPOLL切换我发现了另一个相关的变化,早期的超时时间选择在10个米利斯但epoll的超时的方式是这样比以前更小(比如1微米..),可以设置太低的select或epoll超时结果导致性能下降?
感谢
相关问题在http://stackoverflow.com/questions/4093185/whats-the-difference-between-epoll-poll-threadpool –
可能的重复[是否有任何益处使用epoll与少量的文件描述符?](http://stackoverflow.com/questions/8597452/is-there-any-benefit-to-using-epoll-with-a-very-small-number-of-file-descriptors) – gavv