epoll为什么比select和poll效率更高
2017-04-26 09:29
351 查看
基于 select 和 poll 方法的程序中,因为大量操作的消耗与当前连接数 n 成线性相关,从而导致单个任务的资源消耗和当前任务的关系是 O(n)。所以随着连接数目增大,积累起来的资源消耗很大,结果就是系统吞吐量和机器性能不匹配。为了解决该问题,进而发展出了 epoll、kqueue 和 /dev/poll 这三套利器。epoll 已经成为处理并发、高性能的代表。它们的工作原理:
一是避免了每次调用 select 或 poll 时内核用于分析参数建立事件等待结构的开销,取而代之的是维护一个长期的事件关注表,应用程序通过句柄修改这个列表和捕获 I/O 事件;
二是避免了 select 或 poll 返回后,应用程序扫描整个句柄表的开销,取而代之的是直接返回具体的事件列表;
通过以上方法,彻底摆脱了具体操作的消耗与当前连接数 n 的线性关系,极大地提高了服务器处理能力。
关于 epoll 和其他方法的使用参见我的其他博客,有问题和疑问可以给我邮件或者评论哦~:-D
一是避免了每次调用 select 或 poll 时内核用于分析参数建立事件等待结构的开销,取而代之的是维护一个长期的事件关注表,应用程序通过句柄修改这个列表和捕获 I/O 事件;
二是避免了 select 或 poll 返回后,应用程序扫描整个句柄表的开销,取而代之的是直接返回具体的事件列表;
通过以上方法,彻底摆脱了具体操作的消耗与当前连接数 n 的线性关系,极大地提高了服务器处理能力。
关于 epoll 和其他方法的使用参见我的其他博客,有问题和疑问可以给我邮件或者评论哦~:-D
相关文章推荐
- select(poll)效率,与异步网络IO,AIO, libevent, epoll
- 为什么epoll比select和poll更高效
- 谈谈误解------为什么select支持的fd数量有限制,而poll/epoll等支持的fd数量没有限制?
- select,poll,epoll用法
- IO模型的简单记录select、poll、epoll
- Linux epoll服务器、epoll、poll、select优缺点
- Linux中select、poll和epoll的区别
- linux网络编程之socket(十三):epoll 系列函数简介、与select、poll 的区别
- select、poll、epoll之间的区别总结[整理]
- 【网络】select/poll/epoll事件处理图示
- select, poll和epoll的区别
- select、poll、epoll详解
- I/O多路复用比较(select,poll,epoll)
- socket阻塞与非阻塞,同步与异步、I/O模型,select与poll、epoll比较
- select、poll、epoll之间的区别总结
- select、poll、epoll之间的区别总结[整理]
- IO模型及select、poll、epoll和kqueue的区别
- select、poll、epoll之间的区别总结[整理]
- 三种多路复用IO实现方式:select,poll,epoll的区别
- select、poll、epoll的比较