1.linux的epoll
epoll 是Linux内核中的一种可扩展IO事件处理机制,最早在 Linux 2.5.44内核中引入,可被用于代替POSIX select 和 poll 系统调用,并且在具有大量应用程序请求时能够获得较好的性能( 此时被监视的文件描述符数目非常大,与旧的 select 和 poll 系统调用完成操作所需 O(n) 不同, epoll能在O(1)时间内完成操作,所以性能相当高),epoll 与 FreeBSD的kqueue类似,都向用户空间提供了自己的文件描述符来进行操作。
一、高效的epoll
epoll 是Linux下,高效的多路复用技术,也是Linux下高性能网络服务器的关键技术。 通过网络socket链接,把远程资源加载到本地内存中。如何来优化这个性能呢?
二、epoll提出原因
2.1.poll和select 相对之前的AIO有很大的提高,但是由于需要监视着“等待队列”与及“阻塞进程”,性能还是未完全释放。 这个时候CPU又被别的进程给抢走,上下文切换的性能又被消耗。
2.2.select 要进行遍历,才能感知到那个socket来了数据,因此select只能一个一个遍历,来唤醒每个socketChanel。
三、epoll原理
3.1 epoll监视多个socket, 改进了select维护等待队列和阻塞进程进一步改进。把这两步动作给拆分开来。
3.2 epoll_ctl 维护等待队列
3.3 epoll_wait 阻塞队列
四、eventpoll
4.1 调用epoll_create方法,另