epoll和kqueue之间是否存在重大性能差异?

4

我的开发机是MacBook(当然有kqueue)。然而,在生产环境中,我们运行的是Linux(当然使用epoll)。显然,为了了解我的代码的性能特征,我需要使用epoll来运行它。话虽如此,使用kqueue看到的性能是否可以很好地近似于使用epoll看到的性能?或者是否存在性能明显不同的情况?大多数情况下,kqueue和epoll在性能方面非常相似,但我并没有进行非常彻底的测试。

如果有区别的话,我正在使用Python中的Tornado。


我相信你会得到一些答案,但我的建议是自己去找出来!我自己使用的是Macbook,我会在VMWare Fusion中安装Linux作为虚拟机,并在其中实现epoll。为了保持比较公平,我会再做一个FreeBSD的虚拟机,并测试kqueue。 - Zan Lynx
2个回答

5
根据伯克利大学的说法,kqueue在性能上优于epoll,主要原因是epoll不支持单个系统调用中的多个兴趣更新,而kqueue可以使用kevent()实现。这两者之间的差异和性能比较有一篇技术论文进行了详细介绍。
您可以查看该链接获取更多信息:http://www.eecs.berkeley.edu/~sangjin/2012/12/21/epoll-vs-kqueue.html

2
链接已损坏。请尝试(1)http://web.archive.org/web/20190112082733/https://people.eecs.berkeley.edu/%7Esangjin/2012/12/21/epoll-vs-kqueue.html 或 (2) https://juejin.im/entry/6844903735517249544。 - Alexey

4

1
这并没有完全回答我的问题。在进行基准测试的情况下,看起来性能大致相同。但我主要想知道这两者之间是否有任何显著的差异领域。是否存在任何边缘情况,其中一个执行方式与另一个截然不同? - Jason Baker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接